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 | |
| 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>
| -rw-r--r-- | Documentation/sound/alsa/ALSA-Configuration.txt | 4 | ||||
| -rw-r--r-- | sound/pci/hda/patch_sigmatel.c | 47 |
2 files changed, 29 insertions, 22 deletions
diff --git a/Documentation/sound/alsa/ALSA-Configuration.txt b/Documentation/sound/alsa/ALSA-Configuration.txt index 147f1764d976..3cd2ad958176 100644 --- a/Documentation/sound/alsa/ALSA-Configuration.txt +++ b/Documentation/sound/alsa/ALSA-Configuration.txt | |||
| @@ -1076,7 +1076,9 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed. | |||
| 1076 | 1076 | ||
| 1077 | STAC92HD73* | 1077 | STAC92HD73* |
| 1078 | ref Reference board | 1078 | ref Reference board |
| 1079 | dell-m6 Dell desktops | 1079 | dell-m6-amic Dell desktops/laptops with analog mics |
| 1080 | dell-m6-dmic Dell desktops/laptops with digital mics | ||
| 1081 | dell-m6 Dell desktops/laptops with both type of mics | ||
| 1080 | 1082 | ||
| 1081 | STAC9872 | 1083 | STAC9872 |
| 1082 | vaio Setup for VAIO FE550G/SZ110 | 1084 | vaio Setup for VAIO FE550G/SZ110 |
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; |
