--- /dev/null
+From 1ea9a69d1a36a5b62bf281ba8bb304fcac656dad Mon Sep 17 00:00:00 2001
+From: Takashi Iwai <tiwai@suse.de>
+Date: Fri, 19 Jul 2013 07:58:02 +0200
+Subject: ALSA: hda - Fix EAPD GPIO control for Sigmatel codecs
+
+From: Takashi Iwai <tiwai@suse.de>
+
+commit 1ea9a69d1a36a5b62bf281ba8bb304fcac656dad upstream.
+
+The EAPD GPIO is dynamically turned on/off for some machines with
+Sigmatel codecs, but this didn't work as expected, and it resulted in
+spontaneous lost of speaker outputs per HP plugging or power-saving.
+
+This patch fixes the bug by simply including spec->eapd_mask into
+spec->gpio_mask and spec->gpio_data bits.
+
+Reported-and-tested-by: Eric Shattow <lucent@gmail.com>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ sound/pci/hda/patch_sigmatel.c | 11 ++++++-----
+ 1 file changed, 6 insertions(+), 5 deletions(-)
+
+--- a/sound/pci/hda/patch_sigmatel.c
++++ b/sound/pci/hda/patch_sigmatel.c
+@@ -417,9 +417,11 @@ static void stac_update_outputs(struct h
+ val &= ~spec->eapd_mask;
+ else
+ val |= spec->eapd_mask;
+- if (spec->gpio_data != val)
++ if (spec->gpio_data != val) {
++ spec->gpio_data = val;
+ stac_gpio_set(codec, spec->gpio_mask, spec->gpio_dir,
+ val);
++ }
+ }
+ }
+
+@@ -3608,20 +3610,18 @@ static int stac_parse_auto_config(struct
+ static int stac_init(struct hda_codec *codec)
+ {
+ struct sigmatel_spec *spec = codec->spec;
+- unsigned int gpio;
+ int i;
+
+ /* override some hints */
+ stac_store_hints(codec);
+
+ /* set up GPIO */
+- gpio = spec->gpio_data;
+ /* turn on EAPD statically when spec->eapd_switch isn't set.
+ * otherwise, unsol event will turn it on/off dynamically
+ */
+ if (!spec->eapd_switch)
+- gpio |= spec->eapd_mask;
+- stac_gpio_set(codec, spec->gpio_mask, spec->gpio_dir, gpio);
++ spec->gpio_data |= spec->eapd_mask;
++ stac_gpio_set(codec, spec->gpio_mask, spec->gpio_dir, spec->gpio_data);
+
+ snd_hda_gen_init(codec);
+
+@@ -3921,6 +3921,7 @@ static void stac_setup_gpio(struct hda_c
+ {
+ struct sigmatel_spec *spec = codec->spec;
+
++ spec->gpio_mask |= spec->eapd_mask;
+ if (spec->gpio_led) {
+ if (!spec->vref_mute_led_nid) {
+ spec->gpio_mask |= spec->gpio_led;
--- /dev/null
+From f3e351eef3a7fd1e36a3e18d4f2f069b00deb23c Mon Sep 17 00:00:00 2001
+From: Takashi Iwai <tiwai@suse.de>
+Date: Fri, 19 Jul 2013 08:02:25 +0200
+Subject: ALSA: hda - Remove NO_PRESENCE bit override for Dell 1420n Laptop
+
+From: Takashi Iwai <tiwai@suse.de>
+
+commit f3e351eef3a7fd1e36a3e18d4f2f069b00deb23c upstream.
+
+The quirk for Dell laptops with STAC9228 overrides the pin default
+config of NID 0x0f to the value with AC_DEFCFG_MISC_NO_PRESENCE bit
+on. I'm not quite sure why this was done so, but can guess that this
+was introduced for avoiding this to be muted by another headphone
+plug. Now, after transition to the generic parser, this workaround
+rather causes a problem (notably as unexpected speaker mutes) because
+the pin is seen as if it's always plugged in.
+
+Since the generic parser can handle multiple headphone plugging
+gracefully, we can get rid of this override now.
+
+Reported-and-tested-by: Eric Shattow <lucent@gmail.com>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ sound/pci/hda/patch_sigmatel.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/sound/pci/hda/patch_sigmatel.c
++++ b/sound/pci/hda/patch_sigmatel.c
+@@ -3227,7 +3227,7 @@ static const struct hda_fixup stac927x_f
+ /* configure the analog microphone on some laptops */
+ { 0x0c, 0x90a79130 },
+ /* correct the front output jack as a hp out */
+- { 0x0f, 0x0227011f },
++ { 0x0f, 0x0221101f },
+ /* correct the front input jack as a mic */
+ { 0x0e, 0x02a79130 },
+ {}
--- /dev/null
+From be2f93a4c4981b3646b6f98f477154411b8516cb Mon Sep 17 00:00:00 2001
+From: Eldad Zack <eldad@fogrefinery.com>
+Date: Fri, 19 Jul 2013 18:26:53 +0200
+Subject: ALSA: usb-audio: 6fire: return correct XRUN indication
+
+From: Eldad Zack <eldad@fogrefinery.com>
+
+commit be2f93a4c4981b3646b6f98f477154411b8516cb upstream.
+
+Return SNDRV_PCM_POS_XRUN (snd_pcm_uframes_t) instead of
+SNDRV_PCM_STATE_XRUN (snd_pcm_state_t) from the pointer
+function of 6fire, as expected by snd_pcm_update_hw_ptr0().
+
+Caught by sparse.
+
+Signed-off-by: Eldad Zack <eldad@fogrefinery.com>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ sound/usb/6fire/pcm.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/sound/usb/6fire/pcm.c
++++ b/sound/usb/6fire/pcm.c
+@@ -543,7 +543,7 @@ static snd_pcm_uframes_t usb6fire_pcm_po
+ snd_pcm_uframes_t ret;
+
+ if (rt->panic || !sub)
+- return SNDRV_PCM_STATE_XRUN;
++ return SNDRV_PCM_POS_XRUN;
+
+ spin_lock_irqsave(&sub->lock, flags);
+ ret = sub->dma_off;
--- /dev/null
+From 6287e7319870ec949fb809e4eb4154c2b05b221f Mon Sep 17 00:00:00 2001
+From: Mike Frysinger <vapier@gentoo.org>
+Date: Thu, 27 Jun 2013 22:42:36 -0400
+Subject: ARM: footbridge: fix overlapping PCI mappings
+
+From: Mike Frysinger <vapier@gentoo.org>
+
+commit 6287e7319870ec949fb809e4eb4154c2b05b221f upstream.
+
+Commit 8ef6e6201b26cb9fde79c1baa08145af6aca2815 (ARM: footbridge: use
+fixed PCI i/o mapping) broke booting on my netwinder. Before that,
+everything boots fine. Since then, it crashes on boot.
+
+With earlyprintk, I see it BUG-ing like so:
+kernel BUG at lib/ioremap.c:27!
+Internal error: Oops - BUG: 0 [#1] ARM
+...
+[<c0139b54>] (ioremap_page_range+0x128/0x154) from [<c02e6a6c>] (dc21285_setup+0xd0/0x114)
+[<c02e6a6c>] (dc21285_setup+0xd0/0x114) from [<c02e4874>] (pci_common_init+0xa0/0x298)
+[<c02e4874>] (pci_common_init+0xa0/0x298) from [<c02e793c>] (netwinder_pci_init+0xc/0x18)
+[<c02e793c>] (netwinder_pci_init+0xc/0x18) from [<c02e27d0>] (do_one_initcall+0xb4/0x180)
+...
+
+Russell points out it's because of overlapping PCI mappings that was
+added with the aforementioned commit. Rob thought the code would re-use
+the static mapping, but that turns out to not be the case and instead
+hits the BUG further down.
+
+After deleting this hunk as suggested by Russel, the system boots up fine
+again and all my PCI devices work (IDE, ethernet, the DC21285).
+
+Signed-off-by: Mike Frysinger <vapier@gentoo.org>
+Acked-by: Rob Herring <rob.herring@calxeda.com>
+Signed-off-by: Olof Johansson <olof@lixom.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ arch/arm/mach-footbridge/dc21285.c | 2 --
+ 1 file changed, 2 deletions(-)
+
+--- a/arch/arm/mach-footbridge/dc21285.c
++++ b/arch/arm/mach-footbridge/dc21285.c
+@@ -276,8 +276,6 @@ int __init dc21285_setup(int nr, struct
+
+ sys->mem_offset = DC21285_PCI_MEM;
+
+- pci_ioremap_io(0, DC21285_PCI_IO);
+-
+ pci_add_resource_offset(&sys->resources, &res[0], sys->mem_offset);
+ pci_add_resource_offset(&sys->resources, &res[1], sys->mem_offset);
+
--- /dev/null
+From d817468c4b2892b9468e2a0c92116e38a3a61370 Mon Sep 17 00:00:00 2001
+From: Sylwester Nawrocki <sylvester.nawrocki@gmail.com>
+Date: Wed, 24 Jul 2013 13:23:51 +0900
+Subject: ARM: S3C24XX: Add missing clkdev entries for s3c2440 UART
+
+From: Sylwester Nawrocki <sylvester.nawrocki@gmail.com>
+
+commit d817468c4b2892b9468e2a0c92116e38a3a61370 upstream.
+
+This patch restores serial port operation which has been broken since
+commit 60e93575476f ("serial: samsung: enable clock before clearing
+pending interrupts during init")
+
+That commit only uncovered the real issue which was missing clkdev
+entries for the "uart" clocks on S3C2440. It went unnoticed so far
+because return value of clk API calls were not being checked at all
+in the samsung serial port driver.
+
+This patch should be backported to at least 3.10 stable kernel, since
+the serial port has not been working on s3c2440 since 3.10-rc5.
+
+Signed-off-by: Sylwester Nawrocki <sylvester.nawrocki@gmail.com>
+Cc: Chander Kashyap <chander.kashyap@linaro.org>
+[on S3C2440 SoC based Mini2440 board]
+Tested-by: Sylwester Nawrocki <sylvester.nawrocki@gmail.com>
+Reviewed-by: Tomasz Figa <t.figa@samsung.com>
+Tested-by: Juergen Beisert <jbe@pengutronix.de>
+Signed-off-by: Kukjin Kim <kgene.kim@samsung.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ arch/arm/mach-s3c24xx/clock-s3c2410.c | 161 +++++++++++++++++------------
+ arch/arm/mach-s3c24xx/clock-s3c2440.c | 3
+ arch/arm/plat-samsung/include/plat/clock.h | 5
+ 3 files changed, 106 insertions(+), 63 deletions(-)
+
+--- a/arch/arm/mach-s3c24xx/clock-s3c2410.c
++++ b/arch/arm/mach-s3c24xx/clock-s3c2410.c
+@@ -119,66 +119,101 @@ static struct clk init_clocks_off[] = {
+ }
+ };
+
+-static struct clk init_clocks[] = {
+- {
+- .name = "lcd",
+- .parent = &clk_h,
+- .enable = s3c2410_clkcon_enable,
+- .ctrlbit = S3C2410_CLKCON_LCDC,
+- }, {
+- .name = "gpio",
+- .parent = &clk_p,
+- .enable = s3c2410_clkcon_enable,
+- .ctrlbit = S3C2410_CLKCON_GPIO,
+- }, {
+- .name = "usb-host",
+- .parent = &clk_h,
+- .enable = s3c2410_clkcon_enable,
+- .ctrlbit = S3C2410_CLKCON_USBH,
+- }, {
+- .name = "usb-device",
+- .parent = &clk_h,
+- .enable = s3c2410_clkcon_enable,
+- .ctrlbit = S3C2410_CLKCON_USBD,
+- }, {
+- .name = "timers",
+- .parent = &clk_p,
+- .enable = s3c2410_clkcon_enable,
+- .ctrlbit = S3C2410_CLKCON_PWMT,
+- }, {
+- .name = "uart",
+- .devname = "s3c2410-uart.0",
+- .parent = &clk_p,
+- .enable = s3c2410_clkcon_enable,
+- .ctrlbit = S3C2410_CLKCON_UART0,
+- }, {
+- .name = "uart",
+- .devname = "s3c2410-uart.1",
+- .parent = &clk_p,
+- .enable = s3c2410_clkcon_enable,
+- .ctrlbit = S3C2410_CLKCON_UART1,
+- }, {
+- .name = "uart",
+- .devname = "s3c2410-uart.2",
+- .parent = &clk_p,
+- .enable = s3c2410_clkcon_enable,
+- .ctrlbit = S3C2410_CLKCON_UART2,
+- }, {
+- .name = "rtc",
+- .parent = &clk_p,
+- .enable = s3c2410_clkcon_enable,
+- .ctrlbit = S3C2410_CLKCON_RTC,
+- }, {
+- .name = "watchdog",
+- .parent = &clk_p,
+- .ctrlbit = 0,
+- }, {
+- .name = "usb-bus-host",
+- .parent = &clk_usb_bus,
+- }, {
+- .name = "usb-bus-gadget",
+- .parent = &clk_usb_bus,
+- },
++static struct clk clk_lcd = {
++ .name = "lcd",
++ .parent = &clk_h,
++ .enable = s3c2410_clkcon_enable,
++ .ctrlbit = S3C2410_CLKCON_LCDC,
++};
++
++static struct clk clk_gpio = {
++ .name = "gpio",
++ .parent = &clk_p,
++ .enable = s3c2410_clkcon_enable,
++ .ctrlbit = S3C2410_CLKCON_GPIO,
++};
++
++static struct clk clk_usb_host = {
++ .name = "usb-host",
++ .parent = &clk_h,
++ .enable = s3c2410_clkcon_enable,
++ .ctrlbit = S3C2410_CLKCON_USBH,
++};
++
++static struct clk clk_usb_device = {
++ .name = "usb-device",
++ .parent = &clk_h,
++ .enable = s3c2410_clkcon_enable,
++ .ctrlbit = S3C2410_CLKCON_USBD,
++};
++
++static struct clk clk_timers = {
++ .name = "timers",
++ .parent = &clk_p,
++ .enable = s3c2410_clkcon_enable,
++ .ctrlbit = S3C2410_CLKCON_PWMT,
++};
++
++struct clk s3c24xx_clk_uart0 = {
++ .name = "uart",
++ .devname = "s3c2410-uart.0",
++ .parent = &clk_p,
++ .enable = s3c2410_clkcon_enable,
++ .ctrlbit = S3C2410_CLKCON_UART0,
++};
++
++struct clk s3c24xx_clk_uart1 = {
++ .name = "uart",
++ .devname = "s3c2410-uart.1",
++ .parent = &clk_p,
++ .enable = s3c2410_clkcon_enable,
++ .ctrlbit = S3C2410_CLKCON_UART1,
++};
++
++struct clk s3c24xx_clk_uart2 = {
++ .name = "uart",
++ .devname = "s3c2410-uart.2",
++ .parent = &clk_p,
++ .enable = s3c2410_clkcon_enable,
++ .ctrlbit = S3C2410_CLKCON_UART2,
++};
++
++static struct clk clk_rtc = {
++ .name = "rtc",
++ .parent = &clk_p,
++ .enable = s3c2410_clkcon_enable,
++ .ctrlbit = S3C2410_CLKCON_RTC,
++};
++
++static struct clk clk_watchdog = {
++ .name = "watchdog",
++ .parent = &clk_p,
++ .ctrlbit = 0,
++};
++
++static struct clk clk_usb_bus_host = {
++ .name = "usb-bus-host",
++ .parent = &clk_usb_bus,
++};
++
++static struct clk clk_usb_bus_gadget = {
++ .name = "usb-bus-gadget",
++ .parent = &clk_usb_bus,
++};
++
++static struct clk *init_clocks[] = {
++ &clk_lcd,
++ &clk_gpio,
++ &clk_usb_host,
++ &clk_usb_device,
++ &clk_timers,
++ &s3c24xx_clk_uart0,
++ &s3c24xx_clk_uart1,
++ &s3c24xx_clk_uart2,
++ &clk_rtc,
++ &clk_watchdog,
++ &clk_usb_bus_host,
++ &clk_usb_bus_gadget,
+ };
+
+ /* s3c2410_baseclk_add()
+@@ -195,7 +230,6 @@ int __init s3c2410_baseclk_add(void)
+ {
+ unsigned long clkslow = __raw_readl(S3C2410_CLKSLOW);
+ unsigned long clkcon = __raw_readl(S3C2410_CLKCON);
+- struct clk *clkp;
+ struct clk *xtal;
+ int ret;
+ int ptr;
+@@ -207,8 +241,9 @@ int __init s3c2410_baseclk_add(void)
+
+ /* register clocks from clock array */
+
+- clkp = init_clocks;
+- for (ptr = 0; ptr < ARRAY_SIZE(init_clocks); ptr++, clkp++) {
++ for (ptr = 0; ptr < ARRAY_SIZE(init_clocks); ptr++) {
++ struct clk *clkp = init_clocks[ptr];
++
+ /* ensure that we note the clock state */
+
+ clkp->usage = clkcon & clkp->ctrlbit ? 1 : 0;
+--- a/arch/arm/mach-s3c24xx/clock-s3c2440.c
++++ b/arch/arm/mach-s3c24xx/clock-s3c2440.c
+@@ -166,6 +166,9 @@ static struct clk_lookup s3c2440_clk_loo
+ CLKDEV_INIT(NULL, "clk_uart_baud1", &s3c24xx_uclk),
+ CLKDEV_INIT(NULL, "clk_uart_baud2", &clk_p),
+ CLKDEV_INIT(NULL, "clk_uart_baud3", &s3c2440_clk_fclk_n),
++ CLKDEV_INIT("s3c2440-uart.0", "uart", &s3c24xx_clk_uart0),
++ CLKDEV_INIT("s3c2440-uart.1", "uart", &s3c24xx_clk_uart1),
++ CLKDEV_INIT("s3c2440-uart.2", "uart", &s3c24xx_clk_uart2),
+ CLKDEV_INIT("s3c2440-camif", "camera", &s3c2440_clk_cam_upll),
+ };
+
+--- a/arch/arm/plat-samsung/include/plat/clock.h
++++ b/arch/arm/plat-samsung/include/plat/clock.h
+@@ -83,6 +83,11 @@ extern struct clk clk_ext;
+ extern struct clksrc_clk clk_epllref;
+ extern struct clksrc_clk clk_esysclk;
+
++/* S3C24XX UART clocks */
++extern struct clk s3c24xx_clk_uart0;
++extern struct clk s3c24xx_clk_uart1;
++extern struct clk s3c24xx_clk_uart2;
++
+ /* S3C64XX specific clocks */
+ extern struct clk clk_h2;
+ extern struct clk clk_27m;
--- /dev/null
+From 8acd5e9b1217e58a57124d9e225afa12efeae20d Mon Sep 17 00:00:00 2001
+From: Theodore Ts'o <tytso@mit.edu>
+Date: Mon, 15 Jul 2013 00:09:19 -0400
+Subject: ext4: fix error handling in ext4_ext_truncate()
+
+From: Theodore Ts'o <tytso@mit.edu>
+
+commit 8acd5e9b1217e58a57124d9e225afa12efeae20d upstream.
+
+Previously ext4_ext_truncate() was ignoring potential error returns
+from ext4_es_remove_extent() and ext4_ext_remove_space(). This can
+lead to the on-diks extent tree and the extent status tree cache
+getting out of sync, which is particuarlly bad, and can lead to file
+system corruption and potential data loss.
+
+Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ fs/ext4/extents.c | 11 +++++++++++
+ 1 file changed, 11 insertions(+)
+
+--- a/fs/ext4/extents.c
++++ b/fs/ext4/extents.c
+@@ -4386,9 +4386,20 @@ void ext4_ext_truncate(handle_t *handle,
+
+ last_block = (inode->i_size + sb->s_blocksize - 1)
+ >> EXT4_BLOCK_SIZE_BITS(sb);
++retry:
+ err = ext4_es_remove_extent(inode, last_block,
+ EXT_MAX_BLOCKS - last_block);
++ if (err == ENOMEM) {
++ cond_resched();
++ congestion_wait(BLK_RW_ASYNC, HZ/50);
++ goto retry;
++ }
++ if (err) {
++ ext4_std_error(inode->i_sb, err);
++ return;
++ }
+ err = ext4_ext_remove_space(inode, last_block, EXT_MAX_BLOCKS - 1);
++ ext4_std_error(inode->i_sb, err);
+ }
+
+ static void ext4_falloc_update_inode(struct inode *inode,
--- /dev/null
+From 5ec2481b7b47a4005bb446d176e5d0257400c77d Mon Sep 17 00:00:00 2001
+From: Thomas Gleixner <tglx@linutronix.de>
+Date: Fri, 5 Jul 2013 12:09:18 +0200
+Subject: hrtimers: Move SMP function call to thread context
+
+From: Thomas Gleixner <tglx@linutronix.de>
+
+commit 5ec2481b7b47a4005bb446d176e5d0257400c77d upstream.
+
+smp_call_function_* must not be called from softirq context.
+
+But clock_was_set() which calls on_each_cpu() is called from softirq
+context to implement a delayed clock_was_set() for the timer interrupt
+handler. Though that almost never gets invoked. A recent change in the
+resume code uses the softirq based delayed clock_was_set to support
+Xens resume mechanism.
+
+linux-next contains a new warning which warns if smp_call_function_*
+is called from softirq context which gets triggered by that Xen
+change.
+
+Fix this by moving the delayed clock_was_set() call to a work context.
+
+Reported-and-tested-by: Artem Savkov <artem.savkov@gmail.com>
+Reported-by: Sasha Levin <sasha.levin@oracle.com>
+Cc: David Vrabel <david.vrabel@citrix.com>
+Cc: Ingo Molnar <mingo@kernel.org>
+Cc: H. Peter Anvin <hpa@zytor.com>,
+Cc: Konrad Wilk <konrad.wilk@oracle.com>
+Cc: John Stultz <john.stultz@linaro.org>
+Cc: xen-devel@lists.xen.org
+Cc: stable@vger.kernel.org
+Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ kernel/hrtimer.c | 28 +++++++++++++---------------
+ 1 file changed, 13 insertions(+), 15 deletions(-)
+
+--- a/kernel/hrtimer.c
++++ b/kernel/hrtimer.c
+@@ -721,17 +721,20 @@ static int hrtimer_switch_to_hres(void)
+ return 1;
+ }
+
++static void clock_was_set_work(struct work_struct *work)
++{
++ clock_was_set();
++}
++
++static DECLARE_WORK(hrtimer_work, clock_was_set_work);
++
+ /*
+- * Called from timekeeping code to reprogramm the hrtimer interrupt
+- * device. If called from the timer interrupt context we defer it to
+- * softirq context.
++ * Called from timekeeping and resume code to reprogramm the hrtimer
++ * interrupt device on all cpus.
+ */
+ void clock_was_set_delayed(void)
+ {
+- struct hrtimer_cpu_base *cpu_base = &__get_cpu_var(hrtimer_bases);
+-
+- cpu_base->clock_was_set = 1;
+- __raise_softirq_irqoff(HRTIMER_SOFTIRQ);
++ schedule_work(&hrtimer_work);
+ }
+
+ #else
+@@ -780,8 +783,10 @@ void hrtimers_resume(void)
+ WARN_ONCE(!irqs_disabled(),
+ KERN_INFO "hrtimers_resume() called with IRQs enabled!");
+
++ /* Retrigger on the local CPU */
+ retrigger_next_event(NULL);
+- timerfd_clock_was_set();
++ /* And schedule a retrigger for all others */
++ clock_was_set_delayed();
+ }
+
+ static inline void timer_stats_hrtimer_set_start_info(struct hrtimer *timer)
+@@ -1432,13 +1437,6 @@ void hrtimer_peek_ahead_timers(void)
+
+ static void run_hrtimer_softirq(struct softirq_action *h)
+ {
+- struct hrtimer_cpu_base *cpu_base = &__get_cpu_var(hrtimer_bases);
+-
+- if (cpu_base->clock_was_set) {
+- cpu_base->clock_was_set = 0;
+- clock_was_set();
+- }
+-
+ hrtimer_peek_ahead_timers();
+ }
+
--- /dev/null
+From 1c327d962fc420aea046c16215a552710bde8231 Mon Sep 17 00:00:00 2001
+From: David Jeffery <djeffery@redhat.com>
+Date: Wed, 10 Jul 2013 13:19:50 -0400
+Subject: lockd: protect nlm_blocked access in nlmsvc_retry_blocked
+
+From: David Jeffery <djeffery@redhat.com>
+
+commit 1c327d962fc420aea046c16215a552710bde8231 upstream.
+
+In nlmsvc_retry_blocked, the check that the list is non-empty and acquiring
+the pointer of the first entry is unprotected by any lock. This allows a rare
+race condition when there is only one entry on the list. A function such as
+nlmsvc_grant_callback() can be called, which will temporarily remove the entry
+from the list. Between the list_empty() and list_entry(),the list may become
+empty, causing an invalid pointer to be used as an nlm_block, leading to a
+possible crash.
+
+This patch adds the nlm_block_lock around these calls to prevent concurrent
+use of the nlm_blocked list.
+
+This was a regression introduced by
+f904be9cc77f361d37d71468b13ff3d1a1823dea "lockd: Mostly remove BKL from
+the server".
+
+Signed-off-by: David Jeffery <djeffery@redhat.com>
+Cc: Bryan Schumaker <bjschuma@netapp.com>
+Signed-off-by: J. Bruce Fields <bfields@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ fs/lockd/svclock.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+--- a/fs/lockd/svclock.c
++++ b/fs/lockd/svclock.c
+@@ -939,6 +939,7 @@ nlmsvc_retry_blocked(void)
+ unsigned long timeout = MAX_SCHEDULE_TIMEOUT;
+ struct nlm_block *block;
+
++ spin_lock(&nlm_blocked_lock);
+ while (!list_empty(&nlm_blocked) && !kthread_should_stop()) {
+ block = list_entry(nlm_blocked.next, struct nlm_block, b_list);
+
+@@ -948,6 +949,7 @@ nlmsvc_retry_blocked(void)
+ timeout = block->b_when - jiffies;
+ break;
+ }
++ spin_unlock(&nlm_blocked_lock);
+
+ dprintk("nlmsvc_retry_blocked(%p, when=%ld)\n",
+ block, block->b_when);
+@@ -957,7 +959,9 @@ nlmsvc_retry_blocked(void)
+ retry_deferred_block(block);
+ } else
+ nlmsvc_grant_blocked(block);
++ spin_lock(&nlm_blocked_lock);
+ }
++ spin_unlock(&nlm_blocked_lock);
+
+ return timeout;
+ }
--- /dev/null
+From 414abbd2cd4c2618895f02ed3a76ec6647281436 Mon Sep 17 00:00:00 2001
+From: Soeren Moch <smoch@web.de>
+Date: Wed, 5 Jun 2013 21:26:23 -0300
+Subject: media: dmxdev: remove dvb_ringbuffer_flush() on writer side
+
+From: Soeren Moch <smoch@web.de>
+
+commit 414abbd2cd4c2618895f02ed3a76ec6647281436 upstream.
+
+In dvb_ringbuffer lock-less synchronizationof reader and writer threads is done
+with separateread and write pointers. Sincedvb_ringbuffer_flush() modifies the
+read pointer, this function must not be called from the writer thread.
+This patch removes the dvb_ringbuffer_flush() calls in the dmxdev ringbuffer
+write functions, this fixes Oopses "Unable to handle kernel paging request"
+I could observe for the call chaindvb_demux_read ->dvb_dmxdev_buffer_read ->
+dvb_ringbuffer_read_user -> __copy_to_user (the reader side of the ringbuffer).
+The flush calls at the write side are not necessary anyway since ringbuffer_flush
+is also called in dvb_dmxdev_buffer_read() when an error condition is set in the
+ringbuffer.
+This patch should also be applied to stable kernels.
+
+Signed-off-by: Soeren Moch <smoch@web.de>
+Reviewed-by: Sakari Ailus <sakari.ailus@iki.fi>
+Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/media/dvb-core/dmxdev.c | 8 ++------
+ 1 file changed, 2 insertions(+), 6 deletions(-)
+
+--- a/drivers/media/dvb-core/dmxdev.c
++++ b/drivers/media/dvb-core/dmxdev.c
+@@ -377,10 +377,8 @@ static int dvb_dmxdev_section_callback(c
+ ret = dvb_dmxdev_buffer_write(&dmxdevfilter->buffer, buffer2,
+ buffer2_len);
+ }
+- if (ret < 0) {
+- dvb_ringbuffer_flush(&dmxdevfilter->buffer);
++ if (ret < 0)
+ dmxdevfilter->buffer.error = ret;
+- }
+ if (dmxdevfilter->params.sec.flags & DMX_ONESHOT)
+ dmxdevfilter->state = DMXDEV_STATE_DONE;
+ spin_unlock(&dmxdevfilter->dev->lock);
+@@ -416,10 +414,8 @@ static int dvb_dmxdev_ts_callback(const
+ ret = dvb_dmxdev_buffer_write(buffer, buffer1, buffer1_len);
+ if (ret == buffer1_len)
+ ret = dvb_dmxdev_buffer_write(buffer, buffer2, buffer2_len);
+- if (ret < 0) {
+- dvb_ringbuffer_flush(buffer);
++ if (ret < 0)
+ buffer->error = ret;
+- }
+ spin_unlock(&dmxdevfilter->dev->lock);
+ wake_up(&buffer->queue);
+ return 0;
--- /dev/null
+From e6355ad7b1c6f70e2f48ae159f5658b441ccff95 Mon Sep 17 00:00:00 2001
+From: Takashi Iwai <tiwai@suse.de>
+Date: Thu, 11 Jul 2013 18:00:59 +0200
+Subject: media: saa7134: Fix unlocked snd_pcm_stop() call
+
+From: Takashi Iwai <tiwai@suse.de>
+
+commit e6355ad7b1c6f70e2f48ae159f5658b441ccff95 upstream.
+
+snd_pcm_stop() must be called in the PCM substream lock context.
+
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/media/pci/saa7134/saa7134-alsa.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/drivers/media/pci/saa7134/saa7134-alsa.c
++++ b/drivers/media/pci/saa7134/saa7134-alsa.c
+@@ -172,7 +172,9 @@ static void saa7134_irq_alsa_done(struct
+ dprintk("irq: overrun [full=%d/%d] - Blocks in %d\n",dev->dmasound.read_count,
+ dev->dmasound.bufsize, dev->dmasound.blocks);
+ spin_unlock(&dev->slock);
++ snd_pcm_stream_lock(dev->dmasound.substream);
+ snd_pcm_stop(dev->dmasound.substream,SNDRV_PCM_STATE_XRUN);
++ snd_pcm_stream_unlock(dev->dmasound.substream);
+ return;
+ }
+
--- /dev/null
+From e5248a111bf4048a9f3fab1a9c94c4630a10592a Mon Sep 17 00:00:00 2001
+From: Liu ShuoX <shuox.liu@intel.com>
+Date: Thu, 11 Jul 2013 16:03:45 +0800
+Subject: PM / Sleep: avoid 'autosleep' in shutdown progress
+
+From: Liu ShuoX <shuox.liu@intel.com>
+
+commit e5248a111bf4048a9f3fab1a9c94c4630a10592a upstream.
+
+Prevent automatic system suspend from happening during system
+shutdown by making try_to_suspend() check system_state and return
+immediately if it is not SYSTEM_RUNNING.
+
+This prevents the following breakage from happening (scenario from
+Zhang Yanmin):
+
+ Kernel starts shutdown and calls all device driver's shutdown
+ callback. When a driver's shutdown is called, the last wakelock is
+ released and suspend-to-ram starts. However, as some driver's shut
+ down callbacks already shut down devices and disabled runtime pm,
+ the suspend-to-ram calls driver's suspend callback without noticing
+ that device is already off and causes crash.
+
+[rjw: Changelog]
+Signed-off-by: Liu ShuoX <shuox.liu@intel.com>
+Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ kernel/power/autosleep.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/kernel/power/autosleep.c
++++ b/kernel/power/autosleep.c
+@@ -32,7 +32,8 @@ static void try_to_suspend(struct work_s
+
+ mutex_lock(&autosleep_lock);
+
+- if (!pm_save_wakeup_count(initial_count)) {
++ if (!pm_save_wakeup_count(initial_count) ||
++ system_state != SYSTEM_RUNNING) {
+ mutex_unlock(&autosleep_lock);
+ goto out;
+ }
scsi-mpt3sas-fix-for-kernel-panic-when-driver-loads-with-hba-conected-to-non-lun-0-configured-expander.patch
scsi-megaraid_sas-fix-memory-leak-if-sgl-has-zero-length-entries.patch
lib-kconfig.debug-restrict-frame_pointer-for-mips.patch
+usb-serial-option-blacklist-onda-mt689dc-qmi-interface.patch
+usb-option-add-tp-link-ma260.patch
+usb-serial-option-add-olivetti-olicard-200.patch
+usb-serial-option.c-remove-onda-mt825up-product-id-fromdriver.patch
+usb-option-append-petatel-np10t-device-to-gsm-modems-list.patch
+usb-option-add-d-link-dwm-152-c1-and-dwm-156-c1.patch
+usb-serial-option-add-onyx-3g-device-support.patch
+arm-s3c24xx-add-missing-clkdev-entries-for-s3c2440-uart.patch
+arm-footbridge-fix-overlapping-pci-mappings.patch
+usb-serial-cp210x-add-usb-id-for-netgear-switches-embedded-serial-adapter.patch
+usb-cp210x-add-mmb-and-pi-zigbee-usb-device-support.patch
+usb-cp210x-support-sel-c662-vendor-device.patch
+ext4-fix-error-handling-in-ext4_ext_truncate.patch
+pm-sleep-avoid-autosleep-in-shutdown-progress.patch
+media-saa7134-fix-unlocked-snd_pcm_stop-call.patch
+media-dmxdev-remove-dvb_ringbuffer_flush-on-writer-side.patch
+lockd-protect-nlm_blocked-access-in-nlmsvc_retry_blocked.patch
+hrtimers-move-smp-function-call-to-thread-context.patch
+alsa-hda-remove-no_presence-bit-override-for-dell-1420n-laptop.patch
+alsa-usb-audio-6fire-return-correct-xrun-indication.patch
+alsa-hda-fix-eapd-gpio-control-for-sigmatel-codecs.patch
--- /dev/null
+From 7681156982026ebf7eafd7301eb0374d7648d068 Mon Sep 17 00:00:00 2001
+From: Sami Rahman <sami.rahman@mmbresearch.com>
+Date: Mon, 8 Jul 2013 14:28:55 -0400
+Subject: USB: cp210x: add MMB and PI ZigBee USB Device Support
+
+From: Sami Rahman <sami.rahman@mmbresearch.com>
+
+commit 7681156982026ebf7eafd7301eb0374d7648d068 upstream.
+
+Added support for MMB Networks and Planet Innovation Ingeni ZigBee USB
+devices using customized Silicon Labs' CP210x.c USB to UART bridge
+drivers with PIDs: 88A4, 88A5.
+
+Signed-off-by: Sami Rahman <sami.rahman@mmbresearch.com>
+Tested-by: Sami Rahman <sami.rahman@mmbresearch.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/usb/serial/cp210x.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/drivers/usb/serial/cp210x.c
++++ b/drivers/usb/serial/cp210x.c
+@@ -119,6 +119,8 @@ static const struct usb_device_id id_tab
+ { USB_DEVICE(0x10C4, 0x85F8) }, /* Virtenio Preon32 */
+ { USB_DEVICE(0x10C4, 0x8664) }, /* AC-Services CAN-IF */
+ { USB_DEVICE(0x10C4, 0x8665) }, /* AC-Services OBD-IF */
++ { USB_DEVICE(0x10C4, 0x88A4) }, /* MMB Networks ZigBee USB Device */
++ { USB_DEVICE(0x10C4, 0x88A5) }, /* Planet Innovation Ingeni ZigBee USB Device */
+ { USB_DEVICE(0x10C4, 0xEA60) }, /* Silicon Labs factory default */
+ { USB_DEVICE(0x10C4, 0xEA61) }, /* Silicon Labs factory default */
+ { USB_DEVICE(0x10C4, 0xEA70) }, /* Silicon Labs factory default */
--- /dev/null
+From b579fa52f6be0b4157ca9cc5e94d44a2c89a7e95 Mon Sep 17 00:00:00 2001
+From: Barry Grussling <barry@grussling.com>
+Date: Fri, 19 Jul 2013 14:46:12 -0700
+Subject: usb: cp210x support SEL C662 Vendor/Device
+
+From: Barry Grussling <barry@grussling.com>
+
+commit b579fa52f6be0b4157ca9cc5e94d44a2c89a7e95 upstream.
+
+This patch adds support for the Schweitzer Engineering Laboratories
+C662 USB cable based off the CP210x driver.
+
+Signed-off-by: Barry Grussling <barry@grussling.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/usb/serial/cp210x.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/drivers/usb/serial/cp210x.c
++++ b/drivers/usb/serial/cp210x.c
+@@ -151,6 +151,7 @@ static const struct usb_device_id id_tab
+ { USB_DEVICE(0x17F4, 0xAAAA) }, /* Wavesense Jazz blood glucose meter */
+ { USB_DEVICE(0x1843, 0x0200) }, /* Vaisala USB Instrument Cable */
+ { USB_DEVICE(0x18EF, 0xE00F) }, /* ELV USB-I2C-Interface */
++ { USB_DEVICE(0x1ADB, 0x0001) }, /* Schweitzer Engineering C662 Cable */
+ { USB_DEVICE(0x1BE3, 0x07A6) }, /* WAGO 750-923 USB Service Cable */
+ { USB_DEVICE(0x1E29, 0x0102) }, /* Festo CPX-USB */
+ { USB_DEVICE(0x1E29, 0x0501) }, /* Festo CMSP */
--- /dev/null
+From ca24763588844b14f019ffc45c7df6d9e8f932c5 Mon Sep 17 00:00:00 2001
+From: "Alexandr \\\"Sky\\\" Ivanov" <alexandr.sky@gmail.com>
+Date: Tue, 23 Jul 2013 17:46:40 +0400
+Subject: USB: option: add D-Link DWM-152/C1 and DWM-156/C1
+
+From: "Alexandr \\\"Sky\\\" Ivanov" <alexandr.sky@gmail.com>
+
+commit ca24763588844b14f019ffc45c7df6d9e8f932c5 upstream.
+
+Adding support for D-Link DWM-152/C1 and DWM-156/C1 devices.
+
+DWM-152/C1:
+T: Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 6 Spd=480 MxCh= 0
+D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
+P: Vendor=07d1 ProdID=3e01 Rev= 0.00
+S: Product=USB Configuration
+S: SerialNumber=1234567890ABCDEF
+C:* #Ifs= 5 Cfg#= 1 Atr=e0 MxPwr=500mA
+I:* If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
+E: Ad=81(I) Atr=03(Int.) MxPS= 64 Ivl=2ms
+E: Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
+E: Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms
+I:* If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
+E: Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
+E: Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms
+I:* If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
+E: Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
+E: Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms
+I:* If#= 3 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
+E: Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
+E: Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms
+I:* If#= 4 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
+E: Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
+E: Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
+
+DWM-156/C1:
+T: Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 8 Spd=480 MxCh= 0
+D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
+P: Vendor=07d1 ProdID=3e02 Rev= 0.00
+S: Product=DataCard Device
+S: SerialNumber=1234567890ABCDEF
+C:* #Ifs= 5 Cfg#= 1 Atr=e0 MxPwr=500mA
+I:* If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
+E: Ad=81(I) Atr=03(Int.) MxPS= 64 Ivl=2ms
+E: Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
+E: Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms
+I:* If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
+E: Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
+E: Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms
+I:* If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
+E: Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
+E: Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms
+I:* If#= 3 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
+E: Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
+E: Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms
+I:* If#= 4 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
+E: Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
+E: Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
+
+Signed-off-by: Alexandr Ivanov <alexandr.sky@gmail.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/usb/serial/option.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/drivers/usb/serial/option.c
++++ b/drivers/usb/serial/option.c
+@@ -1339,6 +1339,8 @@ static const struct usb_device_id option
+ { USB_DEVICE_AND_INTERFACE_INFO(0x2001, 0x7d02, 0xff, 0x00, 0x00) },
+ { USB_DEVICE_AND_INTERFACE_INFO(0x2001, 0x7d03, 0xff, 0x02, 0x01) },
+ { USB_DEVICE_AND_INTERFACE_INFO(0x2001, 0x7d03, 0xff, 0x00, 0x00) },
++ { USB_DEVICE_AND_INTERFACE_INFO(0x07d1, 0x3e01, 0xff, 0xff, 0xff) }, /* D-Link DWM-152/C1 */
++ { USB_DEVICE_AND_INTERFACE_INFO(0x07d1, 0x3e02, 0xff, 0xff, 0xff) }, /* D-Link DWM-156/C1 */
+ { } /* Terminating entry */
+ };
+ MODULE_DEVICE_TABLE(usb, option_ids);
--- /dev/null
+From 94190301ffa059c2d127b3a67ec5d161d5c62681 Mon Sep 17 00:00:00 2001
+From: Bjørn Mork <bjorn@mork.no>
+Date: Fri, 28 Jun 2013 17:15:25 +0200
+Subject: usb: option: add TP-LINK MA260
+
+From: Bjørn Mork <bjorn@mork.no>
+
+commit 94190301ffa059c2d127b3a67ec5d161d5c62681 upstream.
+
+Signed-off-by: Bjørn Mork <bjorn@mork.no>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/usb/serial/option.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/drivers/usb/serial/option.c
++++ b/drivers/usb/serial/option.c
+@@ -1333,6 +1333,8 @@ static const struct usb_device_id option
+ { USB_DEVICE(PETATEL_VENDOR_ID, PETATEL_PRODUCT_NP10T) },
+ { USB_DEVICE(TPLINK_VENDOR_ID, TPLINK_PRODUCT_MA180),
+ .driver_info = (kernel_ulong_t)&net_intf4_blacklist },
++ { USB_DEVICE(TPLINK_VENDOR_ID, 0x9000), /* TP-Link MA260 */
++ .driver_info = (kernel_ulong_t)&net_intf4_blacklist },
+ { USB_DEVICE(CHANGHONG_VENDOR_ID, CHANGHONG_PRODUCT_CH690) },
+ { USB_DEVICE_AND_INTERFACE_INFO(0x2001, 0x7d01, 0xff, 0x02, 0x01) }, /* D-Link DWM-156 (variant) */
+ { USB_DEVICE_AND_INTERFACE_INFO(0x2001, 0x7d01, 0xff, 0x00, 0x00) }, /* D-Link DWM-156 (variant) */
--- /dev/null
+From c38e83b6cc2adf80e3f091fd92cfbeacc9748347 Mon Sep 17 00:00:00 2001
+From: Daniil Bolsun <dan.bolsun@gmail.com>
+Date: Fri, 19 Jul 2013 10:21:23 +0300
+Subject: USB: option: append Petatel NP10T device to GSM modems list
+
+From: Daniil Bolsun <dan.bolsun@gmail.com>
+
+commit c38e83b6cc2adf80e3f091fd92cfbeacc9748347 upstream.
+
+This patch was tested on 3.10.1 kernel.
+
+Same models of Petatel NP10T modems have different device IDs.
+Unfortunately they have no additional revision information on a board
+which may treat them as different devices. Currently I've seen only
+two NP10T devices with various IDs. Possibly Petatel NP10T list will
+be appended upon devices with new IDs will appear.
+
+Signed-off-by: Daniil Bolsun <dan.bolsun@gmail.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/usb/serial/option.c | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+--- a/drivers/usb/serial/option.c
++++ b/drivers/usb/serial/option.c
+@@ -439,7 +439,8 @@ static void option_instat_callback(struc
+
+ /* Hyundai Petatel Inc. products */
+ #define PETATEL_VENDOR_ID 0x1ff4
+-#define PETATEL_PRODUCT_NP10T 0x600e
++#define PETATEL_PRODUCT_NP10T_600A 0x600a
++#define PETATEL_PRODUCT_NP10T_600E 0x600e
+
+ /* TP-LINK Incorporated products */
+ #define TPLINK_VENDOR_ID 0x2357
+@@ -1325,7 +1326,8 @@ static const struct usb_device_id option
+ { USB_DEVICE_AND_INTERFACE_INFO(MEDIATEK_VENDOR_ID, MEDIATEK_PRODUCT_DC_4COM2, 0xff, 0x02, 0x01) },
+ { USB_DEVICE_AND_INTERFACE_INFO(MEDIATEK_VENDOR_ID, MEDIATEK_PRODUCT_DC_4COM2, 0xff, 0x00, 0x00) },
+ { USB_DEVICE(CELLIENT_VENDOR_ID, CELLIENT_PRODUCT_MEN200) },
+- { USB_DEVICE(PETATEL_VENDOR_ID, PETATEL_PRODUCT_NP10T) },
++ { USB_DEVICE(PETATEL_VENDOR_ID, PETATEL_PRODUCT_NP10T_600A) },
++ { USB_DEVICE(PETATEL_VENDOR_ID, PETATEL_PRODUCT_NP10T_600E) },
+ { USB_DEVICE(TPLINK_VENDOR_ID, TPLINK_PRODUCT_MA180),
+ .driver_info = (kernel_ulong_t)&net_intf4_blacklist },
+ { USB_DEVICE(TPLINK_VENDOR_ID, 0x9000), /* TP-Link MA260 */
--- /dev/null
+From 90625070c4253377025878c4e82feed8b35c7116 Mon Sep 17 00:00:00 2001
+From: Luiz Angelo Daros de Luca <luizluca@gmail.com>
+Date: Mon, 1 Jul 2013 23:56:25 -0300
+Subject: usb: serial: cp210x: Add USB ID for Netgear Switches embedded serial adapter
+
+From: Luiz Angelo Daros de Luca <luizluca@gmail.com>
+
+commit 90625070c4253377025878c4e82feed8b35c7116 upstream.
+
+This adds NetGear Managed Switch M4100 series, M5300 series, M7100 series
+USB ID (0846:0110) to the cp210x driver. Without this, the serial
+adapter is not recognized in Linux. Description was obtained from
+an Netgear Eng.
+
+Signed-off-by: Luiz Angelo Daros de Luca <luizluca@gmail.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/usb/serial/cp210x.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/drivers/usb/serial/cp210x.c
++++ b/drivers/usb/serial/cp210x.c
+@@ -53,6 +53,7 @@ static const struct usb_device_id id_tab
+ { USB_DEVICE(0x0489, 0xE000) }, /* Pirelli Broadband S.p.A, DP-L10 SIP/GSM Mobile */
+ { USB_DEVICE(0x0489, 0xE003) }, /* Pirelli Broadband S.p.A, DP-L10 SIP/GSM Mobile */
+ { USB_DEVICE(0x0745, 0x1000) }, /* CipherLab USB CCD Barcode Scanner 1000 */
++ { USB_DEVICE(0x0846, 0x1100) }, /* NetGear Managed Switch M4100 series, M5300 series, M7100 series */
+ { USB_DEVICE(0x08e6, 0x5501) }, /* Gemalto Prox-PU/CU contactless smartcard reader */
+ { USB_DEVICE(0x08FD, 0x000A) }, /* Digianswer A/S , ZigBee/802.15.4 MAC Device */
+ { USB_DEVICE(0x0BED, 0x1100) }, /* MEI (TM) Cashflow-SC Bill/Voucher Acceptor */
--- /dev/null
+From 4cf76df06ecc852633ed927d91e01c83c33bc331 Mon Sep 17 00:00:00 2001
+From: Dan Williams <dcbw@redhat.com>
+Date: Wed, 10 Jul 2013 12:25:02 -0500
+Subject: usb: serial: option: add Olivetti Olicard 200
+
+From: Dan Williams <dcbw@redhat.com>
+
+commit 4cf76df06ecc852633ed927d91e01c83c33bc331 upstream.
+
+Speaks AT on interfaces 5 (command & PPP) and 3 (secondary), other
+interface protocols are unknown.
+
+Signed-off-by: Dan Williams <dcbw@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/usb/serial/option.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/drivers/usb/serial/option.c
++++ b/drivers/usb/serial/option.c
+@@ -341,6 +341,7 @@ static void option_instat_callback(struc
+ #define OLIVETTI_VENDOR_ID 0x0b3c
+ #define OLIVETTI_PRODUCT_OLICARD100 0xc000
+ #define OLIVETTI_PRODUCT_OLICARD145 0xc003
++#define OLIVETTI_PRODUCT_OLICARD200 0xc005
+
+ /* Celot products */
+ #define CELOT_VENDOR_ID 0x211f
+@@ -1257,6 +1258,7 @@ static const struct usb_device_id option
+
+ { USB_DEVICE(OLIVETTI_VENDOR_ID, OLIVETTI_PRODUCT_OLICARD100) },
+ { USB_DEVICE(OLIVETTI_VENDOR_ID, OLIVETTI_PRODUCT_OLICARD145) },
++ { USB_DEVICE(OLIVETTI_VENDOR_ID, OLIVETTI_PRODUCT_OLICARD200) },
+ { USB_DEVICE(CELOT_VENDOR_ID, CELOT_PRODUCT_CT680M) }, /* CT-650 CDMA 450 1xEVDO modem */
+ { USB_DEVICE(ONDA_VENDOR_ID, ONDA_MT825UP) }, /* ONDA MT825UP modem */
+ { USB_DEVICE_AND_INTERFACE_INFO(SAMSUNG_VENDOR_ID, SAMSUNG_PRODUCT_GT_B3730, USB_CLASS_CDC_DATA, 0x00, 0x00) }, /* Samsung GT-B3730 LTE USB modem.*/
--- /dev/null
+From 63b5df963f52ccbab6fabedf05b7ac6b465789a4 Mon Sep 17 00:00:00 2001
+From: Enrico Mioso <mrkiko.rs@gmail.com>
+Date: Thu, 25 Jul 2013 02:01:39 +0200
+Subject: usb: serial: option: Add ONYX 3G device support
+
+From: Enrico Mioso <mrkiko.rs@gmail.com>
+
+commit 63b5df963f52ccbab6fabedf05b7ac6b465789a4 upstream.
+
+This patch adds support for the ONYX 3G device (version 1) from ALFA
+NETWORK.
+
+Signed-off-by: Enrico Mioso <mrkiko.rs@gmail.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/usb/serial/option.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/drivers/usb/serial/option.c
++++ b/drivers/usb/serial/option.c
+@@ -778,6 +778,7 @@ static const struct usb_device_id option
+ { USB_DEVICE(KYOCERA_VENDOR_ID, KYOCERA_PRODUCT_KPC650) },
+ { USB_DEVICE(KYOCERA_VENDOR_ID, KYOCERA_PRODUCT_KPC680) },
+ { USB_DEVICE(QUALCOMM_VENDOR_ID, 0x6613)}, /* Onda H600/ZTE MF330 */
++ { USB_DEVICE(QUALCOMM_VENDOR_ID, 0x0023)}, /* ONYX 3G device */
+ { USB_DEVICE(QUALCOMM_VENDOR_ID, 0x9000)}, /* SIMCom SIM5218 */
+ { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_6280) }, /* BP3-USB & BP3-EXT HSDPA */
+ { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_6008) },
--- /dev/null
+From 3d1a69e726406ab662ab88fa30a3a05ed404334d Mon Sep 17 00:00:00 2001
+From: Enrico Mioso <mrkiko.rs@gmail.com>
+Date: Sat, 29 Jun 2013 15:33:35 +0200
+Subject: usb: serial: option: blacklist ONDA MT689DC QMI interface
+
+From: Enrico Mioso <mrkiko.rs@gmail.com>
+
+commit 3d1a69e726406ab662ab88fa30a3a05ed404334d upstream.
+
+Prevent the option driver from binding itself to the QMI/WWAN interface, making
+it unusable by the proper driver.
+
+Signed-off-by: enrico Mioso <mrkiko.rs@gmail.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/usb/serial/option.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/drivers/usb/serial/option.c
++++ b/drivers/usb/serial/option.c
+@@ -817,7 +817,8 @@ static const struct usb_device_id option
+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0017, 0xff, 0xff, 0xff),
+ .driver_info = (kernel_ulong_t)&net_intf3_blacklist },
+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0018, 0xff, 0xff, 0xff) },
+- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0019, 0xff, 0xff, 0xff) },
++ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0019, 0xff, 0xff, 0xff),
++ .driver_info = (kernel_ulong_t)&net_intf3_blacklist },
+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0020, 0xff, 0xff, 0xff) },
+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0021, 0xff, 0xff, 0xff),
+ .driver_info = (kernel_ulong_t)&net_intf4_blacklist },
--- /dev/null
+From 878c69aae986ae97084458c0183a8c0a059865b1 Mon Sep 17 00:00:00 2001
+From: Enrico Mioso <mrkiko.rs@gmail.com>
+Date: Sat, 13 Jul 2013 18:54:14 +0200
+Subject: usb: serial: option.c: remove ONDA MT825UP product ID fromdriver
+
+From: Enrico Mioso <mrkiko.rs@gmail.com>
+
+commit 878c69aae986ae97084458c0183a8c0a059865b1 upstream.
+
+Some (very few) early devices like mine, where not exposting a proper CDC
+descriptor. This was fixed with an immediate firmware update from the vendor,
+and pre-installed on newer devices.
+So actual devices can be driven by cdc_acm.c + cdc_ether.c.
+
+Signed-off-by: Enrico Mioso <mrkiko.rs@gmail.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/usb/serial/option.c | 7 -------
+ 1 file changed, 7 deletions(-)
+
+--- a/drivers/usb/serial/option.c
++++ b/drivers/usb/serial/option.c
+@@ -347,12 +347,6 @@ static void option_instat_callback(struc
+ #define CELOT_VENDOR_ID 0x211f
+ #define CELOT_PRODUCT_CT680M 0x6801
+
+-/* ONDA Communication vendor id */
+-#define ONDA_VENDOR_ID 0x1ee8
+-
+-/* ONDA MT825UP HSDPA 14.2 modem */
+-#define ONDA_MT825UP 0x000b
+-
+ /* Samsung products */
+ #define SAMSUNG_VENDOR_ID 0x04e8
+ #define SAMSUNG_PRODUCT_GT_B3730 0x6889
+@@ -1260,7 +1254,6 @@ static const struct usb_device_id option
+ { USB_DEVICE(OLIVETTI_VENDOR_ID, OLIVETTI_PRODUCT_OLICARD145) },
+ { USB_DEVICE(OLIVETTI_VENDOR_ID, OLIVETTI_PRODUCT_OLICARD200) },
+ { USB_DEVICE(CELOT_VENDOR_ID, CELOT_PRODUCT_CT680M) }, /* CT-650 CDMA 450 1xEVDO modem */
+- { USB_DEVICE(ONDA_VENDOR_ID, ONDA_MT825UP) }, /* ONDA MT825UP modem */
+ { USB_DEVICE_AND_INTERFACE_INFO(SAMSUNG_VENDOR_ID, SAMSUNG_PRODUCT_GT_B3730, USB_CLASS_CDC_DATA, 0x00, 0x00) }, /* Samsung GT-B3730 LTE USB modem.*/
+ { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CEM600) },
+ { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CEM610) },