ALSA: hda: Add STAC_DELL_M4_3 quirk

Added STAC_DELL_M4_3 quirk for Dell systems, also reorganized the
board config switch to assign number of digital muxes, microphones,
and SPDIF muxes via the PCI quirk defined.

Signed-off-by: Matthew Ranostay <mranostay@embeddedalley.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
Matthew Ranostay 2008-11-20 21:21:43 -05:00 committed by Takashi Iwai
parent 0253fdcd8a
commit 3a7abfd2ba
2 changed files with 23 additions and 4 deletions

View File

@ -1072,6 +1072,7 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
ref Reference board ref Reference board
dell-m4-1 Dell desktops dell-m4-1 Dell desktops
dell-m4-2 Dell desktops dell-m4-2 Dell desktops
dell-m4-3 Dell desktops
STAC92HD73* STAC92HD73*
ref Reference board ref Reference board

View File

@ -84,6 +84,7 @@ enum {
STAC_92HD71BXX_REF, STAC_92HD71BXX_REF,
STAC_DELL_M4_1, STAC_DELL_M4_1,
STAC_DELL_M4_2, STAC_DELL_M4_2,
STAC_DELL_M4_3,
STAC_HP_M4, STAC_HP_M4,
STAC_92HD71BXX_MODELS STAC_92HD71BXX_MODELS
}; };
@ -1671,10 +1672,17 @@ static unsigned int dell_m4_2_pin_configs[11] = {
0x40f000f0, 0x044413b0, 0x044413b0, 0x40f000f0, 0x044413b0, 0x044413b0,
}; };
static unsigned int dell_m4_3_pin_configs[11] = {
0x0421101f, 0x04a11221, 0x90a70330, 0x90170110,
0x40f000f0, 0x40f000f0, 0x40f000f0, 0x90a000f0,
0x40f000f0, 0x044413b0, 0x044413b0,
};
static unsigned int *stac92hd71bxx_brd_tbl[STAC_92HD71BXX_MODELS] = { static unsigned int *stac92hd71bxx_brd_tbl[STAC_92HD71BXX_MODELS] = {
[STAC_92HD71BXX_REF] = ref92hd71bxx_pin_configs, [STAC_92HD71BXX_REF] = ref92hd71bxx_pin_configs,
[STAC_DELL_M4_1] = dell_m4_1_pin_configs, [STAC_DELL_M4_1] = dell_m4_1_pin_configs,
[STAC_DELL_M4_2] = dell_m4_2_pin_configs, [STAC_DELL_M4_2] = dell_m4_2_pin_configs,
[STAC_DELL_M4_3] = dell_m4_3_pin_configs,
[STAC_HP_M4] = NULL, [STAC_HP_M4] = NULL,
}; };
@ -1682,6 +1690,7 @@ static const char *stac92hd71bxx_models[STAC_92HD71BXX_MODELS] = {
[STAC_92HD71BXX_REF] = "ref", [STAC_92HD71BXX_REF] = "ref",
[STAC_DELL_M4_1] = "dell-m4-1", [STAC_DELL_M4_1] = "dell-m4-1",
[STAC_DELL_M4_2] = "dell-m4-2", [STAC_DELL_M4_2] = "dell-m4-2",
[STAC_DELL_M4_3] = "dell-m4-3",
[STAC_HP_M4] = "hp-m4", [STAC_HP_M4] = "hp-m4",
}; };
@ -1717,6 +1726,8 @@ static struct snd_pci_quirk stac92hd71bxx_cfg_tbl[] = {
"unknown Dell", STAC_DELL_M4_2), "unknown Dell", STAC_DELL_M4_2),
SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0264, SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0264,
"unknown Dell", STAC_DELL_M4_2), "unknown Dell", STAC_DELL_M4_2),
SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x02aa,
"unknown Dell", STAC_DELL_M4_3),
{} /* terminator */ {} /* terminator */
}; };
@ -4571,14 +4582,21 @@ again:
switch (spec->board_config) { switch (spec->board_config) {
case STAC_HP_M4: case STAC_HP_M4:
spec->num_dmics = 0;
spec->num_smuxes = 0;
spec->num_dmuxes = 0;
/* enable internal microphone */ /* enable internal microphone */
stac92xx_set_config_reg(codec, 0x0e, 0x01813040); stac92xx_set_config_reg(codec, 0x0e, 0x01813040);
stac92xx_auto_set_pinctl(codec, 0x0e, stac92xx_auto_set_pinctl(codec, 0x0e,
AC_PINCTL_IN_EN | AC_PINCTL_VREF_80); AC_PINCTL_IN_EN | AC_PINCTL_VREF_80);
/* fallthru */
case STAC_DELL_M4_2:
spec->num_dmics = 0;
spec->num_smuxes = 0;
spec->num_dmuxes = 0;
break;
case STAC_DELL_M4_1:
case STAC_DELL_M4_3:
spec->num_dmics = 1;
spec->num_smuxes = 0;
spec->num_dmuxes = 0;
break; break;
default: default:
spec->num_dmics = STAC92HD71BXX_NUM_DMICS; spec->num_dmics = STAC92HD71BXX_NUM_DMICS;