diff options
author | Ingo Molnar <mingo@kernel.org> | 2015-06-02 02:05:42 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2015-06-02 02:05:42 -0400 |
commit | f407a8258610169cd8e975dba7f0b2824562014c (patch) | |
tree | 6c87b2d168a4665411a9e16b9f481599f2db25bc /sound/pci/hda/patch_realtek.c | |
parent | 960d447b94b22ceba286917056871d1dac8da697 (diff) | |
parent | c46a024ea5eb0165114dbbc8c82c29b7bcf66e71 (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.c | 66 |
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 | ||
4223 | static 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 | |||
4218 | static void alc_fixup_headset_mode_alc668(struct hda_codec *codec, | 4240 | static 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 | ||
6425 | static const struct snd_hda_pin_quirk alc662_pin_fixup_tbl[] = { | 6473 | static 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}, |