--- /dev/null
+From 6162552b0de6ba80937c3dd53e084967851cd199 Mon Sep 17 00:00:00 2001
+From: Takashi Iwai <tiwai@suse.de>
+Date: Wed, 25 Jul 2012 13:54:55 +0200
+Subject: ALSA: hda - Fix invalid D3 of headphone DAC on VT202x codecs
+
+From: Takashi Iwai <tiwai@suse.de>
+
+commit 6162552b0de6ba80937c3dd53e084967851cd199 upstream.
+
+We've got a bug report about the silent output from the headphone on a
+mobo with VT2021, and spotted out that this was because of the wrong
+D3 state on the DAC for the headphone output. The bug is triggered by
+the incomplete check for this DAC in set_widgets_power_state_vt1718S().
+It checks only the connectivity of the primary output (0x27) but
+doesn't consider the path from the headphone pin (0x28).
+
+Now this patch fixes the problem by checking both pins for DAC 0x0b.
+
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ sound/pci/hda/patch_via.c | 7 +++++--
+ 1 file changed, 5 insertions(+), 2 deletions(-)
+
+--- a/sound/pci/hda/patch_via.c
++++ b/sound/pci/hda/patch_via.c
+@@ -3226,7 +3226,7 @@ static void set_widgets_power_state_vt17
+ {
+ struct via_spec *spec = codec->spec;
+ int imux_is_smixer;
+- unsigned int parm;
++ unsigned int parm, parm2;
+ /* MUX6 (1eh) = stereo mixer */
+ imux_is_smixer =
+ snd_hda_codec_read(codec, 0x1e, 0, AC_VERB_GET_CONNECT_SEL, 0x00) == 5;
+@@ -3249,7 +3249,7 @@ static void set_widgets_power_state_vt17
+ parm = AC_PWRST_D3;
+ set_pin_power_state(codec, 0x27, &parm);
+ update_power_state(codec, 0x1a, parm);
+- update_power_state(codec, 0xb, parm);
++ parm2 = parm; /* for pin 0x0b */
+
+ /* PW2 (26h), AOW2 (ah) */
+ parm = AC_PWRST_D3;
+@@ -3264,6 +3264,9 @@ static void set_widgets_power_state_vt17
+ if (!spec->hp_independent_mode) /* check for redirected HP */
+ set_pin_power_state(codec, 0x28, &parm);
+ update_power_state(codec, 0x8, parm);
++ if (!spec->hp_independent_mode && parm2 != AC_PWRST_D3)
++ parm = parm2;
++ update_power_state(codec, 0xb, parm);
+ /* MW9 (21h), Mw2 (1ah), AOW0 (8h) */
+ update_power_state(codec, 0x21, imux_is_smixer ? AC_PWRST_D0 : parm);
+
--- /dev/null
+From 1f43f6c1bc8d740e75b4177eb29110858bb5fea2 Mon Sep 17 00:00:00 2001
+From: Takashi Iwai <tiwai@suse.de>
+Date: Tue, 31 Jul 2012 10:40:05 +0200
+Subject: ALSA: hda - Fix mute-LED GPIO initialization for IDT codecs
+
+From: Takashi Iwai <tiwai@suse.de>
+
+commit 1f43f6c1bc8d740e75b4177eb29110858bb5fea2 upstream.
+
+The IDT codecs initializes the GPIO setup for mute LEDs via
+snd_hda_sync_vmaster_hook(). This works in most cases except for the
+very first call, which is called before PCM and control creations.
+Thus before Master switch is set manually via alsactl, the mute LED
+may show the wrong state, depending on the polarity.
+
+Now it's fixed by calling the LED-status update function manually when
+no vmaster is set yet.
+
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ sound/pci/hda/patch_sigmatel.c | 7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
+
+--- a/sound/pci/hda/patch_sigmatel.c
++++ b/sound/pci/hda/patch_sigmatel.c
+@@ -4420,7 +4420,12 @@ static int stac92xx_init(struct hda_code
+ snd_hda_jack_report_sync(codec);
+
+ /* sync mute LED */
+- snd_hda_sync_vmaster_hook(&spec->vmaster_mute);
++ if (spec->gpio_led) {
++ if (spec->vmaster_mute.hook)
++ snd_hda_sync_vmaster_hook(&spec->vmaster_mute);
++ else /* the very first init call doesn't have vmaster yet */
++ stac92xx_update_led_status(codec, false);
++ }
+
+ /* sync the power-map */
+ if (spec->num_pwrs)
--- /dev/null
+From a3e199732b8e2b272e82cc1ccc49c35239ed6c5a Mon Sep 17 00:00:00 2001
+From: Takashi Iwai <tiwai@suse.de>
+Date: Thu, 26 Jul 2012 08:17:20 +0200
+Subject: ALSA: hda - Fix mute-LED GPIO setup for HP Mini 210
+
+From: Takashi Iwai <tiwai@suse.de>
+
+commit a3e199732b8e2b272e82cc1ccc49c35239ed6c5a upstream.
+
+BIOS on HP Mini 210 doesn't provide the proper "HP_Mute_LED" DMI
+string, thus the driver doesn't initialize the GPIO, too. In the
+earlier kernel, the driver falls back to GPIO1, but since 3.3 we've
+stopped this due to other wrongly advertised machines.
+
+For fixing this particular case, add a new model type to specify the
+default polarity explicitly so that the fallback to GPIO1 is handled.
+
+Bugzilla: https://bugzilla.novell.com/show_bug.cgi?id=772923
+
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ sound/pci/hda/patch_sigmatel.c | 10 +++++++++-
+ 1 file changed, 9 insertions(+), 1 deletion(-)
+
+--- a/sound/pci/hda/patch_sigmatel.c
++++ b/sound/pci/hda/patch_sigmatel.c
+@@ -101,6 +101,7 @@ enum {
+ STAC_92HD83XXX_HP_cNB11_INTQUAD,
+ STAC_HP_DV7_4000,
+ STAC_HP_ZEPHYR,
++ STAC_92HD83XXX_HP_LED,
+ STAC_92HD83XXX_MODELS
+ };
+
+@@ -1675,6 +1676,7 @@ static const char * const stac92hd83xxx_
+ [STAC_92HD83XXX_HP_cNB11_INTQUAD] = "hp_cNB11_intquad",
+ [STAC_HP_DV7_4000] = "hp-dv7-4000",
+ [STAC_HP_ZEPHYR] = "hp-zephyr",
++ [STAC_92HD83XXX_HP_LED] = "hp-led",
+ };
+
+ static const struct snd_pci_quirk stac92hd83xxx_cfg_tbl[] = {
+@@ -1729,6 +1731,8 @@ static const struct snd_pci_quirk stac92
+ "HP", STAC_92HD83XXX_HP_cNB11_INTQUAD),
+ SND_PCI_QUIRK(PCI_VENDOR_ID_HP, 0x3561,
+ "HP", STAC_HP_ZEPHYR),
++ SND_PCI_QUIRK(PCI_VENDOR_ID_HP, 0x3660,
++ "HP Mini", STAC_92HD83XXX_HP_LED),
+ {} /* terminator */
+ };
+
+@@ -5507,6 +5511,7 @@ static void stac92hd8x_fill_auto_spec(st
+ static int patch_stac92hd83xxx(struct hda_codec *codec)
+ {
+ struct sigmatel_spec *spec;
++ int default_polarity = -1; /* no default cfg */
+ int err;
+
+ spec = kzalloc(sizeof(*spec), GFP_KERNEL);
+@@ -5555,9 +5560,12 @@ again:
+ case STAC_HP_ZEPHYR:
+ spec->init = stac92hd83xxx_hp_zephyr_init;
+ break;
++ case STAC_92HD83XXX_HP_LED:
++ default_polarity = 1;
++ break;
+ }
+
+- if (find_mute_led_cfg(codec, -1/*no default cfg*/))
++ if (find_mute_led_cfg(codec, default_polarity))
+ snd_printd("mute LED gpio %d polarity %d\n",
+ spec->gpio_led,
+ spec->gpio_led_polarity);
--- /dev/null
+From ff8a1e274cbc11da6b57849f925b895a212b56c9 Mon Sep 17 00:00:00 2001
+From: Takashi Iwai <tiwai@suse.de>
+Date: Tue, 31 Jul 2012 10:16:59 +0200
+Subject: ALSA: hda - Fix polarity of mute LED on HP Mini 210
+
+From: Takashi Iwai <tiwai@suse.de>
+
+commit ff8a1e274cbc11da6b57849f925b895a212b56c9 upstream.
+
+The commit a3e199732b made the LED working again on HP Mini 210 but
+with a wrong polarity. This patch fixes the polarity for this
+machine, and also introduce a new model string "hp-inv-led".
+
+Bugzilla: https://bugzilla.novell.com/show_bug.cgi?id=772923
+
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ sound/pci/hda/patch_sigmatel.c | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+--- a/sound/pci/hda/patch_sigmatel.c
++++ b/sound/pci/hda/patch_sigmatel.c
+@@ -102,6 +102,7 @@ enum {
+ STAC_HP_DV7_4000,
+ STAC_HP_ZEPHYR,
+ STAC_92HD83XXX_HP_LED,
++ STAC_92HD83XXX_HP_INV_LED,
+ STAC_92HD83XXX_MODELS
+ };
+
+@@ -1677,6 +1678,7 @@ static const char * const stac92hd83xxx_
+ [STAC_HP_DV7_4000] = "hp-dv7-4000",
+ [STAC_HP_ZEPHYR] = "hp-zephyr",
+ [STAC_92HD83XXX_HP_LED] = "hp-led",
++ [STAC_92HD83XXX_HP_INV_LED] = "hp-inv-led",
+ };
+
+ static const struct snd_pci_quirk stac92hd83xxx_cfg_tbl[] = {
+@@ -5561,6 +5563,9 @@ again:
+ spec->init = stac92hd83xxx_hp_zephyr_init;
+ break;
+ case STAC_92HD83XXX_HP_LED:
++ default_polarity = 0;
++ break;
++ case STAC_92HD83XXX_HP_INV_LED:
+ default_polarity = 1;
+ break;
+ }
--- /dev/null
+From 707fba3fa76a4c8855552f5d4c1a12430c09bce8 Mon Sep 17 00:00:00 2001
+From: Takashi Iwai <tiwai@suse.de>
+Date: Thu, 2 Aug 2012 09:04:39 +0200
+Subject: ALSA: hda - Support dock on Lenovo Thinkpad T530 with ALC269VC
+
+From: Takashi Iwai <tiwai@suse.de>
+
+commit 707fba3fa76a4c8855552f5d4c1a12430c09bce8 upstream.
+
+Lenovo Thinkpad T530 with ALC269VC codec has a dock port but BIOS
+doesn't set up the pins properly. Enable the pins as well as on
+Thinkpad X230 Tablet.
+
+Reported-and-tested-by: Mario <anyc@hadiko.de>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ sound/pci/hda/patch_realtek.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/sound/pci/hda/patch_realtek.c
++++ b/sound/pci/hda/patch_realtek.c
+@@ -6000,6 +6000,7 @@ static const struct snd_pci_quirk alc269
+ SND_PCI_QUIRK(0x17aa, 0x21b8, "Thinkpad Edge 14", ALC269_FIXUP_SKU_IGNORE),
+ SND_PCI_QUIRK(0x17aa, 0x21ca, "Thinkpad L412", ALC269_FIXUP_SKU_IGNORE),
+ SND_PCI_QUIRK(0x17aa, 0x21e9, "Thinkpad Edge 15", ALC269_FIXUP_SKU_IGNORE),
++ SND_PCI_QUIRK(0x17aa, 0x21f6, "Thinkpad T530", ALC269_FIXUP_LENOVO_DOCK),
+ SND_PCI_QUIRK(0x17aa, 0x2203, "Thinkpad X230 Tablet", ALC269_FIXUP_LENOVO_DOCK),
+ SND_PCI_QUIRK(0x17aa, 0x3bf8, "Quanta FL1", ALC269_FIXUP_QUANTA_MUTE),
+ SND_PCI_QUIRK(0x17aa, 0x3bf8, "Lenovo Ideapd", ALC269_FIXUP_PCM_44K),
--- /dev/null
+From bc733d495267a23ef8660220d696c6e549ce30b3 Mon Sep 17 00:00:00 2001
+From: Takashi Iwai <tiwai@suse.de>
+Date: Mon, 23 Jul 2012 11:35:55 +0200
+Subject: ALSA: mpu401: Fix missing initialization of irq field
+
+From: Takashi Iwai <tiwai@suse.de>
+
+commit bc733d495267a23ef8660220d696c6e549ce30b3 upstream.
+
+The irq field of struct snd_mpu401 is supposed to be initialized to -1.
+Since it's set to zero as of now, a probing error before the irq
+installation results in a kernel warning "Trying to free already-free
+IRQ 0".
+
+Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=44821
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ sound/drivers/mpu401/mpu401_uart.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/sound/drivers/mpu401/mpu401_uart.c
++++ b/sound/drivers/mpu401/mpu401_uart.c
+@@ -554,6 +554,7 @@ int snd_mpu401_uart_new(struct snd_card
+ spin_lock_init(&mpu->output_lock);
+ spin_lock_init(&mpu->timer_lock);
+ mpu->hardware = hardware;
++ mpu->irq = -1;
+ if (! (info_flags & MPU401_INFO_INTEGRATED)) {
+ int res_size = hardware == MPU401_HW_PC98II ? 4 : 2;
+ mpu->res = request_region(port, res_size, "MPU401 UART");
--- /dev/null
+From aff252a848ce21b431ba822de3dab9c4c94571cb Mon Sep 17 00:00:00 2001
+From: Daniel Mack <zonque@gmail.com>
+Date: Wed, 1 Aug 2012 10:16:53 +0200
+Subject: ALSA: snd-usb: fix clock source validity index
+
+From: Daniel Mack <zonque@gmail.com>
+
+commit aff252a848ce21b431ba822de3dab9c4c94571cb upstream.
+
+uac_clock_source_is_valid() uses the control selector value to access
+the bmControls bitmap of the clock source unit. This is wrong, as
+control selector values start from 1, while the bitmap uses all
+available bits.
+
+In other words, "Clock Validity Control" is stored in D3..2, not D5..4
+of the clock selector unit's bmControls.
+
+Signed-off-by: Daniel Mack <zonque@gmail.com>
+Reported-by: Andreas Koch <andreas@akdesigninc.com>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ sound/usb/clock.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/sound/usb/clock.c
++++ b/sound/usb/clock.c
+@@ -111,7 +111,8 @@ static bool uac_clock_source_is_valid(st
+ return 0;
+
+ /* If a clock source can't tell us whether it's valid, we assume it is */
+- if (!uac2_control_is_readable(cs_desc->bmControls, UAC2_CS_CONTROL_CLOCK_VALID))
++ if (!uac2_control_is_readable(cs_desc->bmControls,
++ UAC2_CS_CONTROL_CLOCK_VALID - 1))
+ return 1;
+
+ err = snd_usb_ctl_msg(dev, usb_rcvctrlpipe(dev, 0), UAC2_CS_CUR,
--- /dev/null
+From 9d40e5582c9c4cfb6977ba2a0ca9c2ed82c56f21 Mon Sep 17 00:00:00 2001
+From: Mark Brown <broonie@opensource.wolfsonmicro.com>
+Date: Mon, 30 Jul 2012 18:24:19 +0100
+Subject: ASoC: wm8962: Allow VMID time to fully ramp
+
+From: Mark Brown <broonie@opensource.wolfsonmicro.com>
+
+commit 9d40e5582c9c4cfb6977ba2a0ca9c2ed82c56f21 upstream.
+
+Required for reliable power up from cold.
+
+Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ sound/soc/codecs/wm8962.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+--- a/sound/soc/codecs/wm8962.c
++++ b/sound/soc/codecs/wm8962.c
+@@ -2501,6 +2501,9 @@ static int wm8962_set_bias_level(struct
+ /* VMID 2*250k */
+ snd_soc_update_bits(codec, WM8962_PWR_MGMT_1,
+ WM8962_VMID_SEL_MASK, 0x100);
++
++ if (codec->dapm.bias_level == SND_SOC_BIAS_OFF)
++ msleep(100);
+ break;
+
+ case SND_SOC_BIAS_OFF:
--- /dev/null
+From b8edf3e5522735c8ce78b81845f7a1a2d4a08626 Mon Sep 17 00:00:00 2001
+From: Mark Brown <broonie@opensource.wolfsonmicro.com>
+Date: Fri, 22 Jun 2012 17:21:17 +0100
+Subject: ASoC: wm8994: Ensure there are enough BCLKs for four channels
+
+From: Mark Brown <broonie@opensource.wolfsonmicro.com>
+
+commit b8edf3e5522735c8ce78b81845f7a1a2d4a08626 upstream.
+
+Otherwise if someone tries to use all four channels on AIF1 with the
+device in master mode we won't be able to clock out all the data.
+
+Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ sound/soc/codecs/wm8994.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/sound/soc/codecs/wm8994.c
++++ b/sound/soc/codecs/wm8994.c
+@@ -2649,7 +2649,7 @@ static int wm8994_hw_params(struct snd_p
+ return -EINVAL;
+ }
+
+- bclk_rate = params_rate(params) * 2;
++ bclk_rate = params_rate(params) * 4;
+ switch (params_format(params)) {
+ case SNDRV_PCM_FORMAT_S16_LE:
+ bclk_rate *= 16;
--- /dev/null
+From 9e2760d18b3cf179534bbc27692c84879c61b97c Mon Sep 17 00:00:00 2001
+From: Andreas Schwab <schwab@linux-m68k.org>
+Date: Sat, 28 Jul 2012 00:20:34 +0200
+Subject: m68k: Make sys_atomic_cmpxchg_32 work on classic m68k
+
+From: Andreas Schwab <schwab@linux-m68k.org>
+
+commit 9e2760d18b3cf179534bbc27692c84879c61b97c upstream.
+
+User space access must always go through uaccess accessors, since on
+classic m68k user space and kernel space are completely separate.
+
+Signed-off-by: Andreas Schwab <schwab@linux-m68k.org>
+Tested-by: Thorsten Glaser <tg@debian.org>
+Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ arch/m68k/kernel/sys_m68k.c | 8 ++++++--
+ 1 file changed, 6 insertions(+), 2 deletions(-)
+
+--- a/arch/m68k/kernel/sys_m68k.c
++++ b/arch/m68k/kernel/sys_m68k.c
+@@ -479,9 +479,13 @@ sys_atomic_cmpxchg_32(unsigned long newv
+ goto bad_access;
+ }
+
+- mem_value = *mem;
++ /*
++ * No need to check for EFAULT; we know that the page is
++ * present and writable.
++ */
++ __get_user(mem_value, mem);
+ if (mem_value == oldval)
+- *mem = newval;
++ __put_user(newval, mem);
+
+ pte_unmap_unlock(pte, ptl);
+ up_read(&mm->mmap_sem);
net-fix-rtnetlink-iff_promisc-and-iff_allmulti-handling.patch
tcp-perform-dma-to-userspace-only-if-there-is-a-task-waiting-for-it.patch
net-tun-fix-ioctl-based-info-leaks.patch
+usb-echi-dbgp-increase-the-controller-wait-time-to-come-out-of-halt.patch
+alsa-snd-usb-fix-clock-source-validity-index.patch
+alsa-mpu401-fix-missing-initialization-of-irq-field.patch
+alsa-hda-fix-invalid-d3-of-headphone-dac-on-vt202x-codecs.patch
+alsa-hda-fix-mute-led-gpio-setup-for-hp-mini-210.patch
+alsa-hda-fix-polarity-of-mute-led-on-hp-mini-210.patch
+alsa-hda-fix-mute-led-gpio-initialization-for-idt-codecs.patch
+alsa-hda-support-dock-on-lenovo-thinkpad-t530-with-alc269vc.patch
+asoc-wm8962-allow-vmid-time-to-fully-ramp.patch
+asoc-wm8994-ensure-there-are-enough-bclks-for-four-channels.patch
+m68k-make-sys_atomic_cmpxchg_32-work-on-classic-m68k.patch
--- /dev/null
+From f96a4216e85050c0a9d41a41ecb0ae9d8e39b509 Mon Sep 17 00:00:00 2001
+From: Colin Ian King <colin.king@canonical.com>
+Date: Mon, 30 Jul 2012 16:06:42 +0100
+Subject: USB: echi-dbgp: increase the controller wait time to come out of halt.
+
+From: Colin Ian King <colin.king@canonical.com>
+
+commit f96a4216e85050c0a9d41a41ecb0ae9d8e39b509 upstream.
+
+The default 10 microsecond delay for the controller to come out of
+halt in dbgp_ehci_startup is too short, so increase it to 1 millisecond.
+
+This is based on emperical testing on various USB debug ports on
+modern machines such as a Lenovo X220i and an Ivybridge development
+platform that needed to wait ~450-950 microseconds.
+
+Signed-off-by: Colin Ian King <colin.king@canonical.com>
+Signed-off-by: Jason Wessel <jason.wessel@windriver.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/usb/early/ehci-dbgp.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/usb/early/ehci-dbgp.c
++++ b/drivers/usb/early/ehci-dbgp.c
+@@ -450,7 +450,7 @@ static int dbgp_ehci_startup(void)
+ writel(FLAG_CF, &ehci_regs->configured_flag);
+
+ /* Wait until the controller is no longer halted */
+- loop = 10;
++ loop = 1000;
+ do {
+ status = readl(&ehci_regs->status);
+ if (!(status & STS_HALT))