summaryrefslogtreecommitdiff
path: root/sound/pci
diff options
context:
space:
mode:
authorDavid Henningsson <david.henningsson@canonical.com>2010-10-25 23:52:04 +0200
committerAndi Kleen <ak@linux.intel.com>2010-12-14 23:40:03 +0100
commit4d610bd1b4eccec1002bddd584f47d1bfe612e2d (patch)
treef864c02846da086289491a057d0b9c44fad2361b /sound/pci
parent4f313ac597120c8b657dba169b3bb8b71573b9de (diff)
ALSA: HDA: Enable internal mic on Dell E6410 and Dell E6510
[Not upstream as .37 fixes this differently in a much more complete way that is not able to be backported easily.] (Ported on top of 2.6.36) BugLink: http://launchpad.net/bugs/628961 BugLink: http://launchpad.net/bugs/605047 Signed-off-by: David Henningsson <david.henningsson@canonical.com> Signed-off-by: Diego Elio Pettenò <flameeyes@gmail.com> Acked-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'sound/pci')
-rw-r--r--sound/pci/hda/patch_sigmatel.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/sound/pci/hda/patch_sigmatel.c b/sound/pci/hda/patch_sigmatel.c
index b8d730c47df1..0d69d8edcd8b 100644
--- a/sound/pci/hda/patch_sigmatel.c
+++ b/sound/pci/hda/patch_sigmatel.c
@@ -93,6 +93,7 @@ enum {
STAC_92HD83XXX_REF,
STAC_92HD83XXX_PWR_REF,
STAC_DELL_S14,
+ STAC_DELL_E6410,
STAC_92HD83XXX_HP,
STAC_92HD83XXX_MODELS
};
@@ -1192,6 +1193,13 @@ static int stac92xx_build_controls(struct hda_codec *codec)
return 0;
}
+/* Deliberately turn off 0x0f (Dock Mic) to make it choose Int Mic instead */
+static unsigned int dell_e6410_pin_configs[10] = {
+ 0x04a11020, 0x0421101f, 0x400000f0, 0x90170110,
+ 0x23011050, 0x40f000f0, 0x400000f0, 0x90a60130,
+ 0x40f000f0, 0x40f000f0,
+};
+
static unsigned int ref9200_pin_configs[8] = {
0x01c47010, 0x01447010, 0x0221401f, 0x01114010,
0x02a19020, 0x01a19021, 0x90100140, 0x01813122,
@@ -1636,6 +1644,7 @@ static unsigned int *stac92hd83xxx_brd_tbl[STAC_92HD83XXX_MODELS] = {
[STAC_92HD83XXX_REF] = ref92hd83xxx_pin_configs,
[STAC_92HD83XXX_PWR_REF] = ref92hd83xxx_pin_configs,
[STAC_DELL_S14] = dell_s14_pin_configs,
+ [STAC_DELL_E6410] = dell_e6410_pin_configs,
};
static const char *stac92hd83xxx_models[STAC_92HD83XXX_MODELS] = {
@@ -1643,6 +1652,7 @@ static const char *stac92hd83xxx_models[STAC_92HD83XXX_MODELS] = {
[STAC_92HD83XXX_REF] = "ref",
[STAC_92HD83XXX_PWR_REF] = "mic-ref",
[STAC_DELL_S14] = "dell-s14",
+ [STAC_DELL_E6410] = "dell-e6410",
[STAC_92HD83XXX_HP] = "hp",
};
@@ -1654,6 +1664,10 @@ static struct snd_pci_quirk stac92hd83xxx_cfg_tbl[] = {
"DFI LanParty", STAC_92HD83XXX_REF),
SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x02ba,
"unknown Dell", STAC_DELL_S14),
+ SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x040a,
+ "Dell E6410", STAC_DELL_E6410),
+ SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x040b,
+ "Dell E6510", STAC_DELL_E6410),
SND_PCI_QUIRK_MASK(PCI_VENDOR_ID_HP, 0xff00, 0x3600,
"HP", STAC_92HD83XXX_HP),
{} /* terminator */