瀏覽代碼

Merge branch 'topic/fix/hda' into topic/hda

Conflicts:
	sound/pci/hda/patch_sigmatel.c
Takashi Iwai 16 年之前
父節點
當前提交
75a287d9a3
共有 2 個文件被更改,包括 23 次插入4 次删除
  1. 1 0
      Documentation/sound/alsa/ALSA-Configuration.txt
  2. 22 4
      sound/pci/hda/patch_sigmatel.c

+ 1 - 0
Documentation/sound/alsa/ALSA-Configuration.txt

@@ -1078,6 +1078,7 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
 	  ref		Reference board
 	  ref		Reference board
 	  dell-m4-1	Dell desktops
 	  dell-m4-1	Dell desktops
 	  dell-m4-2	Dell desktops
 	  dell-m4-2	Dell desktops
+	  dell-m4-3	Dell desktops
 
 
 	STAC92HD73*
 	STAC92HD73*
 	  ref		Reference board
 	  ref		Reference board

+ 22 - 4
sound/pci/hda/patch_sigmatel.c

@@ -83,6 +83,7 @@ enum {
 	STAC_92HD71BXX_REF,
 	STAC_92HD71BXX_REF,
 	STAC_DELL_M4_1,
 	STAC_DELL_M4_1,
 	STAC_DELL_M4_2,
 	STAC_DELL_M4_2,
+	STAC_DELL_M4_3,
 	STAC_HP_M4,
 	STAC_HP_M4,
 	STAC_92HD71BXX_MODELS
 	STAC_92HD71BXX_MODELS
 };
 };
@@ -1721,10 +1722,17 @@ static unsigned int dell_m4_2_pin_configs[11] = {
 	0x40f000f0, 0x044413b0, 0x044413b0,
 	0x40f000f0, 0x044413b0, 0x044413b0,
 };
 };
 
 
+static unsigned int dell_m4_3_pin_configs[11] = {
+	0x0421101f, 0x04a11221, 0x90a70330, 0x90170110,
+	0x40f000f0, 0x40f000f0, 0x40f000f0, 0x90a000f0,
+	0x40f000f0, 0x044413b0, 0x044413b0,
+};
+
 static unsigned int *stac92hd71bxx_brd_tbl[STAC_92HD71BXX_MODELS] = {
 static unsigned int *stac92hd71bxx_brd_tbl[STAC_92HD71BXX_MODELS] = {
 	[STAC_92HD71BXX_REF] = ref92hd71bxx_pin_configs,
 	[STAC_92HD71BXX_REF] = ref92hd71bxx_pin_configs,
 	[STAC_DELL_M4_1]	= dell_m4_1_pin_configs,
 	[STAC_DELL_M4_1]	= dell_m4_1_pin_configs,
 	[STAC_DELL_M4_2]	= dell_m4_2_pin_configs,
 	[STAC_DELL_M4_2]	= dell_m4_2_pin_configs,
+	[STAC_DELL_M4_3]	= dell_m4_3_pin_configs,
 	[STAC_HP_M4]		= NULL,
 	[STAC_HP_M4]		= NULL,
 };
 };
 
 
@@ -1732,6 +1740,7 @@ static const char *stac92hd71bxx_models[STAC_92HD71BXX_MODELS] = {
 	[STAC_92HD71BXX_REF] = "ref",
 	[STAC_92HD71BXX_REF] = "ref",
 	[STAC_DELL_M4_1] = "dell-m4-1",
 	[STAC_DELL_M4_1] = "dell-m4-1",
 	[STAC_DELL_M4_2] = "dell-m4-2",
 	[STAC_DELL_M4_2] = "dell-m4-2",
+	[STAC_DELL_M4_3] = "dell-m4-3",
 	[STAC_HP_M4] = "hp-m4",
 	[STAC_HP_M4] = "hp-m4",
 };
 };
 
 
@@ -1767,6 +1776,8 @@ static struct snd_pci_quirk stac92hd71bxx_cfg_tbl[] = {
 				"unknown Dell", STAC_DELL_M4_2),
 				"unknown Dell", STAC_DELL_M4_2),
 	SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0264,
 	SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0264,
 				"unknown Dell", STAC_DELL_M4_2),
 				"unknown Dell", STAC_DELL_M4_2),
+	SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x02aa,
+				"unknown Dell", STAC_DELL_M4_3),
 	{} /* terminator */
 	{} /* terminator */
 };
 };
 
 
@@ -4753,14 +4764,21 @@ again:
 
 
 	switch (spec->board_config) {
 	switch (spec->board_config) {
 	case STAC_HP_M4:
 	case STAC_HP_M4:
-		spec->num_dmics = 0;
-		spec->num_smuxes = 0;
-		spec->num_dmuxes = 0;
-
 		/* enable internal microphone */
 		/* enable internal microphone */
 		stac_change_pin_config(codec, 0x0e, 0x01813040);
 		stac_change_pin_config(codec, 0x0e, 0x01813040);
 		stac92xx_auto_set_pinctl(codec, 0x0e,
 		stac92xx_auto_set_pinctl(codec, 0x0e,
 			AC_PINCTL_IN_EN | AC_PINCTL_VREF_80);
 			AC_PINCTL_IN_EN | AC_PINCTL_VREF_80);
+		/* fallthru */
+	case STAC_DELL_M4_2:
+		spec->num_dmics = 0;
+		spec->num_smuxes = 0;
+		spec->num_dmuxes = 0;
+		break;
+	case STAC_DELL_M4_1:
+	case STAC_DELL_M4_3:
+		spec->num_dmics = 1;
+		spec->num_smuxes = 0;
+		spec->num_dmuxes = 0;
 		break;
 		break;
 	default:
 	default:
 		spec->num_dmics = STAC92HD71BXX_NUM_DMICS;
 		spec->num_dmics = STAC92HD71BXX_NUM_DMICS;