linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: swarren@nvidia.com (Stephen Warren)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 08/17] ASoC: Tegra I2S: Use devm_ APIs and module_platform_driver
Date: Tue, 22 Nov 2011 18:21:16 -0700	[thread overview]
Message-ID: <1322011285-4002-9-git-send-email-swarren@nvidia.com> (raw)
In-Reply-To: <1322011285-4002-1-git-send-email-swarren@nvidia.com>

module_platform_drive saves some boiler-plate code.

The devm_ APIs remove the need to manually clean up allocations,
thus removing some code.

Signed-off-by: Stephen Warren <swarren@nvidia.com>
---
 sound/soc/tegra/tegra_i2s.c |   45 +++++++++---------------------------------
 1 files changed, 10 insertions(+), 35 deletions(-)

diff --git a/sound/soc/tegra/tegra_i2s.c b/sound/soc/tegra/tegra_i2s.c
index 33e62fc..76014f0 100644
--- a/sound/soc/tegra/tegra_i2s.c
+++ b/sound/soc/tegra/tegra_i2s.c
@@ -362,11 +362,11 @@ static __devinit int tegra_i2s_platform_probe(struct platform_device *pdev)
 		return -EINVAL;
 	}
 
-	i2s = kzalloc(sizeof(struct tegra_i2s), GFP_KERNEL);
+	i2s = devm_kzalloc(&pdev->dev, sizeof(struct tegra_i2s), GFP_KERNEL);
 	if (!i2s) {
 		dev_err(&pdev->dev, "Can't allocate tegra_i2s\n");
 		ret = -ENOMEM;
-		goto exit;
+		goto err;
 	}
 	dev_set_drvdata(&pdev->dev, i2s);
 
@@ -374,7 +374,7 @@ static __devinit int tegra_i2s_platform_probe(struct platform_device *pdev)
 	if (IS_ERR(i2s->clk_i2s)) {
 		dev_err(&pdev->dev, "Can't retrieve i2s clock\n");
 		ret = PTR_ERR(i2s->clk_i2s);
-		goto err_free;
+		goto err;
 	}
 
 	mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
@@ -391,19 +391,19 @@ static __devinit int tegra_i2s_platform_probe(struct platform_device *pdev)
 		goto err_clk_put;
 	}
 
-	memregion = request_mem_region(mem->start, resource_size(mem),
-					DRV_NAME);
+	memregion = devm_request_mem_region(&pdev->dev, mem->start,
+					    resource_size(mem), DRV_NAME);
 	if (!memregion) {
 		dev_err(&pdev->dev, "Memory region already claimed\n");
 		ret = -EBUSY;
 		goto err_clk_put;
 	}
 
-	i2s->regs = ioremap(mem->start, resource_size(mem));
+	i2s->regs = devm_ioremap(&pdev->dev, mem->start, resource_size(mem));
 	if (!i2s->regs) {
 		dev_err(&pdev->dev, "ioremap failed\n");
 		ret = -ENOMEM;
-		goto err_release;
+		goto err_clk_put;
 	}
 
 	i2s->capture_dma_data.addr = mem->start + TEGRA_I2S_FIFO2;
@@ -422,43 +422,29 @@ static __devinit int tegra_i2s_platform_probe(struct platform_device *pdev)
 	if (ret) {
 		dev_err(&pdev->dev, "Could not register DAI: %d\n", ret);
 		ret = -ENOMEM;
-		goto err_unmap;
+		goto err_clk_put;
 	}
 
 	tegra_i2s_debug_add(i2s, pdev->id);
 
 	return 0;
 
-err_unmap:
-	iounmap(i2s->regs);
-err_release:
-	release_mem_region(mem->start, resource_size(mem));
 err_clk_put:
 	clk_put(i2s->clk_i2s);
-err_free:
-	kfree(i2s);
-exit:
+err:
 	return ret;
 }
 
 static int __devexit tegra_i2s_platform_remove(struct platform_device *pdev)
 {
 	struct tegra_i2s *i2s = dev_get_drvdata(&pdev->dev);
-	struct resource *res;
 
 	snd_soc_unregister_dai(&pdev->dev);
 
 	tegra_i2s_debug_remove(i2s);
 
-	iounmap(i2s->regs);
-
-	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-	release_mem_region(res->start, resource_size(res));
-
 	clk_put(i2s->clk_i2s);
 
-	kfree(i2s);
-
 	return 0;
 }
 
@@ -470,18 +456,7 @@ static struct platform_driver tegra_i2s_driver = {
 	.probe = tegra_i2s_platform_probe,
 	.remove = __devexit_p(tegra_i2s_platform_remove),
 };
