ASoC: Convert WM8400 to devm_kzalloc()
authorMark Brown <broonie@opensource.wolfsonmicro.com>
Sat, 3 Dec 2011 11:41:27 +0000 (11:41 +0000)
committerMark Brown <broonie@opensource.wolfsonmicro.com>
Sat, 3 Dec 2011 21:35:06 +0000 (21:35 +0000)
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
sound/soc/codecs/wm8400.c

index 56a7b72..aef7e4d 100644 (file)
@@ -1383,7 +1383,8 @@ static int wm8400_codec_probe(struct snd_soc_codec *codec)
        int ret;
        u16 reg;
 
-       priv = kzalloc(sizeof(struct wm8400_priv), GFP_KERNEL);
+       priv = devm_kzalloc(codec->dev, sizeof(struct wm8400_priv),
+                           GFP_KERNEL);
        if (priv == NULL)
                return -ENOMEM;
 
@@ -1395,7 +1396,7 @@ static int wm8400_codec_probe(struct snd_soc_codec *codec)
                                 ARRAY_SIZE(power), &power[0]);
        if (ret != 0) {
                dev_err(codec->dev, "Failed to get regulators: %d\n", ret);
-               goto err;
+               return ret;
        }
 
        INIT_WORK(&priv->work, wm8400_probe_deferred);
@@ -1426,14 +1427,11 @@ static int wm8400_codec_probe(struct snd_soc_codec *codec)
 
 err_regulator:
        regulator_bulk_free(ARRAY_SIZE(power), power);
-err:
-       kfree(priv);
        return ret;
 }
 
 static int  wm8400_codec_remove(struct snd_soc_codec *codec)
 {
-       struct wm8400_priv *priv = snd_soc_codec_get_drvdata(codec);
        u16 reg;
 
        reg = wm8400_read(codec, WM8400_POWER_MANAGEMENT_1);
@@ -1441,7 +1439,6 @@ static int  wm8400_codec_remove(struct snd_soc_codec *codec)
                     reg & (~WM8400_CODEC_ENA));
 
        regulator_bulk_free(ARRAY_SIZE(power), power);
-       kfree(priv);
 
        return 0;
 }