From: Russell King <rmk+kernel@arm.linux.org.uk>
To: alsa-devel@alsa-project.org,
Mark Brown <broonie@opensource.wolfsonmicro.com>
Cc: Takashi Iwai <tiwai@suse.de>,
Sebastian Hesselbarth <sebastian.hesselbarth@googlemail.com>,
Liam Girdwood <lrg@ti.com>, Rabeeh Khoury <rabeeh@solid-run.com>
Subject: [PATCH 06/10] ASoC: kirkwood-i2s: use devm_* APIs
Date: Tue, 20 Nov 2012 12:19:33 +0000 [thread overview]
Message-ID: <E1Tamnd-0007XT-Lm@rmk-PC.arm.linux.org.uk> (raw)
In-Reply-To: <20121120121726.GN3290@n2100.arm.linux.org.uk>
Simplify the cleanup paths in the driver by using the devm_* APIs,
ensuring that all error paths are correctly checked.
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
---
sound/soc/kirkwood/kirkwood-i2s.c | 53 ++++++++++--------------------------
sound/soc/kirkwood/kirkwood.h | 1 -
2 files changed, 15 insertions(+), 39 deletions(-)
diff --git a/sound/soc/kirkwood/kirkwood-i2s.c b/sound/soc/kirkwood/kirkwood-i2s.c
index 1d5db48..f059f40 100644
--- a/sound/soc/kirkwood/kirkwood-i2s.c
+++ b/sound/soc/kirkwood/kirkwood-i2s.c
@@ -406,57 +406,47 @@ static __devinit int kirkwood_i2s_dev_probe(struct platform_device *pdev)
struct kirkwood_dma_data *priv;
int err;
- priv = kzalloc(sizeof(struct kirkwood_dma_data), GFP_KERNEL);
+ priv = devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL);
if (!priv) {
dev_err(&pdev->dev, "allocation failed\n");
- err = -ENOMEM;
- goto error;
+ return -ENOMEM;
}
dev_set_drvdata(&pdev->dev, priv);
mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
if (!mem) {
dev_err(&pdev->dev, "platform_get_resource failed\n");
- err = -ENXIO;
- goto err_alloc;
+ return -ENXIO;
}
- priv->mem = request_mem_region(mem->start, SZ_16K, DRV_NAME);
- if (!priv->mem) {
- dev_err(&pdev->dev, "request_mem_region failed\n");
- err = -EBUSY;
- goto err_alloc;
- }
-
- priv->io = ioremap(priv->mem->start, SZ_16K);
+ priv->io = devm_request_and_ioremap(&pdev->dev, mem);
if (!priv->io) {
- dev_err(&pdev->dev, "ioremap failed\n");
- err = -ENOMEM;
- goto err_iomem;
+ dev_err(&pdev->dev, "devm_request_and_ioremap failed\n");
+ return -ENOMEM;
}
priv->irq = platform_get_irq(pdev, 0);
if (priv->irq <= 0) {
dev_err(&pdev->dev, "platform_get_irq failed\n");
- err = -ENXIO;
- goto err_ioremap;
+ return -ENXIO;
}
if (!data) {
dev_err(&pdev->dev, "no platform data ?!\n");
- err = -EINVAL;
- goto err_ioremap;
+ return -EINVAL;
}
priv->burst = data->burst;
- priv->clk = clk_get(&pdev->dev, NULL);
+ priv->clk = devm_clk_get(&pdev->dev, NULL);
if (IS_ERR(priv->clk)) {
dev_err(&pdev->dev, "no clock\n");
- err = PTR_ERR(priv->clk);
- goto err_ioremap;
+ return PTR_ERR(priv->clk);
}
- clk_prepare_enable(priv->clk);
+
+ err = clk_prepare_enable(priv->clk);
+ if (err < 0)
+ return err;
err = snd_soc_register_dai(&pdev->dev, &kirkwood_i2s_dai);
if (!err)
@@ -464,15 +454,7 @@ static __devinit int kirkwood_i2s_dev_probe(struct platform_device *pdev)
dev_err(&pdev->dev, "snd_soc_register_dai failed\n");
clk_disable_unprepare(priv->clk);
- clk_put(priv->clk);
-
-err_ioremap:
- iounmap(priv->io);
-err_iomem:
- release_mem_region(priv->mem->start, SZ_16K);
-err_alloc:
- kfree(priv);
-error:
+
return err;
}
@@ -483,11 +465,6 @@ static __devexit int kirkwood_i2s_dev_remove(struct platform_device *pdev)
snd_soc_unregister_dai(&pdev->dev);
clk_disable_unprepare(priv->clk);
- clk_put(priv->clk);
-
- iounmap(priv->io);
- release_mem_region(priv->mem->start, SZ_16K);
- kfree(priv);
return 0;
}
diff --git a/sound/soc/kirkwood/kirkwood.h b/sound/soc/kirkwood/kirkwood.h
index f9084d8..7d92b9e 100644
--- a/sound/soc/kirkwood/kirkwood.h
+++ b/sound/soc/kirkwood/kirkwood.h
@@ -119,7 +119,6 @@
#define KIRKWOOD_SND_MAX_PERIOD_BYTES 0x4000
struct kirkwood_dma_data {
- struct resource *mem;
void __iomem *io;
int irq;
int burst;
--
1.7.4.4
next prev parent reply other threads:[~2012-11-20 12:19 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-11-20 12:17 [PATCH 0/10] Kirkwood ASoC drivers fixes and improvements Russell King - ARM Linux
2012-11-20 12:17 ` [PATCH 01/10] ASoC: kirkwood-dma: fix use of virt_to_phys() Russell King
2012-11-20 12:18 ` [PATCH 02/10] ASoC: kirkwood-dma: don't ignore other irq causes on error Russell King
2012-11-20 12:18 ` [PATCH 03/10] ASoC: kirkwood-i2s: fix DCO lock detection Russell King
2012-11-20 12:18 ` [PATCH 04/10] ASoC: kirkwood-i2s: fix DMA underruns Russell King
2012-11-20 12:19 ` [PATCH 05/10] ASoC: kirkwood-i2s: more pause-mode fixes Russell King
2012-11-20 12:19 ` Russell King [this message]
2012-11-20 12:19 ` [PATCH 07/10] ASoC: kirkwood-i2s: better handling of play/record control registers Russell King
2012-11-20 12:20 ` [PATCH 08/10] ASoC: kirkwood-dma: remove restriction on sample rates Russell King
2012-11-20 12:20 ` [PATCH 09/10] ASoC: kirkwood-i2s: add support for external clock rates Russell King
2012-11-20 12:20 ` [PATCH 0/10] Kirkwood ASoC drivers fixes and improvements Russell King - ARM Linux
2012-11-22 14:06 ` Russell King - ARM Linux
2012-11-22 14:06 ` Russell King - ARM Linux
2012-11-23 1:36 ` Mark Brown
2012-11-23 1:36 ` Mark Brown
[not found] ` <87ip8xodv1.fsf@lebrac.rtp-net.org>
2012-11-23 1:38 ` Mark Brown
2012-11-20 12:20 ` [PATCH 10/10] ASoC: kirkwood-dma: remove channel restrictions Russell King
2012-11-21 1:40 ` [PATCH 0/10] Kirkwood ASoC drivers fixes and improvements Mark Brown
2012-11-21 9:41 ` Russell King - ARM Linux
2012-11-21 9:47 ` Mark Brown
2012-11-21 9:59 ` Takashi Iwai
2012-11-21 10:01 ` Mark Brown
2012-11-21 10:05 ` Russell King - ARM Linux
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=E1Tamnd-0007XT-Lm@rmk-PC.arm.linux.org.uk \
--to=rmk+kernel@arm.linux.org.uk \
--cc=alsa-devel@alsa-project.org \
--cc=broonie@opensource.wolfsonmicro.com \
--cc=lrg@ti.com \
--cc=rabeeh@solid-run.com \
--cc=sebastian.hesselbarth@googlemail.com \
--cc=tiwai@suse.de \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.