diff options
Diffstat (limited to 'sound/pci/hda/patch_sigmatel.c')
-rw-r--r-- | sound/pci/hda/patch_sigmatel.c | 47 |
1 files changed, 26 insertions, 21 deletions
diff --git a/sound/pci/hda/patch_sigmatel.c b/sound/pci/hda/patch_sigmatel.c index 4b7dda57c0e9..70181d500536 100644 --- a/sound/pci/hda/patch_sigmatel.c +++ b/sound/pci/hda/patch_sigmatel.c | |||
@@ -71,7 +71,9 @@ enum { | |||
71 | 71 | ||
72 | enum { | 72 | enum { |
73 | STAC_92HD73XX_REF, | 73 | STAC_92HD73XX_REF, |
74 | STAC_DELL_M6, | 74 | STAC_DELL_M6_AMIC, |
75 | STAC_DELL_M6_DMIC, | ||
76 | STAC_DELL_M6_BOTH, | ||
75 | STAC_DELL_EQ, | 77 | STAC_DELL_EQ, |
76 | STAC_92HD73XX_MODELS | 78 | STAC_92HD73XX_MODELS |
77 | }; | 79 | }; |
@@ -1656,13 +1658,17 @@ static unsigned int dell_m6_pin_configs[13] = { | |||
1656 | 1658 | ||
1657 | static unsigned int *stac92hd73xx_brd_tbl[STAC_92HD73XX_MODELS] = { | 1659 | static unsigned int *stac92hd73xx_brd_tbl[STAC_92HD73XX_MODELS] = { |
1658 | [STAC_92HD73XX_REF] = ref92hd73xx_pin_configs, | 1660 | [STAC_92HD73XX_REF] = ref92hd73xx_pin_configs, |
1659 | [STAC_DELL_M6] = dell_m6_pin_configs, | 1661 | [STAC_DELL_M6_AMIC] = dell_m6_pin_configs, |
1662 | [STAC_DELL_M6_DMIC] = dell_m6_pin_configs, | ||
1663 | [STAC_DELL_M6_BOTH] = dell_m6_pin_configs, | ||
1660 | [STAC_DELL_EQ] = dell_m6_pin_configs, | 1664 | [STAC_DELL_EQ] = dell_m6_pin_configs, |
1661 | }; | 1665 | }; |
1662 | 1666 | ||
1663 | static const char *stac92hd73xx_models[STAC_92HD73XX_MODELS] = { | 1667 | static const char *stac92hd73xx_models[STAC_92HD73XX_MODELS] = { |
1664 | [STAC_92HD73XX_REF] = "ref", | 1668 | [STAC_92HD73XX_REF] = "ref", |
1665 | [STAC_DELL_M6] = "dell-m6", | 1669 | [STAC_DELL_M6_AMIC] = "dell-m6-amic", |
1670 | [STAC_DELL_M6_DMIC] = "dell-m6-dmic", | ||
1671 | [STAC_DELL_M6_BOTH] = "dell-m6", | ||
1666 | [STAC_DELL_EQ] = "dell-eq", | 1672 | [STAC_DELL_EQ] = "dell-eq", |
1667 | }; | 1673 | }; |
1668 | 1674 | ||
@@ -1671,21 +1677,23 @@ static struct snd_pci_quirk stac92hd73xx_cfg_tbl[] = { | |||
1671 | SND_PCI_QUIRK(PCI_VENDOR_ID_INTEL, 0x2668, | 1677 | SND_PCI_QUIRK(PCI_VENDOR_ID_INTEL, 0x2668, |
1672 | "DFI LanParty", STAC_92HD73XX_REF), | 1678 | "DFI LanParty", STAC_92HD73XX_REF), |
1673 | SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0254, | 1679 | SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0254, |
1674 | "Dell Studio 1535", STAC_DELL_M6), | 1680 | "Dell Studio 1535", STAC_DELL_M6_DMIC), |
1675 | SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0255, | 1681 | SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0255, |
1676 | "unknown Dell", STAC_DELL_M6), | 1682 | "unknown Dell", STAC_DELL_M6_DMIC), |
1677 | SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0256, | 1683 | SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0256, |
1678 | "unknown Dell", STAC_DELL_M6), | 1684 | "unknown Dell", STAC_DELL_M6_BOTH), |
1679 | SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0257, | 1685 | SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0257, |
1680 | "unknown Dell", STAC_DELL_M6), | 1686 | "unknown Dell", STAC_DELL_M6_BOTH), |
1681 | SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x025e, | 1687 | SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x025e, |
1682 | "unknown Dell", STAC_DELL_M6), | 1688 | "unknown Dell", STAC_DELL_M6_AMIC), |
1683 | SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x025f, | 1689 | SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x025f, |
1684 | "unknown Dell", STAC_DELL_M6), | 1690 | "unknown Dell", STAC_DELL_M6_AMIC), |
1685 | SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0271, | 1691 | SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0271, |
1686 | "unknown Dell", STAC_DELL_M6), | 1692 | "unknown Dell", STAC_DELL_M6_DMIC), |
1693 | SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0272, | ||
1694 | "unknown Dell", STAC_DELL_M6_DMIC), | ||
1687 | SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x029f, | 1695 | SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x029f, |
1688 | "Dell Studio 15", STAC_DELL_M6), | 1696 | "Dell Studio 1537", STAC_DELL_M6_DMIC), |
1689 | {} /* terminator */ | 1697 | {} /* terminator */ |
1690 | }; | 1698 | }; |
1691 | 1699 | ||
@@ -4513,7 +4521,9 @@ again: | |||
4513 | case STAC_DELL_EQ: | 4521 | case STAC_DELL_EQ: |
4514 | spec->init = dell_eq_core_init; | 4522 | spec->init = dell_eq_core_init; |
4515 | /* fallthru */ | 4523 | /* fallthru */ |
4516 | case STAC_DELL_M6: | 4524 | case STAC_DELL_M6_AMIC: |
4525 | case STAC_DELL_M6_DMIC: | ||
4526 | case STAC_DELL_M6_BOTH: | ||
4517 | spec->num_smuxes = 0; | 4527 | spec->num_smuxes = 0; |
4518 | spec->mixer = &stac92hd73xx_6ch_mixer[DELL_M6_MIXER]; | 4528 | spec->mixer = &stac92hd73xx_6ch_mixer[DELL_M6_MIXER]; |
4519 | spec->amp_nids = &stac92hd73xx_amp_nids[DELL_M6_AMP]; | 4529 | spec->amp_nids = &stac92hd73xx_amp_nids[DELL_M6_AMP]; |
@@ -4522,23 +4532,18 @@ again: | |||
4522 | 4532 | ||
4523 | if (!spec->init) | 4533 | if (!spec->init) |
4524 | spec->init = dell_m6_core_init; | 4534 | spec->init = dell_m6_core_init; |
4525 | switch (codec->subsystem_id) { | 4535 | switch (spec->board_config) { |
4526 | case 0x1028025e: /* Analog Mics */ | 4536 | case STAC_DELL_M6_AMIC: /* Analog Mics */ |
4527 | case 0x1028025f: | ||
4528 | stac92xx_set_config_reg(codec, 0x0b, 0x90A70170); | 4537 | stac92xx_set_config_reg(codec, 0x0b, 0x90A70170); |
4529 | spec->num_dmics = 0; | 4538 | spec->num_dmics = 0; |
4530 | spec->private_dimux.num_items = 1; | 4539 | spec->private_dimux.num_items = 1; |
4531 | break; | 4540 | break; |
4532 | case 0x10280271: /* Digital Mics */ | 4541 | case STAC_DELL_M6_DMIC: /* Digital Mics */ |
4533 | case 0x10280272: | ||
4534 | case 0x10280254: | ||
4535 | case 0x10280255: | ||
4536 | stac92xx_set_config_reg(codec, 0x13, 0x90A60160); | 4542 | stac92xx_set_config_reg(codec, 0x13, 0x90A60160); |
4537 | spec->num_dmics = 1; | 4543 | spec->num_dmics = 1; |
4538 | spec->private_dimux.num_items = 2; | 4544 | spec->private_dimux.num_items = 2; |
4539 | break; | 4545 | break; |
4540 | case 0x10280256: /* Both */ | 4546 | case STAC_DELL_M6_BOTH: /* Both */ |
4541 | case 0x10280057: | ||
4542 | stac92xx_set_config_reg(codec, 0x0b, 0x90A70170); | 4547 | stac92xx_set_config_reg(codec, 0x0b, 0x90A70170); |
4543 | stac92xx_set_config_reg(codec, 0x13, 0x90A60160); | 4548 | stac92xx_set_config_reg(codec, 0x13, 0x90A60160); |
4544 | spec->num_dmics = 1; | 4549 | spec->num_dmics = 1; |