--- /dev/null
+From: Matthew Ranostay <mranostay@embeddedalley.com>
+Subject: ALSA: hda: Add STAC_DELL_M4_3 quirk
+Patch-mainline:
+References: bnc#446025
+
+Added STAC_DELL_M4_3 quirk for Dell systems, also reorganized the
+board config switch to assign number of digital muxes, microphones,
+and SPDIF muxes via the PCI quirk defined.
+
+Signed-off-by: Matthew Ranostay <mranostay@embeddedalley.com>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+
+---
+ Documentation/sound/alsa/ALSA-Configuration.txt | 1
+ sound/pci/hda/patch_sigmatel.c | 26 ++++++++++++++++++++----
+ 2 files changed, 23 insertions(+), 4 deletions(-)
+
+--- a/Documentation/sound/alsa/ALSA-Configuration.txt
++++ b/Documentation/sound/alsa/ALSA-Configuration.txt
+@@ -1076,6 +1076,7 @@ Prior to version 0.9.0rc4 options had a
+ ref Reference board
+ dell-m4-1 Dell desktops
+ dell-m4-2 Dell desktops
++ dell-m4-3 Dell desktops
+
+ STAC92HD73*
+ ref Reference board
+--- a/sound/pci/hda/patch_sigmatel.c
++++ b/sound/pci/hda/patch_sigmatel.c
+@@ -84,6 +84,7 @@ enum {
+ STAC_92HD71BXX_REF,
+ STAC_DELL_M4_1,
+ STAC_DELL_M4_2,
++ STAC_DELL_M4_3,
+ STAC_HP_M4,
+ STAC_92HD71BXX_MODELS
+ };
+@@ -1675,10 +1676,17 @@ static unsigned int dell_m4_2_pin_config
+ 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] = {
+ [STAC_92HD71BXX_REF] = ref92hd71bxx_pin_configs,
+ [STAC_DELL_M4_1] = dell_m4_1_pin_configs,
+ [STAC_DELL_M4_2] = dell_m4_2_pin_configs,
++ [STAC_DELL_M4_3] = dell_m4_3_pin_configs,
+ [STAC_HP_M4] = NULL,
+ };
+
+@@ -1686,6 +1694,7 @@ static const char *stac92hd71bxx_models[
+ [STAC_92HD71BXX_REF] = "ref",
+ [STAC_DELL_M4_1] = "dell-m4-1",
+ [STAC_DELL_M4_2] = "dell-m4-2",
++ [STAC_DELL_M4_3] = "dell-m4-3",
+ [STAC_HP_M4] = "hp-m4",
+ };
+
+@@ -1721,6 +1730,8 @@ static struct snd_pci_quirk stac92hd71bx
+ "unknown Dell", STAC_DELL_M4_2),
+ SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0264,
+ "unknown Dell", STAC_DELL_M4_2),
++ SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x02aa,
++ "unknown Dell", STAC_DELL_M4_3),
+ {} /* terminator */
+ };
+
+@@ -4575,14 +4586,21 @@ again:
+
+ switch (spec->board_config) {
+ case STAC_HP_M4:
+- spec->num_dmics = 0;
+- spec->num_smuxes = 0;
+- spec->num_dmuxes = 0;
+-
+ /* enable internal microphone */
+ stac92xx_set_config_reg(codec, 0x0e, 0x01813040);
+ stac92xx_auto_set_pinctl(codec, 0x0e,
+ 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;
+ default:
+ spec->num_dmics = STAC92HD71BXX_NUM_DMICS;