aboutsummaryrefslogtreecommitdiffstats
path: root/sound/pci/hda/patch_sigmatel.c
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2008-11-25 09:18:29 -0500
committerTakashi Iwai <tiwai@suse.de>2008-11-25 09:18:29 -0500
commit661cd8fb5210af78f0763071642e0764a10389a6 (patch)
tree25c0c5e445c3a0d81e1f0229943490c136e758ae /sound/pci/hda/patch_sigmatel.c
parentc65574abad288d7123bd49e7906fa53b7e420239 (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.c47
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
71enum { 71enum {
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
1603static unsigned int *stac92hd73xx_brd_tbl[STAC_92HD73XX_MODELS] = { 1605static 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
1609static const char *stac92hd73xx_models[STAC_92HD73XX_MODELS] = { 1613static 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;