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
next prev 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).