These changes are the raw update to linux-4.4.6-rt14. Kernel sources
[kvmfornfv.git] / kernel / sound / soc / codecs / wm9705.c
index 5cc457e..744842c 100644 (file)
@@ -22,6 +22,9 @@
 
 #include "wm9705.h"
 
+#define WM9705_VENDOR_ID 0x574d4c05
+#define WM9705_VENDOR_ID_MASK 0xffffffff
+
 /*
  * WM9705 register cache
  */
@@ -293,21 +296,6 @@ static struct snd_soc_dai_driver wm9705_dai[] = {
        }
 };
 
-static int wm9705_reset(struct snd_soc_codec *codec)
-{
-       struct snd_ac97 *ac97 = snd_soc_codec_get_drvdata(codec);
-
-       if (soc_ac97_ops->reset) {
-               soc_ac97_ops->reset(ac97);
-               if (ac97_read(codec, 0) == wm9705_reg[0])
-                       return 0; /* Success */
-       }
-
-       dev_err(codec->dev, "Failed to reset: AC97 link error\n");
-
-       return -EIO;
-}
-
 #ifdef CONFIG_PM
 static int wm9705_soc_suspend(struct snd_soc_codec *codec)
 {
@@ -324,7 +312,8 @@ static int wm9705_soc_resume(struct snd_soc_codec *codec)
        int i, ret;
        u16 *cache = codec->reg_cache;
 
-       ret = wm9705_reset(codec);
+       ret = snd_ac97_reset(ac97, true, WM9705_VENDOR_ID,
+               WM9705_VENDOR_ID_MASK);
        if (ret < 0)
                return ret;
 
@@ -342,30 +331,17 @@ static int wm9705_soc_resume(struct snd_soc_codec *codec)
 static int wm9705_soc_probe(struct snd_soc_codec *codec)
 {
        struct snd_ac97 *ac97;
-       int ret = 0;
 
-       ac97 = snd_soc_alloc_ac97_codec(codec);
+       ac97 = snd_soc_new_ac97_codec(codec, WM9705_VENDOR_ID,
+               WM9705_VENDOR_ID_MASK);
        if (IS_ERR(ac97)) {
-               ret = PTR_ERR(ac97);
                dev_err(codec->dev, "Failed to register AC97 codec\n");
-               return ret;
+               return PTR_ERR(ac97);
        }
 
-       ret = wm9705_reset(codec);
-       if (ret)
-               goto err_put_device;
-
-       ret = device_add(&ac97->dev);
-       if (ret)
-               goto err_put_device;
-
        snd_soc_codec_set_drvdata(codec, ac97);
 
        return 0;
-
-err_put_device:
-       put_device(&ac97->dev);
-       return ret;
 }
 
 static int wm9705_soc_remove(struct snd_soc_codec *codec)