Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6:
ALSA: hda - Don't set to D3 in Cirrus errata init verbs
ALSA: hda - add new Fermi 5xx codec IDs to snd-hda
ASoC: WM8994: Ensure late enable events are processed for the ADCs
ASoC: WM8994: Don't disable the AIF[1|2]CLK_ENA unconditionaly
ASoC: Fix WM9081 platform data initialisation
ALSA: hda - Fix unable to record issue on ASUS N82JV
ALSA: HDA: Realtek: Fixup jack detection to input subsystem

+57 -15
+2
sound/pci/hda/patch_cirrus.c
··· 1039 1039 {0x11, AC_VERB_SET_PROC_COEF, 0x0008}, 1040 1040 {0x11, AC_VERB_SET_PROC_STATE, 0x00}, 1041 1041 1042 + #if 0 /* Don't to set to D3 as we are in power-up sequence */ 1042 1043 {0x07, AC_VERB_SET_POWER_STATE, 0x03}, /* S/PDIF Rx: D3 */ 1043 1044 {0x08, AC_VERB_SET_POWER_STATE, 0x03}, /* S/PDIF Tx: D3 */ 1044 1045 /*{0x01, AC_VERB_SET_POWER_STATE, 0x03},*/ /* AFG: D3 This is already handled */ 1046 + #endif 1045 1047 1046 1048 {} /* terminator */ 1047 1049 };
+5
sound/pci/hda/patch_hdmi.c
··· 1634 1634 { .id = 0x10de0012, .name = "GPU 12 HDMI/DP", .patch = patch_nvhdmi_8ch_89 }, 1635 1635 { .id = 0x10de0013, .name = "GPU 13 HDMI/DP", .patch = patch_nvhdmi_8ch_89 }, 1636 1636 { .id = 0x10de0014, .name = "GPU 14 HDMI/DP", .patch = patch_nvhdmi_8ch_89 }, 1637 + { .id = 0x10de0015, .name = "GPU 15 HDMI/DP", .patch = patch_nvhdmi_8ch_89 }, 1638 + { .id = 0x10de0016, .name = "GPU 16 HDMI/DP", .patch = patch_nvhdmi_8ch_89 }, 1639 + /* 17 is known to be absent */ 1637 1640 { .id = 0x10de0018, .name = "GPU 18 HDMI/DP", .patch = patch_nvhdmi_8ch_89 }, 1638 1641 { .id = 0x10de0019, .name = "GPU 19 HDMI/DP", .patch = patch_nvhdmi_8ch_89 }, 1639 1642 { .id = 0x10de001a, .name = "GPU 1a HDMI/DP", .patch = patch_nvhdmi_8ch_89 }, ··· 1679 1676 MODULE_ALIAS("snd-hda-codec-id:10de0012"); 1680 1677 MODULE_ALIAS("snd-hda-codec-id:10de0013"); 1681 1678 MODULE_ALIAS("snd-hda-codec-id:10de0014"); 1679 + MODULE_ALIAS("snd-hda-codec-id:10de0015"); 1680 + MODULE_ALIAS("snd-hda-codec-id:10de0016"); 1682 1681 MODULE_ALIAS("snd-hda-codec-id:10de0018"); 1683 1682 MODULE_ALIAS("snd-hda-codec-id:10de0019"); 1684 1683 MODULE_ALIAS("snd-hda-codec-id:10de001a");
+3 -6
sound/pci/hda/patch_realtek.c
··· 1133 1133 nid = spec->autocfg.hp_pins[i]; 1134 1134 if (!nid) 1135 1135 break; 1136 - if (snd_hda_jack_detect(codec, nid)) { 1137 - spec->jack_present = 1; 1138 - break; 1139 - } 1140 - alc_report_jack(codec, spec->autocfg.hp_pins[i]); 1136 + alc_report_jack(codec, nid); 1137 + spec->jack_present |= snd_hda_jack_detect(codec, nid); 1141 1138 } 1142 1139 1143 1140 mute = spec->jack_present ? HDA_AMP_MUTE : 0; ··· 15012 15015 SND_PCI_QUIRK(0x1043, 0x11e3, "ASUS U33Jc", ALC269VB_AMIC), 15013 15016 SND_PCI_QUIRK(0x1043, 0x1273, "ASUS UL80Jt", ALC269VB_AMIC), 15014 15017 SND_PCI_QUIRK(0x1043, 0x1283, "ASUS U53Jc", ALC269_AMIC), 15015 - SND_PCI_QUIRK(0x1043, 0x12b3, "ASUS N82Jv", ALC269_AMIC), 15018 + SND_PCI_QUIRK(0x1043, 0x12b3, "ASUS N82JV", ALC269VB_AMIC), 15016 15019 SND_PCI_QUIRK(0x1043, 0x12d3, "ASUS N61Jv", ALC269_AMIC), 15017 15020 SND_PCI_QUIRK(0x1043, 0x13a3, "ASUS UL30Vt", ALC269_AMIC), 15018 15021 SND_PCI_QUIRK(0x1043, 0x1373, "ASUS G73JX", ALC269_AMIC),
+42 -9
sound/soc/codecs/wm8994.c
··· 110 110 111 111 unsigned int aif1clk_enable:1; 112 112 unsigned int aif2clk_enable:1; 113 + 114 + unsigned int aif1clk_disable:1; 115 + unsigned int aif2clk_disable:1; 113 116 }; 114 117 115 118 static int wm8994_readable(unsigned int reg) ··· 1018 1015 1019 1016 switch (event) { 1020 1017 case SND_SOC_DAPM_PRE_PMU: 1021 - if (wm8994->aif1clk_enable) 1018 + if (wm8994->aif1clk_enable) { 1022 1019 snd_soc_update_bits(codec, WM8994_AIF1_CLOCKING_1, 1023 1020 WM8994_AIF1CLK_ENA_MASK, 1024 1021 WM8994_AIF1CLK_ENA); 1025 - if (wm8994->aif2clk_enable) 1022 + wm8994->aif1clk_enable = 0; 1023 + } 1024 + if (wm8994->aif2clk_enable) { 1026 1025 snd_soc_update_bits(codec, WM8994_AIF2_CLOCKING_1, 1027 1026 WM8994_AIF2CLK_ENA_MASK, 1028 1027 WM8994_AIF2CLK_ENA); 1028 + wm8994->aif2clk_enable = 0; 1029 + } 1029 1030 break; 1030 1031 } 1031 1032 ··· 1044 1037 1045 1038 switch (event) { 1046 1039 case SND_SOC_DAPM_POST_PMD: 1047 - if (wm8994->aif1clk_enable) { 1040 + if (wm8994->aif1clk_disable) { 1048 1041 snd_soc_update_bits(codec, WM8994_AIF1_CLOCKING_1, 1049 1042 WM8994_AIF1CLK_ENA_MASK, 0); 1050 - wm8994->aif1clk_enable = 0; 1043 + wm8994->aif1clk_disable = 0; 1051 1044 } 1052 - if (wm8994->aif2clk_enable) { 1045 + if (wm8994->aif2clk_disable) { 1053 1046 snd_soc_update_bits(codec, WM8994_AIF2_CLOCKING_1, 1054 1047 WM8994_AIF2CLK_ENA_MASK, 0); 1055 - wm8994->aif2clk_enable = 0; 1048 + wm8994->aif2clk_disable = 0; 1056 1049 } 1057 1050 break; 1058 1051 } ··· 1070 1063 case SND_SOC_DAPM_PRE_PMU: 1071 1064 wm8994->aif1clk_enable = 1; 1072 1065 break; 1066 + case SND_SOC_DAPM_POST_PMD: 1067 + wm8994->aif1clk_disable = 1; 1068 + break; 1073 1069 } 1074 1070 1075 1071 return 0; ··· 1088 1078 case SND_SOC_DAPM_PRE_PMU: 1089 1079 wm8994->aif2clk_enable = 1; 1090 1080 break; 1081 + case SND_SOC_DAPM_POST_PMD: 1082 + wm8994->aif2clk_disable = 1; 1083 + break; 1091 1084 } 1092 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 1093 return 0; 1094 1094 } 1095 1095 ··· 1423 1403 SND_SOC_DAPM_DAC("DAC1R", NULL, WM8994_POWER_MANAGEMENT_5, 0, 0), 1424 1404 }; 1425 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 + 1426 1418 static const struct snd_soc_dapm_widget wm8994_dapm_widgets[] = { 1427 1419 SND_SOC_DAPM_INPUT("DMIC1DAT"), 1428 1420 SND_SOC_DAPM_INPUT("DMIC2DAT"), ··· 1528 1496 */ 1529 1497 SND_SOC_DAPM_ADC("ADCL", NULL, SND_SOC_NOPM, 1, 0), 1530 1498 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 1499 1535 1500 SND_SOC_DAPM_MUX("Left Headphone Mux", SND_SOC_NOPM, 0, 0, &hpl_mux), 1536 1501 SND_SOC_DAPM_MUX("Right Headphone Mux", SND_SOC_NOPM, 0, 0, &hpr_mux), ··· 3309 3280 if (wm8994->revision < 4) { 3310 3281 snd_soc_dapm_new_controls(dapm, wm8994_lateclk_revd_widgets, 3311 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)); 3312 3285 snd_soc_dapm_new_controls(dapm, wm8994_dac_revd_widgets, 3313 3286 ARRAY_SIZE(wm8994_dac_revd_widgets)); 3314 3287 } else { 3315 3288 snd_soc_dapm_new_controls(dapm, wm8994_lateclk_widgets, 3316 3289 ARRAY_SIZE(wm8994_lateclk_widgets)); 3290 + snd_soc_dapm_new_controls(dapm, wm8994_adc_widgets, 3291 + ARRAY_SIZE(wm8994_adc_widgets)); 3317 3292 snd_soc_dapm_new_controls(dapm, wm8994_dac_widgets, 3318 3293 ARRAY_SIZE(wm8994_dac_widgets)); 3319 3294 }
+5
sound/soc/codecs/wm9081.c
··· 15 15 #include <linux/moduleparam.h> 16 16 #include <linux/init.h> 17 17 #include <linux/delay.h> 18 + #include <linux/device.h> 18 19 #include <linux/pm.h> 19 20 #include <linux/i2c.h> 20 21 #include <linux/platform_device.h> ··· 1341 1340 i2c_set_clientdata(i2c, wm9081); 1342 1341 wm9081->control_type = SND_SOC_I2C; 1343 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)); 1344 1347 1345 1348 ret = snd_soc_register_codec(&i2c->dev, 1346 1349 &soc_codec_dev_wm9081, &wm9081_dai, 1);