-
-static int __init snd_tegra_i2s_init(void)
-{
-	return platform_driver_register(&tegra_i2s_driver);
-}
-module_init(snd_tegra_i2s_init);
-
-static void __exit snd_tegra_i2s_exit(void)
-{
-	platform_driver_unregister(&tegra_i2s_driver);
-}
-module_exit(snd_tegra_i2s_exit);
+module_platform_driver(tegra_i2s_driver);
 
 MODULE_AUTHOR("Stephen Warren <swarren@nvidia.com>");
 MODULE_DESCRIPTION("Tegra I2S ASoC driver");
-- 
1.7.0.4

  parent reply	other threads:[~2011-11-23  1:21 UTC|newest]

Thread overview: 47+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-11-23  1:21 [PATCH 00/17] ASoC: Add Tegra DT, cleanup, and related Stephen Warren
2011-11-23  1:21 ` [PATCH 01/17] arm/tegra: board-dt: audio: Enable clocks, fix AUXDATA Stephen Warren
2011-11-23 10:38   ` Mark Brown
2011-11-23 17:44     ` Stephen Warren
2011-11-23 22:01       ` Olof Johansson
2011-11-23  1:21 ` [PATCH 02/17] arm/dt: Tegra: Clean up I2S and DAS nodes Stephen Warren
2011-11-23  1:21 ` [PATCH 03/17] arm/dt: Tegra: Enable audio on WM8903 boards, disable others Stephen Warren
2011-11-23 16:50   ` Stephen Warren
2011-11-23  1:21 ` [PATCH 04/17] ASoC: Add device tree binding for WM8903 Stephen Warren
2011-11-23 10:20   ` Mark Brown
2011-11-23  1:21 ` [PATCH 05/17] ASoC: Tegra: Move DAS configuration into machine drivers Stephen Warren
2011-11-23 10:24   ` Mark Brown
2011-11-23  1:21 ` [PATCH 06/17] ASoC: Tegra PCM: Use module_platform_driver Stephen Warren
2011-11-23 10:24   ` Mark Brown
2011-11-23  1:21 ` [PATCH 07/17] ASoC: Tegra DAS: Use devm_ APIs and module_platform_driver Stephen Warren
2011-11-23  6:58   ` Thierry Reding
2011-11-23 10:23     ` Mark Brown
2011-11-23 17:29     ` [alsa-devel] " Stephen Warren
2011-11-23 20:40       ` Thierry Reding
2011-11-23 10:25   ` Mark Brown
2011-11-23  1:21 ` Stephen Warren [this message]
2011-11-23  7:00   ` [PATCH 08/17] ASoC: Tegra I2S: " Thierry Reding
2011-11-23 10:25   ` Mark Brown
2011-11-23  1:21 ` [PATCH 09/17] ASoC: Tegra I2S: Remove dependency on pdev->id Stephen Warren
2011-11-23 11:03   ` Mark Brown
2011-11-23 17:54     ` Stephen Warren
2011-11-23 18:03       ` Mark Brown
2011-11-23  1:21 ` [PATCH 10/17] ASoC: Tegra DAS: Add device tree binding Stephen Warren
2011-11-23 11:07   ` Mark Brown
2011-11-23  1:21 ` [PATCH 11/17] ASoC: Tegra I2S: " Stephen Warren
2011-11-23  7:04   ` Thierry Reding
2011-11-23 10:48     ` Mark Brown
2011-11-23 10:57       ` Thierry Reding
2011-11-23 11:27   ` Mark Brown
2011-11-23  1:21 ` [PATCH 12/17] ASoC: Tegra+WM8903 machine: Use devm_ APIs and module_platform_driver Stephen Warren
2011-11-23  7:05   ` Thierry Reding
2011-11-23 11:08   ` Mark Brown
2011-11-23  1:21 ` [PATCH 13/17] ASoC: Tegra TrimSlice " Stephen Warren
2011-11-23  7:06   ` Thierry Reding
2011-11-23 11:11   ` Mark Brown
2011-11-23  1:21 ` [PATCH 14/17] ASoC: Implement "auto nc pins" feature Stephen Warren
2011-11-23 11:15   ` Mark Brown
2011-11-23  1:21 ` [PATCH 15/17] ASoC: Tegra+WM903 machine: Use new auto_nc_codec_pins feature Stephen Warren
2011-11-23  1:21 ` [PATCH 16/17] ASoC: TrimSlice " Stephen Warren
2011-11-23  1:21 ` [PATCH 17/17] ASoC: Tegra+WM8903 machine: Add device tree binding Stephen Warren
2011-11-23  7:15   ` Thierry Reding
2011-11-23 11:26   ` Mark Brown

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1322011285-4002-9-git-send-email-swarren@nvidia.com \
    --to=swarren@nvidia.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).