Merge series "ASoC: Fix dependency issues of SND_SOC" from Wei Li <liwei391@huawei...
authorMark Brown <broonie@kernel.org>
Mon, 20 Apr 2020 14:27:09 +0000 (15:27 +0100)
committerMark Brown <broonie@kernel.org>
Mon, 20 Apr 2020 14:27:09 +0000 (15:27 +0100)
Fix dependency issues of SND_SOC introduced by commit ea00d95200d02
("ASoC: Use imply for SND_SOC_ALL_CODECS").

Wei Li (2):
  ASoC: wm89xx: Fix build errors caused by I2C dependency
  ASoC: Fix wrong dependency of da7210 and wm8983

 sound/soc/codecs/Kconfig | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

--
2.17.1

1  2 
sound/soc/soc-dapm.c

diff --combined sound/soc/soc-dapm.c
index 5c7b1576d2a3fc895b8ef478994dd414d68c3e46,e2632841b321a2bdb47aff11fbe2f2493d808658..80658d13a8551de992d6c81f62e4097ca1d1d06e
@@@ -423,7 -423,7 +423,7 @@@ static int dapm_kcontrol_data_alloc(str
  
                        memset(&template, 0, sizeof(template));
                        template.reg = e->reg;
-                       template.mask = e->mask << e->shift_l;
+                       template.mask = e->mask;
                        template.shift = e->shift_l;
                        template.off_val = snd_soc_enum_item_to_val(e, 0);
                        template.on_val = template.off_val;
@@@ -546,8 -546,22 +546,22 @@@ static bool dapm_kcontrol_set_value(con
        if (data->value == value)
                return false;
  
-       if (data->widget)
-               data->widget->on_val = value;
+       if (data->widget) {
+               switch (dapm_kcontrol_get_wlist(kcontrol)->widgets[0]->id) {
+               case snd_soc_dapm_switch:
+               case snd_soc_dapm_mixer:
+               case snd_soc_dapm_mixer_named_ctl:
+                       data->widget->on_val = value & data->widget->mask;
+                       break;
+               case snd_soc_dapm_demux:
+               case snd_soc_dapm_mux:
+                       data->widget->on_val = value >> data->widget->shift;
+                       break;
+               default:
+                       data->widget->on_val = value;
+                       break;
+               }
+       }
  
        data->value = value;
  
@@@ -4413,11 -4427,11 +4427,11 @@@ void snd_soc_dapm_connect_dai_link_widg
                if (rtd->num_cpus == 1) {
                        for_each_rtd_codec_dais(rtd, i, codec_dai)
                                dapm_connect_dai_pair(card, rtd, codec_dai,
 -                                                    rtd->cpu_dais[0]);
 +                                                    asoc_rtd_to_cpu(rtd, 0));
                } else if (rtd->num_codecs == rtd->num_cpus) {
                        for_each_rtd_codec_dais(rtd, i, codec_dai)
                                dapm_connect_dai_pair(card, rtd, codec_dai,
 -                                                    rtd->cpu_dais[i]);
 +                                                    asoc_rtd_to_cpu(rtd, i));
                } else {
                        dev_err(card->dev,
                                "N cpus to M codecs link is not supported yet\n");