Merge branch 'fix/asoc' into for-linus

+47 -9
+42 -9
sound/soc/codecs/wm8994.c
··· 110 111 unsigned int aif1clk_enable:1; 112 unsigned int aif2clk_enable:1; 113 }; 114 115 static int wm8994_readable(unsigned int reg) ··· 1018 1019 switch (event) { 1020 case SND_SOC_DAPM_PRE_PMU: 1021 - if (wm8994->aif1clk_enable) 1022 snd_soc_update_bits(codec, WM8994_AIF1_CLOCKING_1, 1023 WM8994_AIF1CLK_ENA_MASK, 1024 WM8994_AIF1CLK_ENA); 1025 - if (wm8994->aif2clk_enable) 1026 snd_soc_update_bits(codec, WM8994_AIF2_CLOCKING_1, 1027 WM8994_AIF2CLK_ENA_MASK, 1028 WM8994_AIF2CLK_ENA); 1029 break; 1030 } 1031 ··· 1044 1045 switch (event) { 1046 case SND_SOC_DAPM_POST_PMD: 1047 - if (wm8994->aif1clk_enable) { 1048 snd_soc_update_bits(codec, WM8994_AIF1_CLOCKING_1, 1049 WM8994_AIF1CLK_ENA_MASK, 0); 1050 - wm8994->aif1clk_enable = 0; 1051 } 1052 - if (wm8994->aif2clk_enable) { 1053 snd_soc_update_bits(codec, WM8994_AIF2_CLOCKING_1, 1054 WM8994_AIF2CLK_ENA_MASK, 0); 1055 - wm8994->aif2clk_enable = 0; 1056 } 1057 break; 1058 } ··· 1070 case SND_SOC_DAPM_PRE_PMU: 1071 wm8994->aif1clk_enable = 1; 1072 break; 1073 } 1074 1075 return 0; ··· 1088 case SND_SOC_DAPM_PRE_PMU: 1089 wm8994->aif2clk_enable = 1; 1090 break; 1091 } 1092 1093 return 0; 1094 } 1095 ··· 1423 SND_SOC_DAPM_DAC("DAC1R", NULL, WM8994_POWER_MANAGEMENT_5, 0, 0), 1424 }; 1425 1426 static const struct snd_soc_dapm_widget wm8994_dapm_widgets[] = { 1427 SND_SOC_DAPM_INPUT("DMIC1DAT"), 1428 SND_SOC_DAPM_INPUT("DMIC2DAT"), ··· 1528 */ 1529 SND_SOC_DAPM_ADC("ADCL", NULL, SND_SOC_NOPM, 1, 0), 1530 SND_SOC_DAPM_ADC("ADCR", NULL, SND_SOC_NOPM, 0, 0), 1531 - 1532 - SND_SOC_DAPM_MUX("ADCL Mux", WM8994_POWER_MANAGEMENT_4, 1, 0, &adcl_mux), 1533 - SND_SOC_DAPM_MUX("ADCR Mux", WM8994_POWER_MANAGEMENT_4, 0, 0, &adcr_mux), 1534 1535 SND_SOC_DAPM_MUX("Left Headphone Mux", SND_SOC_NOPM, 0, 0, &hpl_mux), 1536 SND_SOC_DAPM_MUX("Right Headphone Mux", SND_SOC_NOPM, 0, 0, &hpr_mux), ··· 3309 if (wm8994->revision < 4) { 3310 snd_soc_dapm_new_controls(dapm, wm8994_lateclk_revd_widgets, 3311 ARRAY_SIZE(wm8994_lateclk_revd_widgets)); 3312 snd_soc_dapm_new_controls(dapm, wm8994_dac_revd_widgets, 3313 ARRAY_SIZE(wm8994_dac_revd_widgets)); 3314 } else { 3315 snd_soc_dapm_new_controls(dapm, wm8994_lateclk_widgets, 3316 ARRAY_SIZE(wm8994_lateclk_widgets)); 3317 snd_soc_dapm_new_controls(dapm, wm8994_dac_widgets, 3318 ARRAY_SIZE(wm8994_dac_widgets)); 3319 }
··· 110 111 unsigned int aif1clk_enable:1; 112 unsigned int aif2clk_enable:1; 113 + 114 + unsigned int aif1clk_disable:1; 115 + unsigned int aif2clk_disable:1; 116 }; 117 118 static int wm8994_readable(unsigned int reg) ··· 1015 1016 switch (event) { 1017 case SND_SOC_DAPM_PRE_PMU: 1018 + if (wm8994->aif1clk_enable) { 1019 snd_soc_update_bits(codec, WM8994_AIF1_CLOCKING_1, 1020 WM8994_AIF1CLK_ENA_MASK, 1021 WM8994_AIF1CLK_ENA); 1022 + wm8994->aif1clk_enable = 0; 1023 + } 1024 + if (wm8994->aif2clk_enable) { 1025 snd_soc_update_bits(codec, WM8994_AIF2_CLOCKING_1, 1026 WM8994_AIF2CLK_ENA_MASK, 1027 WM8994_AIF2CLK_ENA); 1028 + wm8994->aif2clk_enable = 0; 1029 + } 1030 break; 1031 } 1032 ··· 1037 1038 switch (event) { 1039 case SND_SOC_DAPM_POST_PMD: 1040 + if (wm8994->aif1clk_disable) { 1041 snd_soc_update_bits(codec, WM8994_AIF1_CLOCKING_1, 1042 WM8994_AIF1CLK_ENA_MASK, 0); 1043 + wm8994->aif1clk_disable = 0; 1044 } 1045 + if (wm8994->aif2clk_disable) { 1046 snd_soc_update_bits(codec, WM8994_AIF2_CLOCKING_1, 1047 WM8994_AIF2CLK_ENA_MASK, 0); 1048 + wm8994->aif2clk_disable = 0; 1049 } 1050 break; 1051 } ··· 1063 case SND_SOC_DAPM_PRE_PMU: 1064 wm8994->aif1clk_enable = 1; 1065 break; 1066 + case SND_SOC_DAPM_POST_PMD: 1067 + wm8994->aif1clk_disable = 1; 1068 + break; 1069 } 1070 1071 return 0; ··· 1078 case SND_SOC_DAPM_PRE_PMU: 1079 wm8994->aif2clk_enable = 1; 1080 break; 1081 + case SND_SOC_DAPM_POST_PMD: 1082 + wm8994->aif2clk_disable = 1; 1083 + break; 1084 } 1085 1086 + return 0; 1087 + } 1088 + 1089 + static int adc_mux_ev(struct snd_soc_dapm_widget *w, 1090 + struct snd_kcontrol *kcontrol, int event) 1091 + { 1092 + late_enable_ev(w, kcontrol, event); 1093 return 0; 1094 } 1095 ··· 1403 SND_SOC_DAPM_DAC("DAC1R", NULL, WM8994_POWER_MANAGEMENT_5, 0, 0), 1404 }; 1405 1406 + static const struct snd_soc_dapm_widget wm8994_adc_revd_widgets[] = { 1407 + SND_SOC_DAPM_MUX_E("ADCL Mux", WM8994_POWER_MANAGEMENT_4, 1, 0, &adcl_mux, 1408 + adc_mux_ev, SND_SOC_DAPM_PRE_PMU), 1409 + SND_SOC_DAPM_MUX_E("ADCR Mux", WM8994_POWER_MANAGEMENT_4, 0, 0, &adcr_mux, 1410 + adc_mux_ev, SND_SOC_DAPM_PRE_PMU), 1411 + }; 1412 + 1413 + static const struct snd_soc_dapm_widget wm8994_adc_widgets[] = { 1414 + SND_SOC_DAPM_MUX("ADCL Mux", WM8994_POWER_MANAGEMENT_4, 1, 0, &adcl_mux), 1415 + SND_SOC_DAPM_MUX("ADCR Mux", WM8994_POWER_MANAGEMENT_4, 0, 0, &adcr_mux), 1416 + }; 1417 + 1418 static const struct snd_soc_dapm_widget wm8994_dapm_widgets[] = { 1419 SND_SOC_DAPM_INPUT("DMIC1DAT"), 1420 SND_SOC_DAPM_INPUT("DMIC2DAT"), ··· 1496 */ 1497 SND_SOC_DAPM_ADC("ADCL", NULL, SND_SOC_NOPM, 1, 0), 1498 SND_SOC_DAPM_ADC("ADCR", NULL, SND_SOC_NOPM, 0, 0), 1499 1500 SND_SOC_DAPM_MUX("Left Headphone Mux", SND_SOC_NOPM, 0, 0, &hpl_mux), 1501 SND_SOC_DAPM_MUX("Right Headphone Mux", SND_SOC_NOPM, 0, 0, &hpr_mux), ··· 3280 if (wm8994->revision < 4) { 3281 snd_soc_dapm_new_controls(dapm, wm8994_lateclk_revd_widgets, 3282 ARRAY_SIZE(wm8994_lateclk_revd_widgets)); 3283 + snd_soc_dapm_new_controls(dapm, wm8994_adc_revd_widgets, 3284 + ARRAY_SIZE(wm8994_adc_revd_widgets)); 3285 snd_soc_dapm_new_controls(dapm, wm8994_dac_revd_widgets, 3286 ARRAY_SIZE(wm8994_dac_revd_widgets)); 3287 } else { 3288 snd_soc_dapm_new_controls(dapm, wm8994_lateclk_widgets, 3289 ARRAY_SIZE(wm8994_lateclk_widgets)); 3290 + snd_soc_dapm_new_controls(dapm, wm8994_adc_widgets, 3291 + ARRAY_SIZE(wm8994_adc_widgets)); 3292 snd_soc_dapm_new_controls(dapm, wm8994_dac_widgets, 3293 ARRAY_SIZE(wm8994_dac_widgets)); 3294 }
+5
sound/soc/codecs/wm9081.c
··· 15 #include <linux/moduleparam.h> 16 #include <linux/init.h> 17 #include <linux/delay.h> 18 #include <linux/pm.h> 19 #include <linux/i2c.h> 20 #include <linux/platform_device.h> ··· 1341 i2c_set_clientdata(i2c, wm9081); 1342 wm9081->control_type = SND_SOC_I2C; 1343 wm9081->control_data = i2c; 1344 1345 ret = snd_soc_register_codec(&i2c->dev, 1346 &soc_codec_dev_wm9081, &wm9081_dai, 1);
··· 15 #include <linux/moduleparam.h> 16 #include <linux/init.h> 17 #include <linux/delay.h> 18 + #include <linux/device.h> 19 #include <linux/pm.h> 20 #include <linux/i2c.h> 21 #include <linux/platform_device.h> ··· 1340 i2c_set_clientdata(i2c, wm9081); 1341 wm9081->control_type = SND_SOC_I2C; 1342 wm9081->control_data = i2c; 1343 + 1344 + if (dev_get_platdata(&i2c->dev)) 1345 + memcpy(&wm9081->retune, dev_get_platdata(&i2c->dev), 1346 + sizeof(wm9081->retune)); 1347 1348 ret = snd_soc_register_codec(&i2c->dev, 1349 &soc_codec_dev_wm9081, &wm9081_dai, 1);