diff options
Diffstat (limited to 'sound')
-rw-r--r-- | sound/pci/hda/patch_sigmatel.c | 30 |
1 files changed, 28 insertions, 2 deletions
diff --git a/sound/pci/hda/patch_sigmatel.c b/sound/pci/hda/patch_sigmatel.c index a6a0a80edc3b..6e6818c8db18 100644 --- a/sound/pci/hda/patch_sigmatel.c +++ b/sound/pci/hda/patch_sigmatel.c | |||
@@ -51,6 +51,7 @@ enum { | |||
51 | STAC_925x_REF, | 51 | STAC_925x_REF, |
52 | STAC_M2_2, | 52 | STAC_M2_2, |
53 | STAC_MA6, | 53 | STAC_MA6, |
54 | STAC_PA6, | ||
54 | STAC_925x_MODELS | 55 | STAC_925x_MODELS |
55 | }; | 56 | }; |
56 | 57 | ||
@@ -152,6 +153,10 @@ static hda_nid_t stac925x_dac_nids[1] = { | |||
152 | 0x02, | 153 | 0x02, |
153 | }; | 154 | }; |
154 | 155 | ||
156 | static hda_nid_t stac925x_dmic_nids[1] = { | ||
157 | 0x15, | ||
158 | }; | ||
159 | |||
155 | static hda_nid_t stac922x_adc_nids[2] = { | 160 | static hda_nid_t stac922x_adc_nids[2] = { |
156 | 0x06, 0x07, | 161 | 0x06, 0x07, |
157 | }; | 162 | }; |
@@ -482,6 +487,11 @@ static unsigned int stac925x_MA6_pin_configs[8] = { | |||
482 | 0x90a70320, 0x90100211, 0x400003f1, 0x9033032e, | 487 | 0x90a70320, 0x90100211, 0x400003f1, 0x9033032e, |
483 | }; | 488 | }; |
484 | 489 | ||
490 | static unsigned int stac925x_PA6_pin_configs[8] = { | ||
491 | 0x40c003f0, 0x424503f2, 0x01813022, 0x02a19021, | ||
492 | 0x50a103f0, 0x90100211, 0x400003f1, 0x9033032e, | ||
493 | }; | ||
494 | |||
485 | static unsigned int stac925xM2_2_pin_configs[8] = { | 495 | static unsigned int stac925xM2_2_pin_configs[8] = { |
486 | 0x40c003f3, 0x424503f2, 0x041800f4, 0x02a19020, | 496 | 0x40c003f3, 0x424503f2, 0x041800f4, 0x02a19020, |
487 | 0x50a103F0, 0x90100210, 0x400003f1, 0x9033032e, | 497 | 0x50a103F0, 0x90100210, 0x400003f1, 0x9033032e, |
@@ -491,20 +501,24 @@ static unsigned int *stac925x_brd_tbl[STAC_925x_MODELS] = { | |||
491 | [STAC_REF] = ref925x_pin_configs, | 501 | [STAC_REF] = ref925x_pin_configs, |
492 | [STAC_M2_2] = stac925xM2_2_pin_configs, | 502 | [STAC_M2_2] = stac925xM2_2_pin_configs, |
493 | [STAC_MA6] = stac925x_MA6_pin_configs, | 503 | [STAC_MA6] = stac925x_MA6_pin_configs, |
504 | [STAC_PA6] = stac925x_PA6_pin_configs, | ||
494 | }; | 505 | }; |
495 | 506 | ||
496 | static const char *stac925x_models[STAC_925x_MODELS] = { | 507 | static const char *stac925x_models[STAC_925x_MODELS] = { |
497 | [STAC_REF] = "ref", | 508 | [STAC_REF] = "ref", |
498 | [STAC_M2_2] = "m2-2", | 509 | [STAC_M2_2] = "m2-2", |
499 | [STAC_MA6] = "m6", | 510 | [STAC_MA6] = "m6", |
511 | [STAC_PA6] = "pa6", | ||
500 | }; | 512 | }; |
501 | 513 | ||
502 | static struct snd_pci_quirk stac925x_cfg_tbl[] = { | 514 | static struct snd_pci_quirk stac925x_cfg_tbl[] = { |
503 | /* SigmaTel reference board */ | 515 | /* SigmaTel reference board */ |
504 | SND_PCI_QUIRK(PCI_VENDOR_ID_INTEL, 0x2668, "DFI LanParty", STAC_REF), | 516 | SND_PCI_QUIRK(PCI_VENDOR_ID_INTEL, 0x2668, "DFI LanParty", STAC_REF), |
517 | SND_PCI_QUIRK(0x8384, 0x7632, "Stac9202 Reference Board", STAC_REF), | ||
505 | SND_PCI_QUIRK(0x107b, 0x0316, "Gateway M255", STAC_REF), | 518 | SND_PCI_QUIRK(0x107b, 0x0316, "Gateway M255", STAC_REF), |
506 | SND_PCI_QUIRK(0x107b, 0x0366, "Gateway MP6954", STAC_REF), | 519 | SND_PCI_QUIRK(0x107b, 0x0366, "Gateway MP6954", STAC_REF), |
507 | SND_PCI_QUIRK(0x107b, 0x0461, "Gateway NX560XL", STAC_MA6), | 520 | SND_PCI_QUIRK(0x107b, 0x0461, "Gateway NX560XL", STAC_MA6), |
521 | SND_PCI_QUIRK(0x107b, 0x0681, "Gateway NX860", STAC_PA6), | ||
508 | SND_PCI_QUIRK(0x1002, 0x437b, "Gateway MX6453", STAC_M2_2), | 522 | SND_PCI_QUIRK(0x1002, 0x437b, "Gateway MX6453", STAC_M2_2), |
509 | {} /* terminator */ | 523 | {} /* terminator */ |
510 | }; | 524 | }; |
@@ -1911,7 +1925,8 @@ static int patch_stac925x(struct hda_codec *codec) | |||
1911 | stac925x_cfg_tbl); | 1925 | stac925x_cfg_tbl); |
1912 | again: | 1926 | again: |
1913 | if (spec->board_config < 0) { | 1927 | if (spec->board_config < 0) { |
1914 | snd_printdd(KERN_INFO "hda_codec: Unknown model for STAC925x, using BIOS defaults\n"); | 1928 | snd_printdd(KERN_INFO "hda_codec: Unknown model for STAC925x," |
1929 | "using BIOS defaults\n"); | ||
1915 | err = stac92xx_save_bios_config_regs(codec); | 1930 | err = stac92xx_save_bios_config_regs(codec); |
1916 | if (err < 0) { | 1931 | if (err < 0) { |
1917 | stac92xx_free(codec); | 1932 | stac92xx_free(codec); |
@@ -1929,7 +1944,18 @@ static int patch_stac925x(struct hda_codec *codec) | |||
1929 | spec->adc_nids = stac925x_adc_nids; | 1944 | spec->adc_nids = stac925x_adc_nids; |
1930 | spec->mux_nids = stac925x_mux_nids; | 1945 | spec->mux_nids = stac925x_mux_nids; |
1931 | spec->num_muxes = 1; | 1946 | spec->num_muxes = 1; |
1932 | spec->num_dmics = 0; | 1947 | switch (codec->vendor_id) { |
1948 | case 0x83847632: /* STAC9202 */ | ||
1949 | case 0x83847633: /* STAC9202D */ | ||
1950 | case 0x83847636: /* STAC9251 */ | ||
1951 | case 0x83847637: /* STAC9251D */ | ||
1952 | spec->num_dmics = 1; | ||
1953 | spec->dmic_nids = stac925x_dmic_nids; | ||
1954 | break; | ||
1955 | default: | ||
1956 | spec->num_dmics = 0; | ||
1957 | break; | ||
1958 | } | ||
1933 | 1959 | ||
1934 | spec->init = stac925x_core_init; | 1960 | spec->init = stac925x_core_init; |
1935 | spec->mixer = stac925x_mixer; | 1961 | spec->mixer = stac925x_mixer; |