diff options
author | Charles Keepax <ckeepax@gmail.com> | 2015-03-05 10:39:21 -0500 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2015-03-05 11:51:58 -0500 |
commit | 0be9653a02830637ed385d99bf898d456e8eae8f (patch) | |
tree | ab52fcbc86fd8eef3b8840dfe99d767e25a1ca59 | |
parent | 5142442d75194ab983e865e6c12995da5666a11c (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.c | 15 |
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 | ||
663 | void wm8804_remove(struct device *dev) | 665 | void 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 | } |
676 | EXPORT_SYMBOL_GPL(wm8804_remove); | 669 | EXPORT_SYMBOL_GPL(wm8804_remove); |