* [PATCH] hda: 92HDxxxx PCI Quirks
@ 2008-02-20 22:47 Matthew Ranostay
2008-02-21 2:14 ` Matthew Ranostay
0 siblings, 1 reply; 3+ messages in thread
From: Matthew Ranostay @ 2008-02-20 22:47 UTC (permalink / raw)
To: alsa-devel; +Cc: Takashi Iwai
Added PCI_QUIRKS for laptop that have the 92HDxxx family of codecs.
Signed-off-by: Matthew Ranostay <mranostay@embeddedalley.com>
---
diff -r 6b53fa114faa pci/hda/patch_sigmatel.c
--- a/pci/hda/patch_sigmatel.c Tue Feb 19 15:03:57 2008 +0100
+++ b/pci/hda/patch_sigmatel.c Wed Feb 20 17:18:15 2008 -0500
@@ -64,11 +64,14 @@ enum {
enum {
STAC_92HD73XX_REF,
+ STAC_DELL_M6_5ST,
STAC_92HD73XX_MODELS
};
enum {
STAC_92HD71BXX_REF,
+ STAC_DELL_M4_5ST,
+ STAC_DELL_M4_6ST,
STAC_92HD71BXX_MODELS
};
@@ -334,10 +337,10 @@ static hda_nid_t stac922x_pin_nids[10] =
0x0f, 0x10, 0x11, 0x15, 0x1b,
};
-static hda_nid_t stac92hd73xx_pin_nids[12] = {
+static hda_nid_t stac92hd73xx_pin_nids[13] = {
0x0a, 0x0b, 0x0c, 0x0d, 0x0e,
0x0f, 0x10, 0x11, 0x12, 0x13,
- 0x14, 0x22
+ 0x14, 0x1e, 0x22
};
static hda_nid_t stac92hd71bxx_pin_nids[10] = {
@@ -1220,24 +1223,48 @@ static struct snd_pci_quirk stac925x_cfg
{} /* terminator */
};
-static unsigned int ref92hd73xx_pin_configs[12] = {
+static unsigned int ref92hd73xx_pin_configs[13] = {
0x02214030, 0x02a19040, 0x01a19020, 0x02214030,
0x0181302e, 0x01014010, 0x01014020, 0x01014030,
0x02319040, 0x90a000f0, 0x90a000f0, 0x01452050,
+ 0x01452050,
+};
+
+static unsigned int dell_m6_5st_pin_configs[13] = {
+ 0x0321101f, 0x4f00000f, 0x4f0000f0, 0x90170110,
+ 0x03a11020, 0x03011050, 0x4f0000f0, 0x4f0000f0,
+ 0x4f0000f0, 0x90a60160, 0x4f0000f0, 0x4f0000f0,
+ 0x4f0000f0,
};
static unsigned int *stac92hd73xx_brd_tbl[STAC_92HD73XX_MODELS] = {
- [STAC_92HD73XX_REF] = ref92hd73xx_pin_configs,
+ [STAC_92HD73XX_REF] = ref92hd73xx_pin_configs,
+ [STAC_DELL_M6_5ST] = dell_m6_5st_pin_configs,
};
static const char *stac92hd73xx_models[STAC_92HD73XX_MODELS] = {
[STAC_92HD73XX_REF] = "ref",
+ [STAC_DELL_M6_5ST] = "dell-m6-5stack",
};
static struct snd_pci_quirk stac92hd73xx_cfg_tbl[] = {
/* SigmaTel reference board */
SND_PCI_QUIRK(PCI_VENDOR_ID_INTEL, 0x2668,
- "DFI LanParty", STAC_92HD73XX_REF),
+ "DFI LanParty", STAC_92HD73XX_REF),
+ SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0254,
+ "unknown Dell", STAC_DELL_M6_5ST),
+ SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0255,
+ "unknown Dell", STAC_DELL_M6_5ST),
+ SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0256,
+ "unknown Dell", STAC_DELL_M6_5ST),
+ SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0257,
+ "unknown Dell", STAC_DELL_M6_5ST),
+ SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x025e,
+ "unknown Dell", STAC_DELL_M6_5ST),
+ SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x025f,
+ "unknown Dell", STAC_DELL_M6_5ST),
+ SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0271,
+ "unknown Dell", STAC_DELL_M6_5ST),
{} /* terminator */
};
@@ -1247,18 +1274,56 @@ static unsigned int ref92hd71bxx_pin_con
0x90a000f0, 0x01452050,
};
+static unsigned int dell_m4_5st_pin_configs[13] = {
+ 0x0421101f, 0x04a11221, 0x40f000f0, 0x90170110,
+ 0x23a1902e, 0x23014250, 0x40f000f0, 0x4f0000f0,
+ 0x40f000f0, 0x4f0000f0,
+};
+
+static unsigned int dell_m4_6st_pin_configs[13] = {
+ 0x0421101f, 0x04a11221, 0x90a70330, 0x90170110,
+ 0x23a1902e, 0x23014250, 0x40f000f0, 0x40f000f0,
+ 0x40f000f0, 0x044413b0,
+};
+
static unsigned int *stac92hd71bxx_brd_tbl[STAC_92HD71BXX_MODELS] = {
[STAC_92HD71BXX_REF] = ref92hd71bxx_pin_configs,
+ [STAC_DELL_M4_5ST] = dell_m4_5st_pin_configs,
+ [STAC_DELL_M4_6ST] = dell_m4_6st_pin_configs,
};
static const char *stac92hd71bxx_models[STAC_92HD71BXX_MODELS] = {
[STAC_92HD71BXX_REF] = "ref",
+ [STAC_DELL_M4_5ST] = "dell-m4-5stack",
+ [STAC_DELL_M4_6ST] = "dell-m4-6stack",
};
static struct snd_pci_quirk stac92hd71bxx_cfg_tbl[] = {
/* SigmaTel reference board */
SND_PCI_QUIRK(PCI_VENDOR_ID_INTEL, 0x2668,
"DFI LanParty", STAC_92HD71BXX_REF),
+ SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0233,
+ "unknown Dell", STAC_DELL_M4_5ST),
+ SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0234,
+ "unknown Dell", STAC_DELL_M4_5ST),
+ SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0250,
+ "unknown Dell", STAC_DELL_M4_5ST),
+ SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x024f,
+ "unknown Dell", STAC_DELL_M4_5ST),
+ SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x024d,
+ "unknown Dell", STAC_DELL_M4_5ST),
+ SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0251,
+ "unknown Dell", STAC_DELL_M4_5ST),
+ SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0277,
+ "unknown Dell", STAC_DELL_M4_5ST),
+ SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0263,
+ "unknown Dell", STAC_DELL_M4_6ST),
+ SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0265,
+ "unknown Dell", STAC_DELL_M4_6ST),
+ SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0262,
+ "unknown Dell", STAC_DELL_M4_6ST),
+ SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0264,
+ "unknown Dell", STAC_DELL_M4_6ST),
{} /* terminator */
};
@@ -3355,12 +3420,38 @@ again:
spec->num_muxes = ARRAY_SIZE(stac92hd73xx_mux_nids);
spec->num_adcs = ARRAY_SIZE(stac92hd73xx_adc_nids);
- spec->num_dmics = STAC92HD73XX_NUM_DMICS;
spec->num_dmuxes = ARRAY_SIZE(stac92hd73xx_dmux_nids);
spec->dinput_mux = &stac92hd73xx_dmux;
/* GPIO0 High = Enable EAPD */
spec->gpio_mask = spec->gpio_dir = 0x1;
spec->gpio_data = 0x01;
+
+ switch (spec->board_config) {
+ case STAC_DELL_M6_5ST:
+ switch (codec->subsystem_id) {
+ case 0x1028025e: /* Analog Mics */
+ case 0x1028025f:
+ stac92xx_set_config_reg(codec, 0x0b, 0x90A70170);
+ spec->num_dmics = 0;
+ break;
+ case 0x10280254: /* Digital Mics */
+ case 0x10280255:
+ case 0x10280271:
+ case 0x10280272:
+ stac92xx_set_config_reg(codec, 0x13, 0x90A60160);
+ spec->num_dmics = 1;
+ break;
+ case 0x10280256: /* Both */
+ case 0x10280057:
+ stac92xx_set_config_reg(codec, 0x0b, 0x90A70170);
+ stac92xx_set_config_reg(codec, 0x13, 0x90A60160);
+ spec->num_dmics = 1;
+ break;
+ }
+ break;
+ default:
+ spec->num_dmics = STAC92HD73XX_NUM_DMICS;
+ }
spec->num_pwrs = ARRAY_SIZE(stac92hd73xx_pwr_nids);
spec->pwr_nids = stac92hd73xx_pwr_nids;
^ permalink raw reply [flat|nested] 3+ messages in thread* Re: [PATCH] hda: 92HDxxxx PCI Quirks 2008-02-20 22:47 [PATCH] hda: 92HDxxxx PCI Quirks Matthew Ranostay @ 2008-02-21 2:14 ` Matthew Ranostay 2008-02-21 7:06 ` Takashi Iwai 0 siblings, 1 reply; 3+ messages in thread From: Matthew Ranostay @ 2008-02-21 2:14 UTC (permalink / raw) To: alsa-devel; +Cc: Takashi Iwai Matthew Ranostay wrote: > Added PCI_QUIRKS for laptop that have the 92HDxxx family of codecs. > > Signed-off-by: Matthew Ranostay <mranostay@embeddedalley.com> > --- > diff -r 6b53fa114faa pci/hda/patch_sigmatel.c > --- a/pci/hda/patch_sigmatel.c Tue Feb 19 15:03:57 2008 +0100 > +++ b/pci/hda/patch_sigmatel.c Wed Feb 20 17:18:15 2008 -0500 > @@ -64,11 +64,14 @@ enum { > > enum { > STAC_92HD73XX_REF, > + STAC_DELL_M6_5ST, > STAC_92HD73XX_MODELS > }; > > enum { > STAC_92HD71BXX_REF, > + STAC_DELL_M4_5ST, > + STAC_DELL_M4_6ST, > STAC_92HD71BXX_MODELS > }; > > @@ -334,10 +337,10 @@ static hda_nid_t stac922x_pin_nids[10] = > 0x0f, 0x10, 0x11, 0x15, 0x1b, > }; > > -static hda_nid_t stac92hd73xx_pin_nids[12] = { > +static hda_nid_t stac92hd73xx_pin_nids[13] = { > 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, > 0x0f, 0x10, 0x11, 0x12, 0x13, > - 0x14, 0x22 > + 0x14, 0x1e, 0x22 > }; > > static hda_nid_t stac92hd71bxx_pin_nids[10] = { > @@ -1220,24 +1223,48 @@ static struct snd_pci_quirk stac925x_cfg > {} /* terminator */ > }; > > -static unsigned int ref92hd73xx_pin_configs[12] = { > +static unsigned int ref92hd73xx_pin_configs[13] = { > 0x02214030, 0x02a19040, 0x01a19020, 0x02214030, > 0x0181302e, 0x01014010, 0x01014020, 0x01014030, > 0x02319040, 0x90a000f0, 0x90a000f0, 0x01452050, > + 0x01452050, > +}; > + > +static unsigned int dell_m6_5st_pin_configs[13] = { > + 0x0321101f, 0x4f00000f, 0x4f0000f0, 0x90170110, > + 0x03a11020, 0x03011050, 0x4f0000f0, 0x4f0000f0, > + 0x4f0000f0, 0x90a60160, 0x4f0000f0, 0x4f0000f0, > + 0x4f0000f0, > }; > > static unsigned int *stac92hd73xx_brd_tbl[STAC_92HD73XX_MODELS] = { > - [STAC_92HD73XX_REF] = ref92hd73xx_pin_configs, > + [STAC_92HD73XX_REF] = ref92hd73xx_pin_configs, > + [STAC_DELL_M6_5ST] = dell_m6_5st_pin_configs, > }; > > static const char *stac92hd73xx_models[STAC_92HD73XX_MODELS] = { > [STAC_92HD73XX_REF] = "ref", > + [STAC_DELL_M6_5ST] = "dell-m6-5stack", > }; > > static struct snd_pci_quirk stac92hd73xx_cfg_tbl[] = { > /* SigmaTel reference board */ > SND_PCI_QUIRK(PCI_VENDOR_ID_INTEL, 0x2668, > - "DFI LanParty", STAC_92HD73XX_REF), > + "DFI LanParty", STAC_92HD73XX_REF), > + SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0254, > + "unknown Dell", STAC_DELL_M6_5ST), > + SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0255, > + "unknown Dell", STAC_DELL_M6_5ST), > + SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0256, > + "unknown Dell", STAC_DELL_M6_5ST), > + SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0257, > + "unknown Dell", STAC_DELL_M6_5ST), > + SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x025e, > + "unknown Dell", STAC_DELL_M6_5ST), > + SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x025f, > + "unknown Dell", STAC_DELL_M6_5ST), > + SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0271, > + "unknown Dell", STAC_DELL_M6_5ST), > {} /* terminator */ > }; > > @@ -1247,18 +1274,56 @@ static unsigned int ref92hd71bxx_pin_con > 0x90a000f0, 0x01452050, > }; > > +static unsigned int dell_m4_5st_pin_configs[13] = { > + 0x0421101f, 0x04a11221, 0x40f000f0, 0x90170110, > + 0x23a1902e, 0x23014250, 0x40f000f0, 0x4f0000f0, > + 0x40f000f0, 0x4f0000f0, > +}; > + > +static unsigned int dell_m4_6st_pin_configs[13] = { > + 0x0421101f, 0x04a11221, 0x90a70330, 0x90170110, > + 0x23a1902e, 0x23014250, 0x40f000f0, 0x40f000f0, > + 0x40f000f0, 0x044413b0, > +}; > + > static unsigned int *stac92hd71bxx_brd_tbl[STAC_92HD71BXX_MODELS] = { > [STAC_92HD71BXX_REF] = ref92hd71bxx_pin_configs, > + [STAC_DELL_M4_5ST] = dell_m4_5st_pin_configs, > + [STAC_DELL_M4_6ST] = dell_m4_6st_pin_configs, > }; > > static const char *stac92hd71bxx_models[STAC_92HD71BXX_MODELS] = { > [STAC_92HD71BXX_REF] = "ref", > + [STAC_DELL_M4_5ST] = "dell-m4-5stack", > + [STAC_DELL_M4_6ST] = "dell-m4-6stack", > }; > > static struct snd_pci_quirk stac92hd71bxx_cfg_tbl[] = { > /* SigmaTel reference board */ > SND_PCI_QUIRK(PCI_VENDOR_ID_INTEL, 0x2668, > "DFI LanParty", STAC_92HD71BXX_REF), > + SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0233, > + "unknown Dell", STAC_DELL_M4_5ST), > + SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0234, > + "unknown Dell", STAC_DELL_M4_5ST), > + SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0250, > + "unknown Dell", STAC_DELL_M4_5ST), > + SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x024f, > + "unknown Dell", STAC_DELL_M4_5ST), > + SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x024d, > + "unknown Dell", STAC_DELL_M4_5ST), > + SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0251, > + "unknown Dell", STAC_DELL_M4_5ST), > + SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0277, > + "unknown Dell", STAC_DELL_M4_5ST), > + SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0263, > + "unknown Dell", STAC_DELL_M4_6ST), > + SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0265, > + "unknown Dell", STAC_DELL_M4_6ST), > + SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0262, > + "unknown Dell", STAC_DELL_M4_6ST), > + SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0264, > + "unknown Dell", STAC_DELL_M4_6ST), > {} /* terminator */ > }; > > @@ -3355,12 +3420,38 @@ again: > > spec->num_muxes = ARRAY_SIZE(stac92hd73xx_mux_nids); > spec->num_adcs = ARRAY_SIZE(stac92hd73xx_adc_nids); > - spec->num_dmics = STAC92HD73XX_NUM_DMICS; > spec->num_dmuxes = ARRAY_SIZE(stac92hd73xx_dmux_nids); > spec->dinput_mux = &stac92hd73xx_dmux; > /* GPIO0 High = Enable EAPD */ > spec->gpio_mask = spec->gpio_dir = 0x1; > spec->gpio_data = 0x01; > + > + switch (spec->board_config) { > + case STAC_DELL_M6_5ST: > + switch (codec->subsystem_id) { > + case 0x1028025e: /* Analog Mics */ > + case 0x1028025f: > + stac92xx_set_config_reg(codec, 0x0b, 0x90A70170); > + spec->num_dmics = 0; > + break; > + case 0x10280254: /* Digital Mics */ > + case 0x10280255: > + case 0x10280271: > + case 0x10280272: > + stac92xx_set_config_reg(codec, 0x13, 0x90A60160); > + spec->num_dmics = 1; > + break; > + case 0x10280256: /* Both */ > + case 0x10280057: > + stac92xx_set_config_reg(codec, 0x0b, 0x90A70170); > + stac92xx_set_config_reg(codec, 0x13, 0x90A60160); > + spec->num_dmics = 1; > + break; > + } > + break; > + default: > + spec->num_dmics = STAC92HD73XX_NUM_DMICS; > + } > > spec->num_pwrs = ARRAY_SIZE(stac92hd73xx_pwr_nids); > spec->pwr_nids = stac92hd73xx_pwr_nids; > Hello Takashi, Please disregard my last patch I got the naming scheme totally wrong for the pin configs. Here is the correct method below. --- Added PCI_QUIRKS for laptop that have the 92HDxxx family of codecs. Signed-off-by: Matthew Ranostay <mranostay@embeddedalley.com> --- diff -r 6b53fa114faa pci/hda/patch_sigmatel.c --- a/pci/hda/patch_sigmatel.c Tue Feb 19 15:03:57 2008 +0100 +++ b/pci/hda/patch_sigmatel.c Wed Feb 20 20:58:23 2008 -0500 @@ -64,11 +64,14 @@ enum { enum { STAC_92HD73XX_REF, + STAC_DELL_M6, STAC_92HD73XX_MODELS }; enum { STAC_92HD71BXX_REF, + STAC_DELL_M4_1, + STAC_DELL_M4_2, STAC_92HD71BXX_MODELS }; @@ -334,10 +337,10 @@ static hda_nid_t stac922x_pin_nids[10] = 0x0f, 0x10, 0x11, 0x15, 0x1b, }; -static hda_nid_t stac92hd73xx_pin_nids[12] = { +static hda_nid_t stac92hd73xx_pin_nids[13] = { 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, - 0x14, 0x22 + 0x14, 0x1e, 0x22 }; static hda_nid_t stac92hd71bxx_pin_nids[10] = { @@ -1220,24 +1223,48 @@ static struct snd_pci_quirk stac925x_cfg {} /* terminator */ }; -static unsigned int ref92hd73xx_pin_configs[12] = { +static unsigned int ref92hd73xx_pin_configs[13] = { 0x02214030, 0x02a19040, 0x01a19020, 0x02214030, 0x0181302e, 0x01014010, 0x01014020, 0x01014030, 0x02319040, 0x90a000f0, 0x90a000f0, 0x01452050, + 0x01452050, +}; + +static unsigned int dell_m6_pin_configs[13] = { + 0x0321101f, 0x4f00000f, 0x4f0000f0, 0x90170110, + 0x03a11020, 0x03011050, 0x4f0000f0, 0x4f0000f0, + 0x4f0000f0, 0x90a60160, 0x4f0000f0, 0x4f0000f0, + 0x4f0000f0, }; static unsigned int *stac92hd73xx_brd_tbl[STAC_92HD73XX_MODELS] = { - [STAC_92HD73XX_REF] = ref92hd73xx_pin_configs, + [STAC_92HD73XX_REF] = ref92hd73xx_pin_configs, + [STAC_DELL_M6] = dell_m6_pin_configs, }; static const char *stac92hd73xx_models[STAC_92HD73XX_MODELS] = { [STAC_92HD73XX_REF] = "ref", + [STAC_DELL_M6] = "dell-m6", }; static struct snd_pci_quirk stac92hd73xx_cfg_tbl[] = { /* SigmaTel reference board */ SND_PCI_QUIRK(PCI_VENDOR_ID_INTEL, 0x2668, - "DFI LanParty", STAC_92HD73XX_REF), + "DFI LanParty", STAC_92HD73XX_REF), + SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0254, + "unknown Dell", STAC_DELL_M6), + SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0255, + "unknown Dell", STAC_DELL_M6), + SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0256, + "unknown Dell", STAC_DELL_M6), + SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0257, + "unknown Dell", STAC_DELL_M6), + SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x025e, + "unknown Dell", STAC_DELL_M6), + SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x025f, + "unknown Dell", STAC_DELL_M6), + SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0271, + "unknown Dell", STAC_DELL_M6), {} /* terminator */ }; @@ -1247,18 +1274,56 @@ static unsigned int ref92hd71bxx_pin_con 0x90a000f0, 0x01452050, }; +static unsigned int dell_m4_1_pin_configs[13] = { + 0x0421101f, 0x04a11221, 0x40f000f0, 0x90170110, + 0x23a1902e, 0x23014250, 0x40f000f0, 0x4f0000f0, + 0x40f000f0, 0x4f0000f0, +}; + +static unsigned int dell_m4_2_pin_configs[13] = { + 0x0421101f, 0x04a11221, 0x90a70330, 0x90170110, + 0x23a1902e, 0x23014250, 0x40f000f0, 0x40f000f0, + 0x40f000f0, 0x044413b0, +}; + static unsigned int *stac92hd71bxx_brd_tbl[STAC_92HD71BXX_MODELS] = { [STAC_92HD71BXX_REF] = ref92hd71bxx_pin_configs, + [STAC_DELL_M4_1] = dell_m4_1_pin_configs, + [STAC_DELL_M4_2] = dell_m4_2_pin_configs, }; static const char *stac92hd71bxx_models[STAC_92HD71BXX_MODELS] = { [STAC_92HD71BXX_REF] = "ref", + [STAC_DELL_M4_1] = "dell-m4-1", + [STAC_DELL_M4_2] = "dell-m4-2", }; static struct snd_pci_quirk stac92hd71bxx_cfg_tbl[] = { /* SigmaTel reference board */ SND_PCI_QUIRK(PCI_VENDOR_ID_INTEL, 0x2668, "DFI LanParty", STAC_92HD71BXX_REF), + SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0233, + "unknown Dell", STAC_DELL_M4_1), + SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0234, + "unknown Dell", STAC_DELL_M4_1), + SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0250, + "unknown Dell", STAC_DELL_M4_1), + SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x024f, + "unknown Dell", STAC_DELL_M4_1), + SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x024d, + "unknown Dell", STAC_DELL_M4_1), + SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0251, + "unknown Dell", STAC_DELL_M4_1), + SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0277, + "unknown Dell", STAC_DELL_M4_1), + SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0263, + "unknown Dell", STAC_DELL_M4_2), + SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0265, + "unknown Dell", STAC_DELL_M4_2), + SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0262, + "unknown Dell", STAC_DELL_M4_2), + SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0264, + "unknown Dell", STAC_DELL_M4_2), {} /* terminator */ }; @@ -3355,12 +3420,38 @@ again: spec->num_muxes = ARRAY_SIZE(stac92hd73xx_mux_nids); spec->num_adcs = ARRAY_SIZE(stac92hd73xx_adc_nids); - spec->num_dmics = STAC92HD73XX_NUM_DMICS; spec->num_dmuxes = ARRAY_SIZE(stac92hd73xx_dmux_nids); spec->dinput_mux = &stac92hd73xx_dmux; /* GPIO0 High = Enable EAPD */ spec->gpio_mask = spec->gpio_dir = 0x1; spec->gpio_data = 0x01; + + switch (spec->board_config) { + case STAC_DELL_M6: + switch (codec->subsystem_id) { + case 0x1028025e: /* Analog Mics */ + case 0x1028025f: + stac92xx_set_config_reg(codec, 0x0b, 0x90A70170); + spec->num_dmics = 0; + break; + case 0x10280254: /* Digital Mics */ + case 0x10280255: + case 0x10280271: + case 0x10280272: + stac92xx_set_config_reg(codec, 0x13, 0x90A60160); + spec->num_dmics = 1; + break; + case 0x10280256: /* Both */ + case 0x10280057: + stac92xx_set_config_reg(codec, 0x0b, 0x90A70170); + stac92xx_set_config_reg(codec, 0x13, 0x90A60160); + spec->num_dmics = 1; + break; + } + break; + default: + spec->num_dmics = STAC92HD73XX_NUM_DMICS; + } spec->num_pwrs = ARRAY_SIZE(stac92hd73xx_pwr_nids); spec->pwr_nids = stac92hd73xx_pwr_nids; ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] hda: 92HDxxxx PCI Quirks 2008-02-21 2:14 ` Matthew Ranostay @ 2008-02-21 7:06 ` Takashi Iwai 0 siblings, 0 replies; 3+ messages in thread From: Takashi Iwai @ 2008-02-21 7:06 UTC (permalink / raw) To: Matthew Ranostay; +Cc: alsa-devel At Wed, 20 Feb 2008 21:14:28 -0500, Matthew Ranostay wrote: > > Matthew Ranostay wrote: > > Added PCI_QUIRKS for laptop that have the 92HDxxx family of codecs. > > > > Signed-off-by: Matthew Ranostay <mranostay@embeddedalley.com> > > --- > > diff -r 6b53fa114faa pci/hda/patch_sigmatel.c > > --- a/pci/hda/patch_sigmatel.c Tue Feb 19 15:03:57 2008 +0100 > > +++ b/pci/hda/patch_sigmatel.c Wed Feb 20 17:18:15 2008 -0500 > > @@ -64,11 +64,14 @@ enum { > > > > enum { > > STAC_92HD73XX_REF, > > + STAC_DELL_M6_5ST, > > STAC_92HD73XX_MODELS > > }; > > > > enum { > > STAC_92HD71BXX_REF, > > + STAC_DELL_M4_5ST, > > + STAC_DELL_M4_6ST, > > STAC_92HD71BXX_MODELS > > }; > > > > @@ -334,10 +337,10 @@ static hda_nid_t stac922x_pin_nids[10] = > > 0x0f, 0x10, 0x11, 0x15, 0x1b, > > }; > > > > -static hda_nid_t stac92hd73xx_pin_nids[12] = { > > +static hda_nid_t stac92hd73xx_pin_nids[13] = { > > 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, > > 0x0f, 0x10, 0x11, 0x12, 0x13, > > - 0x14, 0x22 > > + 0x14, 0x1e, 0x22 > > }; > > > > static hda_nid_t stac92hd71bxx_pin_nids[10] = { > > @@ -1220,24 +1223,48 @@ static struct snd_pci_quirk stac925x_cfg > > {} /* terminator */ > > }; > > > > -static unsigned int ref92hd73xx_pin_configs[12] = { > > +static unsigned int ref92hd73xx_pin_configs[13] = { > > 0x02214030, 0x02a19040, 0x01a19020, 0x02214030, > > 0x0181302e, 0x01014010, 0x01014020, 0x01014030, > > 0x02319040, 0x90a000f0, 0x90a000f0, 0x01452050, > > + 0x01452050, > > +}; > > + > > +static unsigned int dell_m6_5st_pin_configs[13] = { > > + 0x0321101f, 0x4f00000f, 0x4f0000f0, 0x90170110, > > + 0x03a11020, 0x03011050, 0x4f0000f0, 0x4f0000f0, > > + 0x4f0000f0, 0x90a60160, 0x4f0000f0, 0x4f0000f0, > > + 0x4f0000f0, > > }; > > > > static unsigned int *stac92hd73xx_brd_tbl[STAC_92HD73XX_MODELS] = { > > - [STAC_92HD73XX_REF] = ref92hd73xx_pin_configs, > > + [STAC_92HD73XX_REF] = ref92hd73xx_pin_configs, > > + [STAC_DELL_M6_5ST] = dell_m6_5st_pin_configs, > > }; > > > > static const char *stac92hd73xx_models[STAC_92HD73XX_MODELS] = { > > [STAC_92HD73XX_REF] = "ref", > > + [STAC_DELL_M6_5ST] = "dell-m6-5stack", > > }; > > > > static struct snd_pci_quirk stac92hd73xx_cfg_tbl[] = { > > /* SigmaTel reference board */ > > SND_PCI_QUIRK(PCI_VENDOR_ID_INTEL, 0x2668, > > - "DFI LanParty", STAC_92HD73XX_REF), > > + "DFI LanParty", STAC_92HD73XX_REF), > > + SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0254, > > + "unknown Dell", STAC_DELL_M6_5ST), > > + SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0255, > > + "unknown Dell", STAC_DELL_M6_5ST), > > + SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0256, > > + "unknown Dell", STAC_DELL_M6_5ST), > > + SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0257, > > + "unknown Dell", STAC_DELL_M6_5ST), > > + SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x025e, > > + "unknown Dell", STAC_DELL_M6_5ST), > > + SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x025f, > > + "unknown Dell", STAC_DELL_M6_5ST), > > + SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0271, > > + "unknown Dell", STAC_DELL_M6_5ST), > > {} /* terminator */ > > }; > > > > @@ -1247,18 +1274,56 @@ static unsigned int ref92hd71bxx_pin_con > > 0x90a000f0, 0x01452050, > > }; > > > > +static unsigned int dell_m4_5st_pin_configs[13] = { > > + 0x0421101f, 0x04a11221, 0x40f000f0, 0x90170110, > > + 0x23a1902e, 0x23014250, 0x40f000f0, 0x4f0000f0, > > + 0x40f000f0, 0x4f0000f0, > > +}; > > + > > +static unsigned int dell_m4_6st_pin_configs[13] = { > > + 0x0421101f, 0x04a11221, 0x90a70330, 0x90170110, > > + 0x23a1902e, 0x23014250, 0x40f000f0, 0x40f000f0, > > + 0x40f000f0, 0x044413b0, > > +}; > > + > > static unsigned int *stac92hd71bxx_brd_tbl[STAC_92HD71BXX_MODELS] = { > > [STAC_92HD71BXX_REF] = ref92hd71bxx_pin_configs, > > + [STAC_DELL_M4_5ST] = dell_m4_5st_pin_configs, > > + [STAC_DELL_M4_6ST] = dell_m4_6st_pin_configs, > > }; > > > > static const char *stac92hd71bxx_models[STAC_92HD71BXX_MODELS] = { > > [STAC_92HD71BXX_REF] = "ref", > > + [STAC_DELL_M4_5ST] = "dell-m4-5stack", > > + [STAC_DELL_M4_6ST] = "dell-m4-6stack", > > }; > > > > static struct snd_pci_quirk stac92hd71bxx_cfg_tbl[] = { > > /* SigmaTel reference board */ > > SND_PCI_QUIRK(PCI_VENDOR_ID_INTEL, 0x2668, > > "DFI LanParty", STAC_92HD71BXX_REF), > > + SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0233, > > + "unknown Dell", STAC_DELL_M4_5ST), > > + SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0234, > > + "unknown Dell", STAC_DELL_M4_5ST), > > + SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0250, > > + "unknown Dell", STAC_DELL_M4_5ST), > > + SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x024f, > > + "unknown Dell", STAC_DELL_M4_5ST), > > + SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x024d, > > + "unknown Dell", STAC_DELL_M4_5ST), > > + SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0251, > > + "unknown Dell", STAC_DELL_M4_5ST), > > + SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0277, > > + "unknown Dell", STAC_DELL_M4_5ST), > > + SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0263, > > + "unknown Dell", STAC_DELL_M4_6ST), > > + SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0265, > > + "unknown Dell", STAC_DELL_M4_6ST), > > + SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0262, > > + "unknown Dell", STAC_DELL_M4_6ST), > > + SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0264, > > + "unknown Dell", STAC_DELL_M4_6ST), > > {} /* terminator */ > > }; > > > > @@ -3355,12 +3420,38 @@ again: > > > > spec->num_muxes = ARRAY_SIZE(stac92hd73xx_mux_nids); > > spec->num_adcs = ARRAY_SIZE(stac92hd73xx_adc_nids); > > - spec->num_dmics = STAC92HD73XX_NUM_DMICS; > > spec->num_dmuxes = ARRAY_SIZE(stac92hd73xx_dmux_nids); > > spec->dinput_mux = &stac92hd73xx_dmux; > > /* GPIO0 High = Enable EAPD */ > > spec->gpio_mask = spec->gpio_dir = 0x1; > > spec->gpio_data = 0x01; > > + > > + switch (spec->board_config) { > > + case STAC_DELL_M6_5ST: > > + switch (codec->subsystem_id) { > > + case 0x1028025e: /* Analog Mics */ > > + case 0x1028025f: > > + stac92xx_set_config_reg(codec, 0x0b, 0x90A70170); > > + spec->num_dmics = 0; > > + break; > > + case 0x10280254: /* Digital Mics */ > > + case 0x10280255: > > + case 0x10280271: > > + case 0x10280272: > > + stac92xx_set_config_reg(codec, 0x13, 0x90A60160); > > + spec->num_dmics = 1; > > + break; > > + case 0x10280256: /* Both */ > > + case 0x10280057: > > + stac92xx_set_config_reg(codec, 0x0b, 0x90A70170); > > + stac92xx_set_config_reg(codec, 0x13, 0x90A60160); > > + spec->num_dmics = 1; > > + break; > > + } > > + break; > > + default: > > + spec->num_dmics = STAC92HD73XX_NUM_DMICS; > > + } > > > > spec->num_pwrs = ARRAY_SIZE(stac92hd73xx_pwr_nids); > > spec->pwr_nids = stac92hd73xx_pwr_nids; > > > > Hello Takashi, > > Please disregard my last patch I got the naming scheme totally wrong > for the pin configs. Here is the correct method below. > > --- > Added PCI_QUIRKS for laptop that have the 92HDxxx family of codecs. > > Signed-off-by: Matthew Ranostay <mranostay@embeddedalley.com> OK, applied the newer one. Thanks. Takashi ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2008-02-21 7:06 UTC | newest] Thread overview: 3+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2008-02-20 22:47 [PATCH] hda: 92HDxxxx PCI Quirks Matthew Ranostay 2008-02-21 2:14 ` Matthew Ranostay 2008-02-21 7:06 ` Takashi Iwai
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.