diff options
author | Takashi Iwai <tiwai@suse.de> | 2008-11-25 09:18:29 -0500 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2008-11-25 09:18:29 -0500 |
commit | 661cd8fb5210af78f0763071642e0764a10389a6 (patch) | |
tree | 25c0c5e445c3a0d81e1f0229943490c136e758ae /sound/pci/hda/patch_sigmatel.c | |
parent | c65574abad288d7123bd49e7906fa53b7e420239 (diff) |
ALSA: hda - Check model for Dell 92HD73xx laptops
Check the model type instead of PCI SSID for detection of the mic types
on Dell laptops with IDT 92HD73xx codecs. In this way, a new laptop
can be tested via model module option.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
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 cc4d651ce062..5dd3e89f620a 100644 --- a/sound/pci/hda/patch_sigmatel.c +++ b/sound/pci/hda/patch_sigmatel.c | |||
@@ -70,7 +70,9 @@ enum { | |||
70 | 70 | ||
71 | enum { | 71 | enum { |
72 | STAC_92HD73XX_REF, | 72 | STAC_92HD73XX_REF, |
73 | STAC_DELL_M6, | 73 | STAC_DELL_M6_AMIC, |
74 | STAC_DELL_M6_DMIC, | ||
75 | STAC_DELL_M6_BOTH, | ||
74 | STAC_DELL_EQ, | 76 | STAC_DELL_EQ, |
75 | STAC_92HD73XX_MODELS | 77 | STAC_92HD73XX_MODELS |
76 | }; | 78 | }; |
@@ -1602,13 +1604,17 @@ static unsigned int dell_m6_pin_configs[13] = { | |||
1602 | 1604 | ||
1603 | static unsigned int *stac92hd73xx_brd_tbl[STAC_92HD73XX_MODELS] = { | 1605 | static unsigned int *stac92hd73xx_brd_tbl[STAC_92HD73XX_MODELS] = { |
1604 | [STAC_92HD73XX_REF] = ref92hd73xx_pin_configs, | 1606 | [STAC_92HD73XX_REF] = ref92hd73xx_pin_configs, |
1605 | [STAC_DELL_M6] = dell_m6_pin_configs, | 1607 | [STAC_DELL_M6_AMIC] = dell_m6_pin_configs, |
1608 | [STAC_DELL_M6_DMIC] = dell_m6_pin_configs, | ||
1609 | [STAC_DELL_M6_BOTH] = dell_m6_pin_configs, | ||
1606 | [STAC_DELL_EQ] = dell_m6_pin_configs, | 1610 | [STAC_DELL_EQ] = dell_m6_pin_configs, |
1607 | }; | 1611 | }; |
1608 | 1612 | ||
1609 | static const char *stac92hd73xx_models[STAC_92HD73XX_MODELS] = { | 1613 | static const char *stac92hd73xx_models[STAC_92HD73XX_MODELS] = { |
1610 | [STAC_92HD73XX_REF] = "ref", | 1614 | [STAC_92HD73XX_REF] = "ref", |
1611 | [STAC_DELL_M6] = "dell-m6", | 1615 | [STAC_DELL_M6_AMIC] = "dell-m6-amic", |
1616 | [STAC_DELL_M6_DMIC] = "dell-m6-dmic", | ||
1617 | [STAC_DELL_M6_BOTH] = "dell-m6", | ||
1612 | [STAC_DELL_EQ] = "dell-eq", | 1618 | [STAC_DELL_EQ] = "dell-eq", |
1613 | }; | 1619 | }; |
1614 | 1620 | ||
@@ -1617,21 +1623,23 @@ static struct snd_pci_quirk stac92hd73xx_cfg_tbl[] = { | |||
1617 | SND_PCI_QUIRK(PCI_VENDOR_ID_INTEL, 0x2668, | 1623 | SND_PCI_QUIRK(PCI_VENDOR_ID_INTEL, 0x2668, |
1618 | "DFI LanParty", STAC_92HD73XX_REF), | 1624 | "DFI LanParty", STAC_92HD73XX_REF), |
1619 | SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0254, | 1625 | SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0254, |
1620 | "Dell Studio 1535", STAC_DELL_M6), | 1626 | "Dell Studio 1535", STAC_DELL_M6_DMIC), |
1621 | SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0255, | 1627 | SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0255, |
1622 | "unknown Dell", STAC_DELL_M6), | 1628 | "unknown Dell", STAC_DELL_M6_DMIC), |
1623 | SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0256, | 1629 | SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0256, |
1624 | "unknown Dell", STAC_DELL_M6), | 1630 | "unknown Dell", STAC_DELL_M6_BOTH), |
1625 | SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0257, | 1631 | SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0257, |
1626 | "unknown Dell", STAC_DELL_M6), | 1632 | "unknown Dell", STAC_DELL_M6_BOTH), |
1627 | SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x025e, | 1633 | SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x025e, |
1628 | "unknown Dell", STAC_DELL_M6), | 1634 | "unknown Dell", STAC_DELL_M6_AMIC), |
1629 | SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x025f, | 1635 | SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x025f, |
1630 | "unknown Dell", STAC_DELL_M6), | 1636 | "unknown Dell", STAC_DELL_M6_AMIC), |
1631 | SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0271, | 1637 | SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0271, |
1632 | "unknown Dell", STAC_DELL_M6), | 1638 | "unknown Dell", STAC_DELL_M6_DMIC), |
1639 | SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0272, | ||
1640 | "unknown Dell", STAC_DELL_M6_DMIC), | ||
1633 | SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x029f, | 1641 | SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x029f, |
1634 | "Dell Studio 15", STAC_DELL_M6), | 1642 | "Dell Studio 1537", STAC_DELL_M6_DMIC), |
1635 | {} /* terminator */ | 1643 | {} /* terminator */ |
1636 | }; | 1644 | }; |
1637 | 1645 | ||
@@ -4281,7 +4289,9 @@ again: | |||
4281 | case STAC_DELL_EQ: | 4289 | case STAC_DELL_EQ: |
4282 | spec->init = dell_eq_core_init; | 4290 | spec->init = dell_eq_core_init; |
4283 | /* fallthru */ | 4291 | /* fallthru */ |
4284 | case STAC_DELL_M6: | 4292 | case STAC_DELL_M6_AMIC: |
4293 | case STAC_DELL_M6_DMIC: | ||
4294 | case STAC_DELL_M6_BOTH: | ||
4285 | spec->num_smuxes = 0; | 4295 | spec->num_smuxes = 0; |
4286 | spec->mixer = &stac92hd73xx_6ch_mixer[DELL_M6_MIXER]; | 4296 | spec->mixer = &stac92hd73xx_6ch_mixer[DELL_M6_MIXER]; |
4287 | spec->amp_nids = &stac92hd73xx_amp_nids[DELL_M6_AMP]; | 4297 | spec->amp_nids = &stac92hd73xx_amp_nids[DELL_M6_AMP]; |
@@ -4290,23 +4300,18 @@ again: | |||
4290 | 4300 | ||
4291 | if (!spec->init) | 4301 | if (!spec->init) |
4292 | spec->init = dell_m6_core_init; | 4302 | spec->init = dell_m6_core_init; |
4293 | switch (codec->subsystem_id) { | 4303 | switch (spec->board_config) { |
4294 | case 0x1028025e: /* Analog Mics */ | 4304 | case STAC_DELL_M6_AMIC: /* Analog Mics */ |
4295 | case 0x1028025f: | ||
4296 | stac92xx_set_config_reg(codec, 0x0b, 0x90A70170); | 4305 | stac92xx_set_config_reg(codec, 0x0b, 0x90A70170); |
4297 | spec->num_dmics = 0; | 4306 | spec->num_dmics = 0; |
4298 | spec->private_dimux.num_items = 1; | 4307 | spec->private_dimux.num_items = 1; |
4299 | break; | 4308 | break; |
4300 | case 0x10280271: /* Digital Mics */ | 4309 | case STAC_DELL_M6_DMIC: /* Digital Mics */ |
4301 | case 0x10280272: | ||
4302 | case 0x10280254: | ||
4303 | case 0x10280255: | ||
4304 | stac92xx_set_config_reg(codec, 0x13, 0x90A60160); | 4310 | stac92xx_set_config_reg(codec, 0x13, 0x90A60160); |
4305 | spec->num_dmics = 1; | 4311 | spec->num_dmics = 1; |
4306 | spec->private_dimux.num_items = 2; | 4312 | spec->private_dimux.num_items = 2; |
4307 | break; | 4313 | break; |
4308 | case 0x10280256: /* Both */ | 4314 | case STAC_DELL_M6_BOTH: /* Both */ |
4309 | case 0x10280057: | ||
4310 | stac92xx_set_config_reg(codec, 0x0b, 0x90A70170); | 4315 | stac92xx_set_config_reg(codec, 0x0b, 0x90A70170); |
4311 | stac92xx_set_config_reg(codec, 0x13, 0x90A60160); | 4316 | stac92xx_set_config_reg(codec, 0x13, 0x90A60160); |
4312 | spec->num_dmics = 1; | 4317 | spec->num_dmics = 1; |