ASoC: wm8400: Use devm_regulator_bulk_get
authorSachin Kamat <sachin.kamat@linaro.org>
Mon, 26 Nov 2012 11:49:36 +0000 (17:19 +0530)
committerMark Brown <broonie@opensource.wolfsonmicro.com>
Wed, 28 Nov 2012 17:39:59 +0000 (17:39 +0000)
devm_regulator_bulk_get() is device managed and makes error
handling and code cleanup simpler.

Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
sound/soc/codecs/wm8400.c

index 5d277a915f8180a4a5b4bc301ecad54d7b7c6b9f..262c44082eb07207c93b84f82f5bd24f945076b4 100644 (file)
@@ -1373,7 +1373,7 @@ static int wm8400_codec_probe(struct snd_soc_codec *codec)
        codec->control_data = priv->wm8400 = wm8400;
        priv->codec = codec;
 
-       ret = regulator_bulk_get(wm8400->dev,
+       ret = devm_regulator_bulk_get(wm8400->dev,
                                 ARRAY_SIZE(power), &power[0]);
        if (ret != 0) {
                dev_err(codec->dev, "Failed to get regulators: %d\n", ret);
@@ -1398,15 +1398,9 @@ static int wm8400_codec_probe(struct snd_soc_codec *codec)
        snd_soc_write(codec, WM8400_LEFT_OUTPUT_VOLUME, 0x50 | (1<<8));
        snd_soc_write(codec, WM8400_RIGHT_OUTPUT_VOLUME, 0x50 | (1<<8));
 
-       if (!schedule_work(&priv->work)) {
-               ret = -EINVAL;
-               goto err_regulator;
-       }
+       if (!schedule_work(&priv->work))
+               return -EINVAL;
        return 0;
-
-err_regulator:
-       regulator_bulk_free(ARRAY_SIZE(power), power);
-       return ret;
 }
 
 static int  wm8400_codec_remove(struct snd_soc_codec *codec)
@@ -1417,8 +1411,6 @@ static int  wm8400_codec_remove(struct snd_soc_codec *codec)
        snd_soc_write(codec, WM8400_POWER_MANAGEMENT_1,
                     reg & (~WM8400_CODEC_ENA));
 
-       regulator_bulk_free(ARRAY_SIZE(power), power);
-
        return 0;
 }