1 From: Takashi Iwai <tiwai@suse.de>
2 Subject: ALSA: hda - Check model for Dell 92HD73xx laptops
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.
10 Signed-off-by: Takashi Iwai <tiwai@suse.de>
13 Documentation/sound/alsa/ALSA-Configuration.txt | 4 +-
14 sound/pci/hda/patch_sigmatel.c | 47 +++++++++++++-----------
15 2 files changed, 29 insertions(+), 22 deletions(-)
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
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
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 {
43 @@ -1604,13 +1606,17 @@ static unsigned int dell_m6_pin_configs[
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,
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",
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),
95 @@ -4284,7 +4292,9 @@ again:
97 spec->init = dell_eq_core_init;
100 + case STAC_DELL_M6_AMIC:
101 + case STAC_DELL_M6_DMIC:
102 + case STAC_DELL_M6_BOTH:
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;
110 - switch (codec->subsystem_id) {
111 - case 0x1028025e: /* Analog Mics */
113 + switch (spec->board_config) {
114 + case STAC_DELL_M6_AMIC: /* Analog Mics */
115 stac92xx_set_config_reg(codec, 0x0b, 0x90A70170);
117 spec->private_dimux.num_items = 1;
119 - case 0x10280271: /* Digital Mics */
123 + case STAC_DELL_M6_DMIC: /* Digital Mics */
124 stac92xx_set_config_reg(codec, 0x13, 0x90A60160);
126 spec->private_dimux.num_items = 2;
128 - case 0x10280256: /* Both */
130 + case STAC_DELL_M6_BOTH: /* Both */
131 stac92xx_set_config_reg(codec, 0x0b, 0x90A70170);
132 stac92xx_set_config_reg(codec, 0x13, 0x90A60160);