Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 01651bab authored by H Hartley Sweeten's avatar H Hartley Sweeten Committed by Mark Brown
Browse files

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: default avatarH Hartley Sweeten <hsweeten@visionengravers.com>
Tested-by: default avatarMika Westerberg <mika.westerberg@iki.fi>
Acked-by: default avatarMika Westerberg <mika.westerberg@iki.fi>
Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
parent e7cff0ab
Loading
Loading
Loading
Loading
+14 −35
Original line number Original line Diff line number Diff line
@@ -63,7 +63,6 @@ struct ep93xx_i2s_info {
	struct clk			*sclk;
	struct clk			*sclk;
	struct clk			*lrclk;
	struct clk			*lrclk;
	struct ep93xx_pcm_dma_params	*dma_params;
	struct ep93xx_pcm_dma_params	*dma_params;
	struct resource			*mem;
	void __iomem			*regs;
	void __iomem			*regs;
};
};


@@ -373,38 +372,22 @@ static int ep93xx_i2s_probe(struct platform_device *pdev)
	struct resource *res;
	struct resource *res;
	int err;
	int err;


	info = kzalloc(sizeof(struct ep93xx_i2s_info), GFP_KERNEL);
	info = devm_kzalloc(&pdev->dev, sizeof(*info), GFP_KERNEL);
	if (!info) {
	if (!info)
		err = -ENOMEM;
		return -ENOMEM;
		goto fail;
	}

	dev_set_drvdata(&pdev->dev, info);
	info->dma_params = ep93xx_i2s_dma_params;


	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
	if (!res) {
	if (!res)
		err = -ENODEV;
		return -ENODEV;
		goto fail_free_info;
	}


	info->mem = request_mem_region(res->start, resource_size(res),
	info->regs = devm_request_and_ioremap(&pdev->dev, res);
				       pdev->name);
	if (!info->regs)
	if (!info->mem) {
		return -ENXIO;
		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->mclk = clk_get(&pdev->dev, "mclk");
	info->mclk = clk_get(&pdev->dev, "mclk");
	if (IS_ERR(info->mclk)) {
	if (IS_ERR(info->mclk)) {
		err = PTR_ERR(info->mclk);
		err = PTR_ERR(info->mclk);
		goto fail_unmap_mem;
		goto fail;
	}
	}


	info->sclk = clk_get(&pdev->dev, "sclk");
	info->sclk = clk_get(&pdev->dev, "sclk");
@@ -419,6 +402,9 @@ static int ep93xx_i2s_probe(struct platform_device *pdev)
		goto fail_put_sclk;
		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);
	err = snd_soc_register_dai(&pdev->dev, &ep93xx_i2s_dai);
	if (err)
	if (err)
		goto fail_put_lrclk;
		goto fail_put_lrclk;
@@ -426,17 +412,12 @@ static int ep93xx_i2s_probe(struct platform_device *pdev)
	return 0;
	return 0;


fail_put_lrclk:
fail_put_lrclk:
	dev_set_drvdata(&pdev->dev, NULL);
	clk_put(info->lrclk);
	clk_put(info->lrclk);
fail_put_sclk:
fail_put_sclk:
	clk_put(info->sclk);
	clk_put(info->sclk);
fail_put_mclk:
fail_put_mclk:
	clk_put(info->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:
fail:
	return err;
	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);
	struct ep93xx_i2s_info *info = dev_get_drvdata(&pdev->dev);


	snd_soc_unregister_dai(&pdev->dev);
	snd_soc_unregister_dai(&pdev->dev);
	dev_set_drvdata(&pdev->dev, NULL);
	clk_put(info->lrclk);
	clk_put(info->lrclk);
	clk_put(info->sclk);
	clk_put(info->sclk);
	clk_put(info->mclk);
	clk_put(info->mclk);
	iounmap(info->regs);
	release_mem_region(info->mem->start, resource_size(info->mem));
	kfree(info);
	return 0;
	return 0;
}
}