]>
Commit | Line | Data |
---|---|---|
00e5a55c BS |
1 | From: Takashi Iwai <tiwai@suse.de> |
2 | Subject: ALSA: hda - Check model for Dell 92HD73xx laptops | |
3 | Patch-mainline: | |
4 | References: bnc#446025 | |
5 | ||
6 | Check the model type instead of PCI SSID for detection of the mic types | |
7 | on Dell laptops with IDT 92HD73xx codecs. In this way, a new laptop | |
8 | can be tested via model module option. | |
9 | ||
10 | Signed-off-by: Takashi Iwai <tiwai@suse.de> | |
11 | ||
12 | --- | |
13 | Documentation/sound/alsa/ALSA-Configuration.txt | 4 +- | |
14 | sound/pci/hda/patch_sigmatel.c | 47 +++++++++++++----------- | |
15 | 2 files changed, 29 insertions(+), 22 deletions(-) | |
16 | ||
17 | --- a/Documentation/sound/alsa/ALSA-Configuration.txt | |
18 | +++ b/Documentation/sound/alsa/ALSA-Configuration.txt | |
19 | @@ -1080,7 +1080,9 @@ Prior to version 0.9.0rc4 options had a | |
20 | ||
21 | STAC92HD73* | |
22 | ref Reference board | |
23 | - dell-m6 Dell desktops | |
24 | + dell-m6-amic Dell desktops/laptops with analog mics | |
25 | + dell-m6-dmic Dell desktops/laptops with digital mics | |
26 | + dell-m6 Dell desktops/laptops with both type of mics | |
27 | ||
28 | STAC9872 | |
29 | vaio Setup for VAIO FE550G/SZ110 | |
30 | --- a/sound/pci/hda/patch_sigmatel.c | |
31 | +++ b/sound/pci/hda/patch_sigmatel.c | |
32 | @@ -70,7 +70,9 @@ enum { | |
33 | ||
34 | enum { | |
35 | STAC_92HD73XX_REF, | |
36 | - STAC_DELL_M6, | |
37 | + STAC_DELL_M6_AMIC, | |
38 | + STAC_DELL_M6_DMIC, | |
39 | + STAC_DELL_M6_BOTH, | |
40 | STAC_DELL_EQ, | |
41 | STAC_92HD73XX_MODELS | |
42 | }; | |
43 | @@ -1604,13 +1606,17 @@ static unsigned int dell_m6_pin_configs[ | |
44 | ||
45 | static unsigned int *stac92hd73xx_brd_tbl[STAC_92HD73XX_MODELS] = { | |
46 | [STAC_92HD73XX_REF] = ref92hd73xx_pin_configs, | |
47 | - [STAC_DELL_M6] = dell_m6_pin_configs, | |
48 | + [STAC_DELL_M6_AMIC] = dell_m6_pin_configs, | |
49 | + [STAC_DELL_M6_DMIC] = dell_m6_pin_configs, | |
50 | + [STAC_DELL_M6_BOTH] = dell_m6_pin_configs, | |
51 | [STAC_DELL_EQ] = dell_m6_pin_configs, | |
52 | }; | |
53 | ||
54 | static const char *stac92hd73xx_models[STAC_92HD73XX_MODELS] = { | |
55 | [STAC_92HD73XX_REF] = "ref", | |
56 | - [STAC_DELL_M6] = "dell-m6", | |
57 | + [STAC_DELL_M6_AMIC] = "dell-m6-amic", | |
58 | + [STAC_DELL_M6_DMIC] = "dell-m6-dmic", | |
59 | + [STAC_DELL_M6_BOTH] = "dell-m6", | |
60 | [STAC_DELL_EQ] = "dell-eq", | |
61 | }; | |
62 | ||
63 | @@ -1619,21 +1625,23 @@ static struct snd_pci_quirk stac92hd73xx | |
64 | SND_PCI_QUIRK(PCI_VENDOR_ID_INTEL, 0x2668, | |
65 | "DFI LanParty", STAC_92HD73XX_REF), | |
66 | SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0254, | |
67 | - "Dell Studio 1535", STAC_DELL_M6), | |
68 | + "Dell Studio 1535", STAC_DELL_M6_DMIC), | |
69 | SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0255, | |
70 | - "unknown Dell", STAC_DELL_M6), | |
71 | + "unknown Dell", STAC_DELL_M6_DMIC), | |
72 | SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0256, | |
73 | - "unknown Dell", STAC_DELL_M6), | |
74 | + "unknown Dell", STAC_DELL_M6_BOTH), | |
75 | SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0257, | |
76 | - "unknown Dell", STAC_DELL_M6), | |
77 | + "unknown Dell", STAC_DELL_M6_BOTH), | |
78 | SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x025e, | |
79 | - "unknown Dell", STAC_DELL_M6), | |
80 | + "unknown Dell", STAC_DELL_M6_AMIC), | |
81 | SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x025f, | |
82 | - "unknown Dell", STAC_DELL_M6), | |
83 | + "unknown Dell", STAC_DELL_M6_AMIC), | |
84 | SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0271, | |
85 | - "unknown Dell", STAC_DELL_M6), | |
86 | + "unknown Dell", STAC_DELL_M6_DMIC), | |
87 | + SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0272, | |
88 | + "unknown Dell", STAC_DELL_M6_DMIC), | |
89 | SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x029f, | |
90 | - "Dell Studio 15", STAC_DELL_M6), | |
91 | + "Dell Studio 1537", STAC_DELL_M6_DMIC), | |
92 | {} /* terminator */ | |
93 | }; | |
94 | ||
95 | @@ -4284,7 +4292,9 @@ again: | |
96 | case STAC_DELL_EQ: | |
97 | spec->init = dell_eq_core_init; | |
98 | /* fallthru */ | |
99 | - case STAC_DELL_M6: | |
100 | + case STAC_DELL_M6_AMIC: | |
101 | + case STAC_DELL_M6_DMIC: | |
102 | + case STAC_DELL_M6_BOTH: | |
103 | if (!spec->init) | |
104 | spec->init = dell_m6_core_init; | |
105 | spec->num_smuxes = 0; | |
106 | @@ -4292,23 +4302,18 @@ again: | |
107 | spec->amp_nids = &stac92hd73xx_amp_nids[DELL_M6_AMP]; | |
108 | spec->eapd_switch = 0; | |
109 | spec->num_amps = 1; | |
110 | - switch (codec->subsystem_id) { | |
111 | - case 0x1028025e: /* Analog Mics */ | |
112 | - case 0x1028025f: | |
113 | + switch (spec->board_config) { | |
114 | + case STAC_DELL_M6_AMIC: /* Analog Mics */ | |
115 | stac92xx_set_config_reg(codec, 0x0b, 0x90A70170); | |
116 | spec->num_dmics = 0; | |
117 | spec->private_dimux.num_items = 1; | |
118 | break; | |
119 | - case 0x10280271: /* Digital Mics */ | |
120 | - case 0x10280272: | |
121 | - case 0x10280254: | |
122 | - case 0x10280255: | |
123 | + case STAC_DELL_M6_DMIC: /* Digital Mics */ | |
124 | stac92xx_set_config_reg(codec, 0x13, 0x90A60160); | |
125 | spec->num_dmics = 1; | |
126 | spec->private_dimux.num_items = 2; | |
127 | break; | |
128 | - case 0x10280256: /* Both */ | |
129 | - case 0x10280057: | |
130 | + case STAC_DELL_M6_BOTH: /* Both */ | |
131 | stac92xx_set_config_reg(codec, 0x0b, 0x90A70170); | |
132 | stac92xx_set_config_reg(codec, 0x13, 0x90A60160); | |
133 | spec->num_dmics = 1; |