aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCharles Keepax <ckeepax@gmail.com>2015-03-05 10:39:21 -0500
committerMark Brown <broonie@kernel.org>2015-03-05 11:51:58 -0500
commit0be9653a02830637ed385d99bf898d456e8eae8f (patch)
treeab52fcbc86fd8eef3b8840dfe99d767e25a1ca59
parent5142442d75194ab983e865e6c12995da5666a11c (diff)
ASoC: wm8804: Use new devres regulator_register_notifier
This is more idiomatic and also fixes an issue where the notifiers were being leaked if probe failed. Signed-off-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com> Signed-off-by: Mark Brown <broonie@kernel.org>
-rw-r--r--sound/soc/codecs/wm8804.c15
1 files changed, 4 insertions, 11 deletions
diff --git a/sound/soc/codecs/wm8804.c b/sound/soc/codecs/wm8804.c
index 1bd4ace29594..7804ddf53a04 100644
--- a/sound/soc/codecs/wm8804.c
+++ b/sound/soc/codecs/wm8804.c
@@ -601,8 +601,10 @@ int wm8804_probe(struct device *dev, struct regmap *regmap)
601 601
602 /* This should really be moved into the regulator core */ 602 /* This should really be moved into the regulator core */
603 for (i = 0; i < ARRAY_SIZE(wm8804->supplies); i++) { 603 for (i = 0; i < ARRAY_SIZE(wm8804->supplies); i++) {
604 ret = regulator_register_notifier(wm8804->supplies[i].consumer, 604 struct regulator *regulator = wm8804->supplies[i].consumer;
605 &wm8804->disable_nb[i]); 605
606 ret = devm_regulator_register_notifier(regulator,
607 &wm8804->disable_nb[i]);
606 if (ret != 0) { 608 if (ret != 0) {
607 dev_err(dev, 609 dev_err(dev,
608 "Failed to register regulator notifier: %d\n", 610 "Failed to register regulator notifier: %d\n",
@@ -662,15 +664,6 @@ EXPORT_SYMBOL_GPL(wm8804_probe);
662 664
663void wm8804_remove(struct device *dev) 665void wm8804_remove(struct device *dev)
664{ 666{
665 struct wm8804_priv *wm8804;
666 int i;
667
668 wm8804 = dev_get_drvdata(dev);
669
670 for (i = 0; i < ARRAY_SIZE(wm8804->supplies); ++i)
671 regulator_unregister_notifier(wm8804->supplies[i].consumer,
672 &wm8804->disable_nb[i]);
673
674 snd_soc_unregister_codec(dev); 667 snd_soc_unregister_codec(dev);
675} 668}
676EXPORT_SYMBOL_GPL(wm8804_remove); 669EXPORT_SYMBOL_GPL(wm8804_remove);