ASoC: ep93xx-i2s: use devm_* helpers to cleanup probe
PATCH 1/1 ASoC: ep93xx-i2s: use devm_* helpers to cleanup probe
Use the devm_* helpers to cleanup the probe routine. This also eliminates having to carry the mem value in the private data for the remove.
Signed-off-by H Hartley Sweeten <[email protected]>
Cc Mika Westerberg <[email protected]>
Cc Liam Girdwood <[email protected]>
Cc Mark Brown <[email protected]>
Cc Jaroslav Kysela <[email protected]>
CC Takashi Iwai <[email protected]>
Cc Vinod Koul <[email protected]>
---
sound/soc/ep93xx/ep93xx-i2s.c +14 -35
@@ -63,7 +63,6 @@ struct ep93xx_i2s_info {struct clk *sclk;struct clk *lrclk;struct ep93xx_pcm_dma_params *dma_params; -struct resource *mem;void __iomem *regs; };
@@ -373,38 +372,22 @@ static int ep93xx_i2s_probe(struct platform_device *pdev)struct resource *res;int err; - info =kzalloc (sizeof (struct ep93xx_i2s_info ),GFP_KERNEL ); -if (!info) { - err = -ENOMEM ; - goto fail; - } - -dev_set_drvdata (&pdev->dev, info); - info->dma_params = ep93xx_i2s_dma_params; + info =devm_kzalloc (&pdev->dev,sizeof (*info),GFP_KERNEL ); +if (!info) +return -ENOMEM ; res =platform_get_resource (pdev,IORESOURCE_MEM ,0 ); -if (!res) { - err = -ENODEV ; - goto fail_free_info; - } +if (!res) +return -ENODEV ; - info->mem =request_mem_region (res->start,resource_size (res), - pdev->name); -if (!info->mem) { - err = -EBUSY ; - goto fail_free_info; - } - - info->regs =ioremap (info->mem->start,resource_size (info->mem)); -if (!info->regs) { - err = -ENXIO ; - goto fail_release_mem; - } + info->regs =devm_request_and_ioremap (&pdev->dev, res); +if (!info->regs) +return -ENXIO ; info->mclk =clk_get (&pdev->dev,"mclk" );if (IS_ERR (info->mclk)) { err =PTR_ERR (info->mclk); - goto fail_unmap_mem; + goto fail; } info->sclk =clk_get (&pdev->dev,"sclk" );
@@ -419,6 +402,9 @@ static int ep93xx_i2s_probe(struct platform_device *pdev) goto fail_put_sclk; } +dev_set_drvdata (&pdev->dev, info); + info->dma_params = ep93xx_i2s_dma_params; + err =snd_soc_register_dai (&pdev->dev, &ep93xx_i2s_dai);if (err) goto fail_put_lrclk;
@@ -426,17 +412,12 @@ static int ep93xx_i2s_probe(struct platform_device *pdev)return 0 ; fail_put_lrclk: +dev_set_drvdata (&pdev->dev,NULL );clk_put (info->lrclk); fail_put_sclk:clk_put (info->sclk); fail_put_mclk:clk_put (info->mclk); -fail_unmap_mem: -iounmap (info->regs); -fail_release_mem: -release_mem_region (info->mem->start,resource_size (info->mem)); -fail_free_info: -kfree (info); fail:return err; }
@@ -446,12 +427,10 @@ static int __devexit ep93xx_i2s_remove(struct platform_device *pdev)struct ep93xx_i2s_info *info =dev_get_drvdata (&pdev->dev);snd_soc_unregister_dai (&pdev->dev); +dev_set_drvdata (&pdev->dev,NULL );clk_put (info->lrclk);clk_put (info->sclk);clk_put (info->mclk); -iounmap (info->regs); -release_mem_region (info->mem->start,resource_size (info->mem)); -kfree (info);return 0 ; }
Quoted 5 lines · H Hartley Sweeten
Use the devm_* helpers to cleanup the probe routine. This also eliminates having to carry the mem value in the private data for the remove.
Signed-off-by H Hartley Sweeten <[email protected]>Cc Mika Westerberg <[email protected]>
Acked-by Mika Westerberg <[email protected]>
Quoted 5 lines
Cc Liam Girdwood <[email protected]>Cc Mark Brown <[email protected]>Cc Jaroslav Kysela <[email protected]>CC Takashi Iwai <[email protected]>Cc Vinod Koul <[email protected]>
Mark Brown
AppliedQuoted 10 lines · H Hartley Sweeten
Use the devm_* helpers to cleanup the probe routine. This also eliminates having to carry the mem value in the private data for the remove.
Signed-off-by H Hartley Sweeten <[email protected]>Cc Mika Westerberg <[email protected]>Cc Liam Girdwood <[email protected]>Cc Mark Brown <[email protected]>Cc Jaroslav Kysela <[email protected]>CC Takashi Iwai <[email protected]>Cc Vinod Koul <[email protected]>
Applied, but again please take care of the above.