diff options
-rw-r--r-- | sound/pci/hda/patch_realtek.c | 38 |
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 | ||
3605 | static void alc283_chromebook_caps(struct hda_codec *codec) | ||
3606 | { | ||
3607 | snd_hda_override_wcaps(codec, 0x03, 0); | ||
3608 | } | ||
3609 | |||
3610 | static void alc283_fixup_chromebook(struct hda_codec *codec, | 3605 | static 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 | |||
3626 | static 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 | ||