aboutsummaryrefslogtreecommitdiffstats
path: root/sound/pci/hda
diff options
context:
space:
mode:
authorKailang Yang <kailang@realtek.com>2013-12-02 02:20:15 -0500
committerTakashi Iwai <tiwai@suse.de>2013-12-03 03:27:23 -0500
commit0202e99c6910b9908808485c6858e8d475d052dd (patch)
treed28c2aef860d9b3743e9879d954a2f59ed710f2d /sound/pci/hda
parentd59915d0655c5864b514f21daaeac98c047875dc (diff)
ALSA: hda/realtek - Independent of model for HP
Create single model for HP. The headset jack module was difference between other chrome book. It need to manual control Mic jack detect. Chrome OS loaded driver by models. Remove old assigned fixup table from ALC269 fixup list entry. Signed-off-by: Kailang Yang <kailang@realtek.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/pci/hda')
-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