diff options
author | Takashi Iwai <tiwai@suse.de> | 2009-09-02 01:43:08 -0400 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2009-09-02 01:43:08 -0400 |
commit | 842ae63800bc2be62085d7ce5b3a2298c014d37a (patch) | |
tree | 6257c30663021334c271e9beee26f0db64f4025e /sound/pci | |
parent | 4a9678909b366b1f95e1f93220c61340ab866151 (diff) |
ALSA: hda - Add support of Alienware M17x laptop
Added the quirk for Alienware M17x with IDT 92HD73* codec chip.
It has two HP and one line-out jack, one mic jack, a built-in
speaker and a built-in mic.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/pci')
-rw-r--r-- | sound/pci/hda/patch_sigmatel.c | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/sound/pci/hda/patch_sigmatel.c b/sound/pci/hda/patch_sigmatel.c index 83a338b9c080..e31e53dc6962 100644 --- a/sound/pci/hda/patch_sigmatel.c +++ b/sound/pci/hda/patch_sigmatel.c | |||
@@ -83,6 +83,7 @@ enum { | |||
83 | STAC_DELL_M6_DMIC, | 83 | STAC_DELL_M6_DMIC, |
84 | STAC_DELL_M6_BOTH, | 84 | STAC_DELL_M6_BOTH, |
85 | STAC_DELL_EQ, | 85 | STAC_DELL_EQ, |
86 | STAC_ALIENWARE_M17X, | ||
86 | STAC_92HD73XX_MODELS | 87 | STAC_92HD73XX_MODELS |
87 | }; | 88 | }; |
88 | 89 | ||
@@ -1513,12 +1514,20 @@ static unsigned int dell_m6_pin_configs[13] = { | |||
1513 | 0x4f0000f0, | 1514 | 0x4f0000f0, |
1514 | }; | 1515 | }; |
1515 | 1516 | ||
1517 | static unsigned int alienware_m17x_pin_configs[13] = { | ||
1518 | 0x0321101f, 0x0321101f, 0x03a11020, 0x03014020, | ||
1519 | 0x90170110, 0x4f0000f0, 0x4f0000f0, 0x4f0000f0, | ||
1520 | 0x4f0000f0, 0x90a60160, 0x4f0000f0, 0x4f0000f0, | ||
1521 | 0x904601b0, | ||
1522 | }; | ||
1523 | |||
1516 | static unsigned int *stac92hd73xx_brd_tbl[STAC_92HD73XX_MODELS] = { | 1524 | static unsigned int *stac92hd73xx_brd_tbl[STAC_92HD73XX_MODELS] = { |
1517 | [STAC_92HD73XX_REF] = ref92hd73xx_pin_configs, | 1525 | [STAC_92HD73XX_REF] = ref92hd73xx_pin_configs, |
1518 | [STAC_DELL_M6_AMIC] = dell_m6_pin_configs, | 1526 | [STAC_DELL_M6_AMIC] = dell_m6_pin_configs, |
1519 | [STAC_DELL_M6_DMIC] = dell_m6_pin_configs, | 1527 | [STAC_DELL_M6_DMIC] = dell_m6_pin_configs, |
1520 | [STAC_DELL_M6_BOTH] = dell_m6_pin_configs, | 1528 | [STAC_DELL_M6_BOTH] = dell_m6_pin_configs, |
1521 | [STAC_DELL_EQ] = dell_m6_pin_configs, | 1529 | [STAC_DELL_EQ] = dell_m6_pin_configs, |
1530 | [STAC_ALIENWARE_M17X] = alienware_m17x_pin_configs, | ||
1522 | }; | 1531 | }; |
1523 | 1532 | ||
1524 | static const char *stac92hd73xx_models[STAC_92HD73XX_MODELS] = { | 1533 | static const char *stac92hd73xx_models[STAC_92HD73XX_MODELS] = { |
@@ -1530,6 +1539,7 @@ static const char *stac92hd73xx_models[STAC_92HD73XX_MODELS] = { | |||
1530 | [STAC_DELL_M6_DMIC] = "dell-m6-dmic", | 1539 | [STAC_DELL_M6_DMIC] = "dell-m6-dmic", |
1531 | [STAC_DELL_M6_BOTH] = "dell-m6", | 1540 | [STAC_DELL_M6_BOTH] = "dell-m6", |
1532 | [STAC_DELL_EQ] = "dell-eq", | 1541 | [STAC_DELL_EQ] = "dell-eq", |
1542 | [STAC_ALIENWARE_M17X] = "alienware", | ||
1533 | }; | 1543 | }; |
1534 | 1544 | ||
1535 | static struct snd_pci_quirk stac92hd73xx_cfg_tbl[] = { | 1545 | static struct snd_pci_quirk stac92hd73xx_cfg_tbl[] = { |
@@ -1567,6 +1577,12 @@ static struct snd_pci_quirk stac92hd73xx_cfg_tbl[] = { | |||
1567 | {} /* terminator */ | 1577 | {} /* terminator */ |
1568 | }; | 1578 | }; |
1569 | 1579 | ||
1580 | static struct snd_pci_quirk stac92hd73xx_codec_id_cfg_tbl[] = { | ||
1581 | SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x02a1, | ||
1582 | "Alienware M17x", STAC_ALIENWARE_M17X), | ||
1583 | {} /* terminator */ | ||
1584 | }; | ||
1585 | |||
1570 | static unsigned int ref92hd83xxx_pin_configs[10] = { | 1586 | static unsigned int ref92hd83xxx_pin_configs[10] = { |
1571 | 0x02214030, 0x02211010, 0x02a19020, 0x02170130, | 1587 | 0x02214030, 0x02211010, 0x02a19020, 0x02170130, |
1572 | 0x01014050, 0x01819040, 0x01014020, 0x90a3014e, | 1588 | 0x01014050, 0x01819040, 0x01014020, 0x90a3014e, |
@@ -4909,6 +4925,12 @@ static int patch_stac92hd73xx(struct hda_codec *codec) | |||
4909 | STAC_92HD73XX_MODELS, | 4925 | STAC_92HD73XX_MODELS, |
4910 | stac92hd73xx_models, | 4926 | stac92hd73xx_models, |
4911 | stac92hd73xx_cfg_tbl); | 4927 | stac92hd73xx_cfg_tbl); |
4928 | /* check codec subsystem id if not found */ | ||
4929 | if (spec->board_config < 0) | ||
4930 | spec->board_config = | ||
4931 | snd_hda_check_board_codec_sid_config(codec, | ||
4932 | STAC_92HD73XX_MODELS, stac92hd73xx_models, | ||
4933 | stac92hd73xx_codec_id_cfg_tbl); | ||
4912 | again: | 4934 | again: |
4913 | if (spec->board_config < 0) | 4935 | if (spec->board_config < 0) |
4914 | snd_printdd(KERN_INFO "hda_codec: %s: BIOS auto-probing.\n", | 4936 | snd_printdd(KERN_INFO "hda_codec: %s: BIOS auto-probing.\n", |
@@ -4983,6 +5005,11 @@ again: | |||
4983 | break; | 5005 | break; |
4984 | } | 5006 | } |
4985 | break; | 5007 | break; |
5008 | case STAC_ALIENWARE_M17X: | ||
5009 | spec->num_dmics = STAC92HD73XX_NUM_DMICS; | ||
5010 | spec->num_smuxes = ARRAY_SIZE(stac92hd73xx_smux_nids); | ||
5011 | spec->eapd_switch = 0; | ||
5012 | break; | ||
4986 | default: | 5013 | default: |
4987 | spec->num_dmics = STAC92HD73XX_NUM_DMICS; | 5014 | spec->num_dmics = STAC92HD73XX_NUM_DMICS; |
4988 | spec->num_smuxes = ARRAY_SIZE(stac92hd73xx_smux_nids); | 5015 | spec->num_smuxes = ARRAY_SIZE(stac92hd73xx_smux_nids); |