diff options
Diffstat (limited to 'sound/pci/hda/patch_sigmatel.c')
-rw-r--r-- | sound/pci/hda/patch_sigmatel.c | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/sound/pci/hda/patch_sigmatel.c b/sound/pci/hda/patch_sigmatel.c index 27360d278bcf..fe91b9b46b61 100644 --- a/sound/pci/hda/patch_sigmatel.c +++ b/sound/pci/hda/patch_sigmatel.c | |||
@@ -49,6 +49,7 @@ enum { | |||
49 | STAC_9200_DELL_M25, | 49 | STAC_9200_DELL_M25, |
50 | STAC_9200_DELL_M26, | 50 | STAC_9200_DELL_M26, |
51 | STAC_9200_DELL_M27, | 51 | STAC_9200_DELL_M27, |
52 | STAC_9200_GATEWAY, | ||
52 | STAC_9200_MODELS | 53 | STAC_9200_MODELS |
53 | }; | 54 | }; |
54 | 55 | ||
@@ -378,6 +379,13 @@ static struct hda_verb stac9200_core_init[] = { | |||
378 | {} | 379 | {} |
379 | }; | 380 | }; |
380 | 381 | ||
382 | static struct hda_verb stac9200_eapd_init[] = { | ||
383 | /* set dac0mux for dac converter */ | ||
384 | {0x07, AC_VERB_SET_CONNECT_SEL, 0x00}, | ||
385 | {0x08, AC_VERB_SET_EAPD_BTLENABLE, 0x02}, | ||
386 | {} | ||
387 | }; | ||
388 | |||
381 | static struct hda_verb stac925x_core_init[] = { | 389 | static struct hda_verb stac925x_core_init[] = { |
382 | /* set dac0mux for dac converter */ | 390 | /* set dac0mux for dac converter */ |
383 | { 0x06, AC_VERB_SET_CONNECT_SEL, 0x00}, | 391 | { 0x06, AC_VERB_SET_CONNECT_SEL, 0x00}, |
@@ -693,6 +701,7 @@ static const char *stac9200_models[STAC_9200_MODELS] = { | |||
693 | [STAC_9200_DELL_M25] = "dell-m25", | 701 | [STAC_9200_DELL_M25] = "dell-m25", |
694 | [STAC_9200_DELL_M26] = "dell-m26", | 702 | [STAC_9200_DELL_M26] = "dell-m26", |
695 | [STAC_9200_DELL_M27] = "dell-m27", | 703 | [STAC_9200_DELL_M27] = "dell-m27", |
704 | [STAC_9200_GATEWAY] = "gateway", | ||
696 | }; | 705 | }; |
697 | 706 | ||
698 | static struct snd_pci_quirk stac9200_cfg_tbl[] = { | 707 | static struct snd_pci_quirk stac9200_cfg_tbl[] = { |
@@ -760,7 +769,12 @@ static struct snd_pci_quirk stac9200_cfg_tbl[] = { | |||
760 | "unknown Dell", STAC_9200_DELL_M26), | 769 | "unknown Dell", STAC_9200_DELL_M26), |
761 | /* Panasonic */ | 770 | /* Panasonic */ |
762 | SND_PCI_QUIRK(0x10f7, 0x8338, "Panasonic CF-74", STAC_REF), | 771 | SND_PCI_QUIRK(0x10f7, 0x8338, "Panasonic CF-74", STAC_REF), |
763 | 772 | /* Gateway machines needs EAPD to be set on resume */ | |
773 | SND_PCI_QUIRK(0x107b, 0x0205, "Gateway S-7110M", STAC_9200_GATEWAY), | ||
774 | SND_PCI_QUIRK(0x107b, 0x0317, "Gateway MT3423, MX341*", | ||
775 | STAC_9200_GATEWAY), | ||
776 | SND_PCI_QUIRK(0x107b, 0x0318, "Gateway ML3019, MT3707", | ||
777 | STAC_9200_GATEWAY), | ||
764 | {} /* terminator */ | 778 | {} /* terminator */ |
765 | }; | 779 | }; |
766 | 780 | ||
@@ -2492,7 +2506,10 @@ static int patch_stac9200(struct hda_codec *codec) | |||
2492 | spec->num_dmics = 0; | 2506 | spec->num_dmics = 0; |
2493 | spec->num_adcs = 1; | 2507 | spec->num_adcs = 1; |
2494 | 2508 | ||
2495 | spec->init = stac9200_core_init; | 2509 | if (spec->board_config == STAC_9200_GATEWAY) |
2510 | spec->init = stac9200_eapd_init; | ||
2511 | else | ||
2512 | spec->init = stac9200_core_init; | ||
2496 | spec->mixer = stac9200_mixer; | 2513 | spec->mixer = stac9200_mixer; |
2497 | 2514 | ||
2498 | err = stac9200_parse_auto_config(codec); | 2515 | err = stac9200_parse_auto_config(codec); |