ASoC: Treat WM8958 revision A as WM8994 revision D
authorMark Brown <broonie@opensource.wolfsonmicro.com>
Fri, 11 Mar 2011 18:00:19 +0000 (18:00 +0000)
committerMark Brown <broonie@opensource.wolfsonmicro.com>
Fri, 18 Mar 2011 10:52:25 +0000 (10:52 +0000)
The first WM8958 revision requires similar treatment.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
sound/soc/codecs/wm8994.c

index 3dc64c8b6a5c534c089f6d7f05becad32bc3bb4c..9458289bb563308c4911028b3d2942f369a4935d 100644 (file)
@@ -3327,14 +3327,23 @@ static int wm8994_codec_probe(struct snd_soc_codec *codec)
        case WM8958:
                snd_soc_add_controls(codec, wm8958_snd_controls,
                                     ARRAY_SIZE(wm8958_snd_controls));
-               snd_soc_dapm_new_controls(dapm, wm8994_lateclk_widgets,
-                                         ARRAY_SIZE(wm8994_lateclk_widgets));
-               snd_soc_dapm_new_controls(dapm, wm8994_adc_widgets,
-                                         ARRAY_SIZE(wm8994_adc_widgets));
-               snd_soc_dapm_new_controls(dapm, wm8994_dac_widgets,
-                                         ARRAY_SIZE(wm8994_dac_widgets));
                snd_soc_dapm_new_controls(dapm, wm8958_dapm_widgets,
                                          ARRAY_SIZE(wm8958_dapm_widgets));
+               if (wm8994->revision < 1) {
+                       snd_soc_dapm_new_controls(dapm, wm8994_lateclk_revd_widgets,
+                                                 ARRAY_SIZE(wm8994_lateclk_revd_widgets));
+                       snd_soc_dapm_new_controls(dapm, wm8994_adc_revd_widgets,
+                                                 ARRAY_SIZE(wm8994_adc_revd_widgets));
+                       snd_soc_dapm_new_controls(dapm, wm8994_dac_revd_widgets,
+                                                 ARRAY_SIZE(wm8994_dac_revd_widgets));
+               } else {
+                       snd_soc_dapm_new_controls(dapm, wm8994_lateclk_widgets,
+                                                 ARRAY_SIZE(wm8994_lateclk_widgets));
+                       snd_soc_dapm_new_controls(dapm, wm8994_adc_widgets,
+                                                 ARRAY_SIZE(wm8994_adc_widgets));
+                       snd_soc_dapm_new_controls(dapm, wm8994_dac_widgets,
+                                                 ARRAY_SIZE(wm8994_dac_widgets));
+               }
                break;
        }
                
@@ -3358,10 +3367,17 @@ static int wm8994_codec_probe(struct snd_soc_codec *codec)
                }
                break;
        case WM8958:
-               snd_soc_dapm_add_routes(dapm, wm8994_lateclk_intercon,
-                                       ARRAY_SIZE(wm8994_lateclk_intercon));
-               snd_soc_dapm_add_routes(dapm, wm8958_intercon,
-                                       ARRAY_SIZE(wm8958_intercon));
+               if (wm8994->revision < 1) {
+                       snd_soc_dapm_add_routes(dapm, wm8994_revd_intercon,
+                                               ARRAY_SIZE(wm8994_revd_intercon));
+                       snd_soc_dapm_add_routes(dapm, wm8994_lateclk_revd_intercon,
+                                               ARRAY_SIZE(wm8994_lateclk_revd_intercon));
+               } else {
+                       snd_soc_dapm_add_routes(dapm, wm8994_lateclk_intercon,
+                                               ARRAY_SIZE(wm8994_lateclk_intercon));
+                       snd_soc_dapm_add_routes(dapm, wm8958_intercon,
+                                               ARRAY_SIZE(wm8958_intercon));
+               }
                break;
        }