aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sound/pci/hda/patch_realtek.c38
1 files changed, 28 insertions, 10 deletions
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
index 1ad079cc0452..ba2b982b47ea 100644
--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -3602,11 +3602,6 @@ static void alc283_hp_automute_hook(struct hda_codec *codec,
3602 vref); 3602 vref);
3603} 3603}
3604 3604
3605static void alc283_chromebook_caps(struct hda_codec *codec)
3606{
3607 snd_hda_override_wcaps(codec, 0x03, 0);
3608}
3609
3610static void alc283_fixup_chromebook(struct hda_codec *codec, 3605static void alc283_fixup_chromebook(struct hda_codec *codec,
3611 const struct hda_fixup *fix, int action) 3606 const struct hda_fixup *fix, int action)
3612{ 3607{
@@ -3615,19 +3610,34 @@ static void alc283_fixup_chromebook(struct hda_codec *codec,
3615 3610
3616 switch (action) { 3611 switch (action) {
3617 case HDA_FIXUP_ACT_PRE_PROBE: 3612 case HDA_FIXUP_ACT_PRE_PROBE:
3618 alc283_chromebook_caps(codec); 3613 snd_hda_override_wcaps(codec, 0x03, 0);
3619 /* Disable AA-loopback as it causes white noise */ 3614 /* Disable AA-loopback as it causes white noise */
3620 spec->gen.mixer_nid = 0; 3615 spec->gen.mixer_nid = 0;
3621 spec->gen.hp_automute_hook = alc283_hp_automute_hook; 3616 spec->gen.hp_automute_hook = alc283_hp_automute_hook;
3622 break; 3617 break;
3623 case HDA_FIXUP_ACT_INIT: 3618 case HDA_FIXUP_ACT_INIT:
3619 /* Enable Line1 input control by verb */
3620 val = alc_read_coef_idx(codec, 0x1a);
3621 alc_write_coef_idx(codec, 0x1a, val | (1 << 4));
3622 break;
3623 }
3624}
3625
3626static void alc283_fixup_sense_combo_jack(struct hda_codec *codec,
3627 const struct hda_fixup *fix, int action)
3628{
3629 struct alc_spec *spec = codec->spec;
3630 int val;
3631
3632 switch (action) {
3633 case HDA_FIXUP_ACT_PRE_PROBE:
3634 spec->gen.hp_automute_hook = alc283_hp_automute_hook;
3635 break;
3636 case HDA_FIXUP_ACT_INIT:
3624 /* MIC2-VREF control */ 3637 /* MIC2-VREF control */
3625 /* Set to manual mode */ 3638 /* Set to manual mode */
3626 val = alc_read_coef_idx(codec, 0x06); 3639 val = alc_read_coef_idx(codec, 0x06);
3627 alc_write_coef_idx(codec, 0x06, val & ~0x000c); 3640 alc_write_coef_idx(codec, 0x06, val & ~0x000c);
3628 /* Enable Line1 input control by verb */
3629 val = alc_read_coef_idx(codec, 0x1a);
3630 alc_write_coef_idx(codec, 0x1a, val | (1 << 4));
3631 break; 3641 break;
3632 } 3642 }
3633} 3643}
@@ -3823,6 +3833,7 @@ enum {
3823 ALC269_FIXUP_LIMIT_INT_MIC_BOOST_MUTE_LED, 3833 ALC269_FIXUP_LIMIT_INT_MIC_BOOST_MUTE_LED,
3824 ALC269VB_FIXUP_ORDISSIMO_EVE2, 3834 ALC269VB_FIXUP_ORDISSIMO_EVE2,
3825 ALC283_FIXUP_CHROME_BOOK, 3835 ALC283_FIXUP_CHROME_BOOK,
3836 ALC283_FIXUP_SENSE_COMBO_JACK,
3826 ALC282_FIXUP_ASUS_TX300, 3837 ALC282_FIXUP_ASUS_TX300,
3827 ALC283_FIXUP_INT_MIC, 3838 ALC283_FIXUP_INT_MIC,
3828 ALC290_FIXUP_MONO_SPEAKERS, 3839 ALC290_FIXUP_MONO_SPEAKERS,
@@ -4122,6 +4133,12 @@ static const struct hda_fixup alc269_fixups[] = {
4122 .type = HDA_FIXUP_FUNC, 4133 .type = HDA_FIXUP_FUNC,
4123 .v.func = alc283_fixup_chromebook, 4134 .v.func = alc283_fixup_chromebook,
4124 }, 4135 },
4136 [ALC283_FIXUP_SENSE_COMBO_JACK] = {
4137 .type = HDA_FIXUP_FUNC,
4138 .v.func = alc283_fixup_sense_combo_jack,
4139 .chained = true,
4140 .chain_id = ALC283_FIXUP_CHROME_BOOK,
4141 },
4125 [ALC282_FIXUP_ASUS_TX300] = { 4142 [ALC282_FIXUP_ASUS_TX300] = {
4126 .type = HDA_FIXUP_FUNC, 4143 .type = HDA_FIXUP_FUNC,
4127 .v.func = alc282_fixup_asus_tx300, 4144 .v.func = alc282_fixup_asus_tx300,
@@ -4213,7 +4230,6 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
4213 SND_PCI_QUIRK(0x103c, 0x1973, "HP Pavilion", ALC269_FIXUP_HP_MUTE_LED_MIC1), 4230 SND_PCI_QUIRK(0x103c, 0x1973, "HP Pavilion", ALC269_FIXUP_HP_MUTE_LED_MIC1),
4214 SND_PCI_QUIRK(0x103c, 0x1983, "HP Pavilion", ALC269_FIXUP_HP_MUTE_LED_MIC1), 4231 SND_PCI_QUIRK(0x103c, 0x1983, "HP Pavilion", ALC269_FIXUP_HP_MUTE_LED_MIC1),
4215 SND_PCI_QUIRK(0x103c, 0x218b, "HP", ALC269_FIXUP_LIMIT_INT_MIC_BOOST_MUTE_LED), 4232 SND_PCI_QUIRK(0x103c, 0x218b, "HP", ALC269_FIXUP_LIMIT_INT_MIC_BOOST_MUTE_LED),
4216 SND_PCI_QUIRK(0x103c, 0x21ed, "HP Falco Chromebook", ALC283_FIXUP_CHROME_BOOK),
4217 SND_PCI_QUIRK_VENDOR(0x103c, "HP", ALC269_FIXUP_HP_MUTE_LED), 4233 SND_PCI_QUIRK_VENDOR(0x103c, "HP", ALC269_FIXUP_HP_MUTE_LED),
4218 SND_PCI_QUIRK(0x1043, 0x103f, "ASUS TX300", ALC282_FIXUP_ASUS_TX300), 4234 SND_PCI_QUIRK(0x1043, 0x103f, "ASUS TX300", ALC282_FIXUP_ASUS_TX300),
4219 SND_PCI_QUIRK(0x1043, 0x106d, "Asus K53BE", ALC269_FIXUP_LIMIT_INT_MIC_BOOST), 4235 SND_PCI_QUIRK(0x1043, 0x106d, "Asus K53BE", ALC269_FIXUP_LIMIT_INT_MIC_BOOST),
@@ -4321,6 +4337,8 @@ static const struct hda_model_fixup alc269_fixup_models[] = {
4321 {.id = ALC269_FIXUP_HP_GPIO_LED, .name = "hp-gpio-led"}, 4337 {.id = ALC269_FIXUP_HP_GPIO_LED, .name = "hp-gpio-led"},
4322 {.id = ALC269_FIXUP_DELL1_MIC_NO_PRESENCE, .name = "dell-headset-multi"}, 4338 {.id = ALC269_FIXUP_DELL1_MIC_NO_PRESENCE, .name = "dell-headset-multi"},
4323 {.id = ALC269_FIXUP_DELL2_MIC_NO_PRESENCE, .name = "dell-headset-dock"}, 4339 {.id = ALC269_FIXUP_DELL2_MIC_NO_PRESENCE, .name = "dell-headset-dock"},
4340 {.id = ALC283_FIXUP_CHROME_BOOK, .name = "alc283-chrome"},
4341 {.id = ALC283_FIXUP_SENSE_COMBO_JACK, .name = "alc283-sense-combo"},
4324 {} 4342 {}
4325}; 4343};
4326 4344