All of lore.kernel.org
 help / color / mirror / Atom feed
From: Peter Ujfalusi <peter.ujfalusi@ti.com>
To: Mark Brown <broonie@kernel.org>, Liam Girdwood <lgirdwood@gmail.com>
Cc: alsa-devel@alsa-project.org, lars@metafoo.de,
	Jyri Sarha <jsarha@ti.com>,
	Jarkko Nikula <jarkko.nikula@bitmer.com>,
	notasas@gmail.com
Subject: [PATCH v2 01/20] ASoC: Add resource managed snd_soc_register_platform()
Date: Wed, 16 Apr 2014 15:46:11 +0300	[thread overview]
Message-ID: <1397652390-852-2-git-send-email-peter.ujfalusi@ti.com> (raw)
In-Reply-To: <1397652390-852-1-git-send-email-peter.ujfalusi@ti.com>

Simplify error handling and remove repetitive (and rarely executed) code
for unregistration by providing a devm_snd_soc_register_platform()
platform.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
---
 include/sound/soc.h    |  2 ++
 sound/soc/soc-devres.c | 34 ++++++++++++++++++++++++++++++++++
 2 files changed, 36 insertions(+)

diff --git a/include/sound/soc.h b/include/sound/soc.h
index 33965946656c..9e214ec70c8a 100644
--- a/include/sound/soc.h
+++ b/include/sound/soc.h
@@ -375,6 +375,8 @@ int snd_soc_resume(struct device *dev);
 int snd_soc_poweroff(struct device *dev);
 int snd_soc_register_platform(struct device *dev,
 		const struct snd_soc_platform_driver *platform_drv);
+int devm_snd_soc_register_platform(struct device *dev,
+		const struct snd_soc_platform_driver *platform_drv);
 void snd_soc_unregister_platform(struct device *dev);
 int snd_soc_add_platform(struct device *dev, struct snd_soc_platform *platform,
 		const struct snd_soc_platform_driver *platform_drv);
diff --git a/sound/soc/soc-devres.c b/sound/soc/soc-devres.c
index 7ac745df1412..e94aa0277250 100644
--- a/sound/soc/soc-devres.c
+++ b/sound/soc/soc-devres.c
@@ -52,6 +52,40 @@ int devm_snd_soc_register_component(struct device *dev,
 }
 EXPORT_SYMBOL_GPL(devm_snd_soc_register_component);
 
+static void devm_platform_release(struct device *dev, void *res)
+{
+	snd_soc_unregister_platform(*(struct device **)res);
+}
+
+/**
+ * devm_snd_soc_register_platform - resource managed platform registration
+ * @dev: Device used to manage platform
+ * @platform: platform to register
+ *
+ * Register a platform driver with automatic unregistration when the device is
+ * unregistered.
+ */
+int devm_snd_soc_register_platform(struct device *dev,
+			const struct snd_soc_platform_driver *platform_drv)
+{
+	struct device **ptr;
+	int ret;
+
+	ptr = devres_alloc(devm_platform_release, sizeof(*ptr), GFP_KERNEL);
+	if (!ptr)
+		return -ENOMEM;
+
+	ret = snd_soc_register_platform(dev, platform_drv);
+	if (ret == 0) {
+		*ptr = dev;
+		devres_add(dev, ptr);
+	} else {
+		devres_free(ptr);
+	}
+
+	return ret;
+}
+
 static void devm_card_release(struct device *dev, void *res)
 {
 	snd_soc_unregister_card(*(struct snd_soc_card **)res);
-- 
1.9.2

  reply	other threads:[~2014-04-16 12:46 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-04-16 12:46 [PATCH v2 00/20] ASoC: omap: Bind the omap-pcm platform driver to dai device Peter Ujfalusi
2014-04-16 12:46 ` Peter Ujfalusi [this message]
2014-04-16 12:46 ` [PATCH v2 02/20] ASoC: omap-pcm: Support for binding the platform driver to dai devices Peter Ujfalusi
2014-04-16 12:46 ` [PATCH v2 03/20] ASoC: omap-mcpdm: Assign the dai DMA data at earlier time Peter Ujfalusi
2014-04-16 12:46 ` [PATCH v2 04/20] ASoC: omap-mcpdm: Bind the platform driver to the dai driver when loading Peter Ujfalusi
2014-04-16 12:46 ` [PATCH v2 05/20] ASoC: omap-mcbsp: Assign the dai DMA data at earlier time Peter Ujfalusi
2014-04-16 12:46 ` [PATCH v2 06/20] ASoC: omap-mcbsp: Bind the platform driver to the dai driver when loading Peter Ujfalusi
2014-04-16 12:46 ` [PATCH v2 07/20] ASoC: omap-dmic: Assign the dai DMA data at earlier time Peter Ujfalusi
2014-04-16 12:46 ` [PATCH v2 08/20] ASoC: omap-dmic: Bind the platform driver to the dai driver when loading Peter Ujfalusi
2014-04-16 12:46 ` [PATCH v2 09/20] ASoC: omap-hdmi: " Peter Ujfalusi
2014-04-21 12:54   ` Lars-Peter Clausen
2014-04-22  7:26     ` Peter Ujfalusi
2014-04-16 12:46 ` [PATCH v2 10/20] ASoC: davinci-mcasp: Update MCASP_VERSION_4 platform driver registration Peter Ujfalusi
2014-04-16 12:46 ` [PATCH v2 11/20] ASoC: omap-abe-twl6040: Use the cpu_dai node to specify the platform driver Peter Ujfalusi
2014-04-16 12:46 ` [PATCH v2 12/20] ASoC: omap-twl4030: Use the same name/node for platform as the cpu_dai Peter Ujfalusi
2014-04-16 12:46 ` [PATCH v2 13/20] ASoC: am3517evm: Use the same name " Peter Ujfalusi
2014-04-16 12:46 ` [PATCH v2 14/20] ASoC: ams-delta: " Peter Ujfalusi
2014-04-16 12:46 ` [PATCH v2 15/20] ASoC: n810: " Peter Ujfalusi
2014-04-16 12:46 ` [PATCH v2 16/20] ASoC: omap3pandora: " Peter Ujfalusi
2014-04-16 12:46 ` [PATCH v2 17/20] ASoC: osk5912: " Peter Ujfalusi
2014-04-16 12:46 ` [PATCH v2 18/20] ASoC: rx51: " Peter Ujfalusi
2014-04-16 12:46 ` [PATCH v2 19/20] ASoC: omap-hdmi-card: " Peter Ujfalusi
2014-04-16 12:46 ` [PATCH v2 20/20] ASoC: omap-pcm: Drop the platform driver init code Peter Ujfalusi
2014-04-18 17:05 ` [PATCH v2 00/20] ASoC: omap: Bind the omap-pcm platform driver to dai device 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=1397652390-852-2-git-send-email-peter.ujfalusi@ti.com \
    --to=peter.ujfalusi@ti.com \
    --cc=alsa-devel@alsa-project.org \
    --cc=broonie@kernel.org \
    --cc=jarkko.nikula@bitmer.com \
    --cc=jsarha@ti.com \
    --cc=lars@metafoo.de \
    --cc=lgirdwood@gmail.com \
    --cc=notasas@gmail.com \
    /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.