diff options
author | Charles Keepax <ckeepax@gmail.com> | 2015-03-05 18:39:21 +0300 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2015-03-05 19:51:58 +0300 |
commit | 0be9653a02830637ed385d99bf898d456e8eae8f (patch) | |
tree | ab52fcbc86fd8eef3b8840dfe99d767e25a1ca59 /sound/soc/codecs/wm8804.c | |
parent | 5142442d75194ab983e865e6c12995da5666a11c (diff) | |
download | linux-0be9653a02830637ed385d99bf898d456e8eae8f.tar.xz |
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>
Diffstat (limited to 'sound/soc/codecs/wm8804.c')
-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) /* This should really be moved into the regulator core */ for (i = 0; i < ARRAY_SIZE(wm8804->supplies); i++) { - ret = regulator_register_notifier(wm8804->supplies[i].consumer, - &wm8804->disable_nb[i]); + struct regulator *regulator = wm8804->supplies[i].consumer; + + ret = devm_regulator_register_notifier(regulator, + &wm8804->disable_nb[i]); if (ret != 0) { dev_err(dev, "Failed to register regulator notifier: %d\n", @@ -662,15 +664,6 @@ EXPORT_SYMBOL_GPL(wm8804_probe); void wm8804_remove(struct device *dev) { - struct wm8804_priv *wm8804; - int i; - - wm8804 = dev_get_drvdata(dev); - - for (i = 0; i < ARRAY_SIZE(wm8804->supplies); ++i) - regulator_unregister_notifier(wm8804->supplies[i].consumer, - &wm8804->disable_nb[i]); - snd_soc_unregister_codec(dev); } EXPORT_SYMBOL_GPL(wm8804_remove); |