aboutsummaryrefslogtreecommitdiffstats
path: root/sound/pci/hda/patch_realtek.c
diff options
context:
space:
mode:
authorIngo Molnar <mingo@kernel.org>2015-06-02 02:05:42 -0400
committerIngo Molnar <mingo@kernel.org>2015-06-02 02:05:42 -0400
commitf407a8258610169cd8e975dba7f0b2824562014c (patch)
tree6c87b2d168a4665411a9e16b9f481599f2db25bc /sound/pci/hda/patch_realtek.c
parent960d447b94b22ceba286917056871d1dac8da697 (diff)
parentc46a024ea5eb0165114dbbc8c82c29b7bcf66e71 (diff)
Merge branch 'linus' into sched/core, to resolve conflict
Conflicts: arch/sparc/include/asm/topology_64.h Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'sound/pci/hda/patch_realtek.c')
-rw-r--r--sound/pci/hda/patch_realtek.c66
1 files changed, 63 insertions, 3 deletions
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
index e2afd53cc14c..464168426465 100644
--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -883,6 +883,8 @@ static struct alc_codec_rename_pci_table rename_pci_tbl[] = {
883 { 0x10ec0668, 0x1028, 0, "ALC3661" }, 883 { 0x10ec0668, 0x1028, 0, "ALC3661" },
884 { 0x10ec0275, 0x1028, 0, "ALC3260" }, 884 { 0x10ec0275, 0x1028, 0, "ALC3260" },
885 { 0x10ec0899, 0x1028, 0, "ALC3861" }, 885 { 0x10ec0899, 0x1028, 0, "ALC3861" },
886 { 0x10ec0298, 0x1028, 0, "ALC3266" },
887 { 0x10ec0256, 0x1028, 0, "ALC3246" },
886 { 0x10ec0670, 0x1025, 0, "ALC669X" }, 888 { 0x10ec0670, 0x1025, 0, "ALC669X" },
887 { 0x10ec0676, 0x1025, 0, "ALC679X" }, 889 { 0x10ec0676, 0x1025, 0, "ALC679X" },
888 { 0x10ec0282, 0x1043, 0, "ALC3229" }, 890 { 0x10ec0282, 0x1043, 0, "ALC3229" },
@@ -3673,6 +3675,10 @@ static void alc_headset_mode_mic_in(struct hda_codec *codec, hda_nid_t hp_pin,
3673 alc_process_coef_fw(codec, coef0293); 3675 alc_process_coef_fw(codec, coef0293);
3674 snd_hda_set_pin_ctl_cache(codec, mic_pin, PIN_VREF50); 3676 snd_hda_set_pin_ctl_cache(codec, mic_pin, PIN_VREF50);
3675 break; 3677 break;
3678 case 0x10ec0662:
3679 snd_hda_set_pin_ctl_cache(codec, hp_pin, 0);
3680 snd_hda_set_pin_ctl_cache(codec, mic_pin, PIN_VREF50);
3681 break;
3676 case 0x10ec0668: 3682 case 0x10ec0668:
3677 alc_write_coef_idx(codec, 0x11, 0x0001); 3683 alc_write_coef_idx(codec, 0x11, 0x0001);
3678 snd_hda_set_pin_ctl_cache(codec, hp_pin, 0); 3684 snd_hda_set_pin_ctl_cache(codec, hp_pin, 0);
@@ -3738,7 +3744,6 @@ static void alc_headset_mode_default(struct hda_codec *codec)
3738 case 0x10ec0288: 3744 case 0x10ec0288:
3739 alc_process_coef_fw(codec, coef0288); 3745 alc_process_coef_fw(codec, coef0288);
3740 break; 3746 break;
3741 break;
3742 case 0x10ec0292: 3747 case 0x10ec0292:
3743 alc_process_coef_fw(codec, coef0292); 3748 alc_process_coef_fw(codec, coef0292);
3744 break; 3749 break;
@@ -4012,7 +4017,7 @@ static void alc_update_headset_mode(struct hda_codec *codec)
4012 if (new_headset_mode != ALC_HEADSET_MODE_MIC) { 4017 if (new_headset_mode != ALC_HEADSET_MODE_MIC) {
4013 snd_hda_set_pin_ctl_cache(codec, hp_pin, 4018 snd_hda_set_pin_ctl_cache(codec, hp_pin,
4014 AC_PINCTL_OUT_EN | AC_PINCTL_HP_EN); 4019 AC_PINCTL_OUT_EN | AC_PINCTL_HP_EN);
4015 if (spec->headphone_mic_pin) 4020 if (spec->headphone_mic_pin && spec->headphone_mic_pin != hp_pin)
4016 snd_hda_set_pin_ctl_cache(codec, spec->headphone_mic_pin, 4021 snd_hda_set_pin_ctl_cache(codec, spec->headphone_mic_pin,
4017 PIN_VREFHIZ); 4022 PIN_VREFHIZ);
4018 } 4023 }
@@ -4215,6 +4220,23 @@ static void alc_fixup_dell_xps13(struct hda_codec *codec,
4215 } 4220 }
4216} 4221}
4217 4222
4223static void alc_fixup_headset_mode_alc662(struct hda_codec *codec,
4224 const struct hda_fixup *fix, int action)
4225{
4226 struct alc_spec *spec = codec->spec;
4227
4228 if (action == HDA_FIXUP_ACT_PRE_PROBE) {
4229 spec->parse_flags |= HDA_PINCFG_HEADSET_MIC;
4230 spec->gen.hp_mic = 1; /* Mic-in is same pin as headphone */
4231
4232 /* Disable boost for mic-in permanently. (This code is only called
4233 from quirks that guarantee that the headphone is at NID 0x1b.) */
4234 snd_hda_codec_write(codec, 0x1b, 0, AC_VERB_SET_AMP_GAIN_MUTE, 0x7000);
4235 snd_hda_override_wcaps(codec, 0x1b, get_wcaps(codec, 0x1b) & ~AC_WCAP_IN_AMP);
4236 } else
4237 alc_fixup_headset_mode(codec, fix, action);
4238}
4239
4218static void alc_fixup_headset_mode_alc668(struct hda_codec *codec, 4240static void alc_fixup_headset_mode_alc668(struct hda_codec *codec,
4219 const struct hda_fixup *fix, int action) 4241 const struct hda_fixup *fix, int action)
4220{ 4242{
@@ -5119,6 +5141,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
5119 SND_PCI_QUIRK(0x104d, 0x9099, "Sony VAIO S13", ALC275_FIXUP_SONY_DISABLE_AAMIX), 5141 SND_PCI_QUIRK(0x104d, 0x9099, "Sony VAIO S13", ALC275_FIXUP_SONY_DISABLE_AAMIX),
5120 SND_PCI_QUIRK(0x10cf, 0x1475, "Lifebook", ALC269_FIXUP_LIFEBOOK), 5142 SND_PCI_QUIRK(0x10cf, 0x1475, "Lifebook", ALC269_FIXUP_LIFEBOOK),
5121 SND_PCI_QUIRK(0x10cf, 0x15dc, "Lifebook T731", ALC269_FIXUP_LIFEBOOK_HP_PIN), 5143 SND_PCI_QUIRK(0x10cf, 0x15dc, "Lifebook T731", ALC269_FIXUP_LIFEBOOK_HP_PIN),
5144 SND_PCI_QUIRK(0x10cf, 0x1757, "Lifebook E752", ALC269_FIXUP_LIFEBOOK_HP_PIN),
5122 SND_PCI_QUIRK(0x10cf, 0x1845, "Lifebook U904", ALC269_FIXUP_LIFEBOOK_EXTMIC), 5145 SND_PCI_QUIRK(0x10cf, 0x1845, "Lifebook U904", ALC269_FIXUP_LIFEBOOK_EXTMIC),
5123 SND_PCI_QUIRK(0x144d, 0xc109, "Samsung Ativ book 9 (NP900X3G)", ALC269_FIXUP_INV_DMIC), 5146 SND_PCI_QUIRK(0x144d, 0xc109, "Samsung Ativ book 9 (NP900X3G)", ALC269_FIXUP_INV_DMIC),
5124 SND_PCI_QUIRK(0x1458, 0xfa53, "Gigabyte BXBT-2807", ALC283_FIXUP_BXBT2807_MIC), 5147 SND_PCI_QUIRK(0x1458, 0xfa53, "Gigabyte BXBT-2807", ALC283_FIXUP_BXBT2807_MIC),
@@ -5148,6 +5171,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
5148 SND_PCI_QUIRK(0x17aa, 0x5026, "Thinkpad", ALC269_FIXUP_LIMIT_INT_MIC_BOOST), 5171 SND_PCI_QUIRK(0x17aa, 0x5026, "Thinkpad", ALC269_FIXUP_LIMIT_INT_MIC_BOOST),
5149 SND_PCI_QUIRK(0x17aa, 0x5034, "Thinkpad T450", ALC292_FIXUP_TPT440_DOCK), 5172 SND_PCI_QUIRK(0x17aa, 0x5034, "Thinkpad T450", ALC292_FIXUP_TPT440_DOCK),
5150 SND_PCI_QUIRK(0x17aa, 0x5036, "Thinkpad T450s", ALC292_FIXUP_TPT440_DOCK), 5173 SND_PCI_QUIRK(0x17aa, 0x5036, "Thinkpad T450s", ALC292_FIXUP_TPT440_DOCK),
5174 SND_PCI_QUIRK(0x17aa, 0x503c, "Thinkpad L450", ALC292_FIXUP_TPT440_DOCK),
5151 SND_PCI_QUIRK(0x17aa, 0x5109, "Thinkpad", ALC269_FIXUP_LIMIT_INT_MIC_BOOST), 5175 SND_PCI_QUIRK(0x17aa, 0x5109, "Thinkpad", ALC269_FIXUP_LIMIT_INT_MIC_BOOST),
5152 SND_PCI_QUIRK(0x17aa, 0x3bf8, "Quanta FL1", ALC269_FIXUP_PCM_44K), 5176 SND_PCI_QUIRK(0x17aa, 0x3bf8, "Quanta FL1", ALC269_FIXUP_PCM_44K),
5153 SND_PCI_QUIRK(0x17aa, 0x9e54, "LENOVO NB", ALC269_FIXUP_LENOVO_EAPD), 5177 SND_PCI_QUIRK(0x17aa, 0x9e54, "LENOVO NB", ALC269_FIXUP_LENOVO_EAPD),
@@ -5345,6 +5369,13 @@ static const struct snd_hda_pin_quirk alc269_pin_fixup_tbl[] = {
5345 {0x17, 0x40000000}, 5369 {0x17, 0x40000000},
5346 {0x1d, 0x40700001}, 5370 {0x1d, 0x40700001},
5347 {0x21, 0x02211050}), 5371 {0x21, 0x02211050}),
5372 SND_HDA_PIN_QUIRK(0x10ec0255, 0x1028, "Dell Inspiron 5548", ALC255_FIXUP_DELL1_MIC_NO_PRESENCE,
5373 ALC255_STANDARD_PINS,
5374 {0x12, 0x90a60180},
5375 {0x14, 0x90170130},
5376 {0x17, 0x40000000},
5377 {0x1d, 0x40700001},
5378 {0x21, 0x02211040}),
5348 SND_HDA_PIN_QUIRK(0x10ec0256, 0x1028, "Dell", ALC255_FIXUP_DELL1_MIC_NO_PRESENCE, 5379 SND_HDA_PIN_QUIRK(0x10ec0256, 0x1028, "Dell", ALC255_FIXUP_DELL1_MIC_NO_PRESENCE,
5349 ALC256_STANDARD_PINS, 5380 ALC256_STANDARD_PINS,
5350 {0x13, 0x40000000}), 5381 {0x13, 0x40000000}),
@@ -5598,7 +5629,8 @@ static int patch_alc269(struct hda_codec *codec)
5598 5629
5599 spec = codec->spec; 5630 spec = codec->spec;
5600 spec->gen.shared_mic_vref_pin = 0x18; 5631 spec->gen.shared_mic_vref_pin = 0x18;
5601 codec->power_save_node = 1; 5632 if (codec->core.vendor_id != 0x10ec0292)
5633 codec->power_save_node = 1;
5602 5634
5603 snd_hda_pick_fixup(codec, alc269_fixup_models, 5635 snd_hda_pick_fixup(codec, alc269_fixup_models,
5604 alc269_fixup_tbl, alc269_fixups); 5636 alc269_fixup_tbl, alc269_fixups);
@@ -6079,7 +6111,9 @@ enum {
6079 ALC662_FIXUP_NO_JACK_DETECT, 6111 ALC662_FIXUP_NO_JACK_DETECT,
6080 ALC662_FIXUP_ZOTAC_Z68, 6112 ALC662_FIXUP_ZOTAC_Z68,
6081 ALC662_FIXUP_INV_DMIC, 6113 ALC662_FIXUP_INV_DMIC,
6114 ALC662_FIXUP_DELL_MIC_NO_PRESENCE,
6082 ALC668_FIXUP_DELL_MIC_NO_PRESENCE, 6115 ALC668_FIXUP_DELL_MIC_NO_PRESENCE,
6116 ALC662_FIXUP_HEADSET_MODE,
6083 ALC668_FIXUP_HEADSET_MODE, 6117 ALC668_FIXUP_HEADSET_MODE,
6084 ALC662_FIXUP_BASS_MODE4_CHMAP, 6118 ALC662_FIXUP_BASS_MODE4_CHMAP,
6085 ALC662_FIXUP_BASS_16, 6119 ALC662_FIXUP_BASS_16,
@@ -6272,6 +6306,20 @@ static const struct hda_fixup alc662_fixups[] = {
6272 .chained = true, 6306 .chained = true,
6273 .chain_id = ALC668_FIXUP_DELL_MIC_NO_PRESENCE 6307 .chain_id = ALC668_FIXUP_DELL_MIC_NO_PRESENCE
6274 }, 6308 },
6309 [ALC662_FIXUP_DELL_MIC_NO_PRESENCE] = {
6310 .type = HDA_FIXUP_PINS,
6311 .v.pins = (const struct hda_pintbl[]) {
6312 { 0x19, 0x03a1113c }, /* use as headset mic, without its own jack detect */
6313 /* headphone mic by setting pin control of 0x1b (headphone out) to in + vref_50 */
6314 { }
6315 },
6316 .chained = true,
6317 .chain_id = ALC662_FIXUP_HEADSET_MODE
6318 },
6319 [ALC662_FIXUP_HEADSET_MODE] = {
6320 .type = HDA_FIXUP_FUNC,
6321 .v.func = alc_fixup_headset_mode_alc662,
6322 },
6275 [ALC668_FIXUP_DELL_MIC_NO_PRESENCE] = { 6323 [ALC668_FIXUP_DELL_MIC_NO_PRESENCE] = {
6276 .type = HDA_FIXUP_PINS, 6324 .type = HDA_FIXUP_PINS,
6277 .v.pins = (const struct hda_pintbl[]) { 6325 .v.pins = (const struct hda_pintbl[]) {
@@ -6423,6 +6471,18 @@ static const struct hda_model_fixup alc662_fixup_models[] = {
6423}; 6471};
6424 6472
6425static const struct snd_hda_pin_quirk alc662_pin_fixup_tbl[] = { 6473static const struct snd_hda_pin_quirk alc662_pin_fixup_tbl[] = {
6474 SND_HDA_PIN_QUIRK(0x10ec0662, 0x1028, "Dell", ALC662_FIXUP_DELL_MIC_NO_PRESENCE,
6475 {0x12, 0x4004c000},
6476 {0x14, 0x01014010},
6477 {0x15, 0x411111f0},
6478 {0x16, 0x411111f0},
6479 {0x18, 0x01a19020},
6480 {0x19, 0x411111f0},
6481 {0x1a, 0x0181302f},
6482 {0x1b, 0x0221401f},
6483 {0x1c, 0x411111f0},
6484 {0x1d, 0x4054c601},
6485 {0x1e, 0x411111f0}),
6426 SND_HDA_PIN_QUIRK(0x10ec0668, 0x1028, "Dell", ALC668_FIXUP_AUTO_MUTE, 6486 SND_HDA_PIN_QUIRK(0x10ec0668, 0x1028, "Dell", ALC668_FIXUP_AUTO_MUTE,
6427 {0x12, 0x99a30130}, 6487 {0x12, 0x99a30130},
6428 {0x14, 0x90170110}, 6488 {0x14, 0x90170110},