ASoC: wm8994: Push wm8994 private data allocation out into device probe
authorMark Brown <broonie@opensource.wolfsonmicro.com>
Sat, 3 Mar 2012 23:24:39 +0000 (23:24 +0000)
committerMark Brown <broonie@opensource.wolfsonmicro.com>
Sun, 4 Mar 2012 01:56:06 +0000 (01:56 +0000)
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
sound/soc/codecs/wm8994.c

index 81d62a38475e8a018ce195e45806f9e3556d5344..73cd8b922d12ec155e469b28e338b01bb37fd6ae 100644 (file)
@@ -3472,23 +3472,16 @@ static irqreturn_t wm8994_temp_shut(int irq, void *data)
 static int wm8994_codec_probe(struct snd_soc_codec *codec)
 {
        struct wm8994 *control = dev_get_drvdata(codec->dev->parent);
-       struct wm8994_priv *wm8994;
+       struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec);
        struct snd_soc_dapm_context *dapm = &codec->dapm;
        unsigned int reg;
        int ret, i;
 
+       wm8994->codec = codec;
        codec->control_data = control->regmap;
 
-       wm8994 = devm_kzalloc(codec->dev, sizeof(struct wm8994_priv),
-                             GFP_KERNEL);
-       if (wm8994 == NULL)
-               return -ENOMEM;
-       snd_soc_codec_set_drvdata(codec, wm8994);
-
        snd_soc_codec_set_cache_io(codec, 16, 16, SND_SOC_REGMAP);
 
-       wm8994->wm8994 = dev_get_drvdata(codec->dev->parent);
-       wm8994->pdata = dev_get_platdata(codec->dev->parent);
        wm8994->codec = codec;
 
        mutex_init(&wm8994->accdet_lock);
@@ -3953,6 +3946,17 @@ static struct snd_soc_codec_driver soc_codec_dev_wm8994 = {
 
 static int __devinit wm8994_probe(struct platform_device *pdev)
 {
+       struct wm8994_priv *wm8994;
+
+       wm8994 = devm_kzalloc(&pdev->dev, sizeof(struct wm8994_priv),
+                             GFP_KERNEL);
+       if (wm8994 == NULL)
+               return -ENOMEM;
+       platform_set_drvdata(pdev, wm8994);
+
+       wm8994->wm8994 = dev_get_drvdata(pdev->dev.parent);
+       wm8994->pdata = dev_get_platdata(pdev->dev.parent);
+
        return snd_soc_register_codec(&pdev->dev, &soc_codec_dev_wm8994,
                        wm8994_dai, ARRAY_SIZE(wm8994_dai));
 }