summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGreg Kroah-Hartman <gregkh@suse.de>2011-08-26 15:24:48 -0700
committerGreg Kroah-Hartman <gregkh@suse.de>2011-08-26 15:24:48 -0700
commitd9d7239bdd99cea72c95444ce8f0935ec65c6a27 (patch)
tree9a57ed0336ac8c37ef76b787eaf2af2e0d1a238a
parent7ca3b3d15dbec69af0879cd3c00fac5acfdc9652 (diff)
downloadstable-queue-d9d7239bdd99cea72c95444ce8f0935ec65c6a27.tar.gz
3.0 patches
-rw-r--r--queue-3.0/8250-fix-race-condition-in-serial8250_backup_timeout.patch89
-rw-r--r--queue-3.0/8250_pci-add-support-for-rosewill-rc-305-4x-serial-port.patch51
-rw-r--r--queue-3.0/arch-powerpc-sysdev-fsl_rio.c-correct-iecsr-register-clear.patch51
-rw-r--r--queue-3.0/asoc-ad193x-fix-dac-word-len-setting.patch43
-rw-r--r--queue-3.0/asoc-ad193x-fix-registers-definition.patch39
-rw-r--r--queue-3.0/asoc-soc-jack-fix-checking-return-value-of-request_any_context_irq.patch31
-rw-r--r--queue-3.0/kernel-printk-do-not-turn-off-bootconsole-in-printk_late_init-if-keep_bootcon.patch45
-rw-r--r--queue-3.0/omap-serial-allow-ixon-and-ixoff-to-be-disabled.patch34
-rw-r--r--queue-3.0/rapidio-fix-use-of-non-compatible-registers.patch160
-rw-r--r--queue-3.0/serial-8250_pnp-add-intermec-cv60-touchscreen-device.patch34
-rw-r--r--queue-3.0/series15
-rw-r--r--queue-3.0/sfi-table-irq-0xff-means-no-interrupt.patch39
-rw-r--r--queue-3.0/tty-add-spi-prefix-for-spi-modalias.patch49
-rw-r--r--queue-3.0/tty-pty-fix-pty-counting.patch135
-rw-r--r--queue-3.0/usb-ftdi_sio-add-calao-reference-board-support.patch76
-rw-r--r--queue-3.0/usb-s5p-ehci-fix-a-null-pointer-deference.patch32
16 files changed, 923 insertions, 0 deletions
diff --git a/queue-3.0/8250-fix-race-condition-in-serial8250_backup_timeout.patch b/queue-3.0/8250-fix-race-condition-in-serial8250_backup_timeout.patch
new file mode 100644
index 0000000000..85cc99e9be
--- /dev/null
+++ b/queue-3.0/8250-fix-race-condition-in-serial8250_backup_timeout.patch
@@ -0,0 +1,89 @@
+From dbb3b1ca5609d1f3848cd387d06cc60aaacf7f98 Mon Sep 17 00:00:00 2001
+From: Al Cooper <alcooperx@gmail.com>
+Date: Mon, 25 Jul 2011 16:19:52 -0400
+Subject: 8250: Fix race condition in serial8250_backup_timeout().
+
+From: Al Cooper <alcooperx@gmail.com>
+
+commit dbb3b1ca5609d1f3848cd387d06cc60aaacf7f98 upstream.
+
+This is to fix an issue where output will suddenly become very slow.
+The problem occurs on 8250 UARTS with the hardware bug UART_BUG_THRE.
+
+BACKGROUND
+For normal UARTs (without UART_BUG_THRE): When the serial core layer
+gets new transmit data and the transmitter is idle, it buffers the
+data and calls the 8250s' serial8250_start_tx() routine which will
+simply enable the TX interrupt in the IER register and return. This
+should immediately fire a THRE interrupt and begin transmitting the
+data.
+For buggy UARTs (with UART_BUG_THRE): merely enabling the TX interrupt
+in IER does not necessarily generate a new THRE interrupt.
+Therefore, a background timer periodically checks to see if there is
+pending data, and starts transmission if that is the case.
+
+The bug happens on SMP systems when the system has nothing to transmit,
+the transmit interrupt is disabled and the following sequence occurs:
+- CPU0: The background timer routine serial8250_backup_timeout()
+ starts and saves the state of the interrupt enable register (IER)
+ and then disables all interrupts in IER. NOTE: The transmit interrupt
+ (TI) bit is saved as disabled.
+- CPU1: The serial core gets data to transmit, grabs the port lock and
+ calls serial8250_start_tx() which enables the TI in IER.
+- CPU0: serial8250_backup_timeout() waits for the port lock.
+- CPU1: finishes (with TI enabled) and releases the port lock.
+- CPU0: serial8250_backup_timeout() calls the interrupt routine which
+ will transmit the next fifo's worth of data and then restores the
+ IER from the previously saved value (TI disabled).
+At this point, as long as the serial core has more transmit data
+buffered, it will not call serial8250_start_tx() again and the
+background timer routine will slowly transmit the data.
+
+The fix is to have serial8250_start_tx() get the port lock before
+it saves the IER state and release it after restoring IER. This will
+prevent serial8250_start_tx() from running in parallel.
+
+Signed-off-by: Al Cooper <alcooperx@gmail.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/tty/serial/8250.c | 8 +++++---
+ 1 file changed, 5 insertions(+), 3 deletions(-)
+
+--- a/drivers/tty/serial/8250.c
++++ b/drivers/tty/serial/8250.c
+@@ -1819,6 +1819,8 @@ static void serial8250_backup_timeout(un
+ unsigned int iir, ier = 0, lsr;
+ unsigned long flags;
+
++ spin_lock_irqsave(&up->port.lock, flags);
++
+ /*
+ * Must disable interrupts or else we risk racing with the interrupt
+ * based handler.
+@@ -1836,10 +1838,8 @@ static void serial8250_backup_timeout(un
+ * the "Diva" UART used on the management processor on many HP
+ * ia64 and parisc boxes.
+ */
+- spin_lock_irqsave(&up->port.lock, flags);
+ lsr = serial_in(up, UART_LSR);
+ up->lsr_saved_flags |= lsr & LSR_SAVE_FLAGS;
+- spin_unlock_irqrestore(&up->port.lock, flags);
+ if ((iir & UART_IIR_NO_INT) && (up->ier & UART_IER_THRI) &&
+ (!uart_circ_empty(&up->port.state->xmit) || up->port.x_char) &&
+ (lsr & UART_LSR_THRE)) {
+@@ -1848,11 +1848,13 @@ static void serial8250_backup_timeout(un
+ }
+
+ if (!(iir & UART_IIR_NO_INT))
+- serial8250_handle_port(up);
++ transmit_chars(up);
+
+ if (is_real_interrupt(up->port.irq))
+ serial_out(up, UART_IER, ier);
+
++ spin_unlock_irqrestore(&up->port.lock, flags);
++
+ /* Standard timer interval plus 0.2s to keep the port running */
+ mod_timer(&up->timer,
+ jiffies + uart_poll_timeout(&up->port) + HZ / 5);
diff --git a/queue-3.0/8250_pci-add-support-for-rosewill-rc-305-4x-serial-port.patch b/queue-3.0/8250_pci-add-support-for-rosewill-rc-305-4x-serial-port.patch
new file mode 100644
index 0000000000..c61414b038
--- /dev/null
+++ b/queue-3.0/8250_pci-add-support-for-rosewill-rc-305-4x-serial-port.patch
@@ -0,0 +1,51 @@
+From 44178176ecc55ad370b837dd2c4b4b8bed1e3823 Mon Sep 17 00:00:00 2001
+From: Eric Smith <eric@brouhaha.com>
+Date: Mon, 11 Jul 2011 22:53:13 -0600
+Subject: 8250_pci: add support for Rosewill RC-305 4x serial port
+ card
+
+From: Eric Smith <eric@brouhaha.com>
+
+commit 44178176ecc55ad370b837dd2c4b4b8bed1e3823 upstream.
+
+This patch adds support for the Rosewill RC-305 four-port PCI serial
+card, and probably any other four-port serial cards based on the
+Moschip MCS9865 chip, assuming that the EEPROM on the card was
+programmed in accordance with Table 6 of the MCS9865 EEPROM
+Application Note version 0.3 dated 16-May-2008, available from the
+Moschip web site (registration required).
+
+This patch is based on an earlier patch [1] for the SYBA 6x serial
+port card by Ira W. Snyder.
+
+[1]: http://www.gossamer-threads.com/lists/linux/kernel/1162435
+
+Signed-off-by: Eric Smith <eric@brouhaha.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/tty/serial/8250_pci.c | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+--- a/drivers/tty/serial/8250_pci.c
++++ b/drivers/tty/serial/8250_pci.c
+@@ -3886,7 +3886,7 @@ static struct pci_device_id serial_pci_t
+ 0, 0, pbn_b0_1_115200 },
+
+ /*
+- * Best Connectivity PCI Multi I/O cards
++ * Best Connectivity and Rosewill PCI Multi I/O cards
+ */
+
+ { PCI_VENDOR_ID_NETMOS, PCI_DEVICE_ID_NETMOS_9865,
+@@ -3894,6 +3894,10 @@ static struct pci_device_id serial_pci_t
+ 0, 0, pbn_b0_1_115200 },
+
+ { PCI_VENDOR_ID_NETMOS, PCI_DEVICE_ID_NETMOS_9865,
++ 0xA000, 0x3002,
++ 0, 0, pbn_b0_bt_2_115200 },
++
++ { PCI_VENDOR_ID_NETMOS, PCI_DEVICE_ID_NETMOS_9865,
+ 0xA000, 0x3004,
+ 0, 0, pbn_b0_bt_4_115200 },
+ /* Intel CE4100 */
diff --git a/queue-3.0/arch-powerpc-sysdev-fsl_rio.c-correct-iecsr-register-clear.patch b/queue-3.0/arch-powerpc-sysdev-fsl_rio.c-correct-iecsr-register-clear.patch
new file mode 100644
index 0000000000..872d062afe
--- /dev/null
+++ b/queue-3.0/arch-powerpc-sysdev-fsl_rio.c-correct-iecsr-register-clear.patch
@@ -0,0 +1,51 @@
+From 671ee7f0ce62e4b991b47fcf1c161c3f710dabbc Mon Sep 17 00:00:00 2001
+From: Liu Gang-B34182 <B34182@freescale.com>
+Date: Thu, 25 Aug 2011 15:59:25 -0700
+Subject: arch/powerpc/sysdev/fsl_rio.c: correct IECSR register clear
+ value
+
+From: Liu Gang-B34182 <B34182@freescale.com>
+
+commit 671ee7f0ce62e4b991b47fcf1c161c3f710dabbc upstream.
+
+This bug causes the IECSR register clear failure. In this case, the RETE
+(retry error threshold exceeded) interrupt will be generated and cannot be
+cleared. So the related ISR may be called persistently.
+
+The RETE bit in IECSR is cleared by writing a 1 to it.
+
+Signed-off-by: Liu Gang <Gang.Liu@freescale.com>
+Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
+Cc: Kumar Gala <galak@kernel.crashing.org>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ arch/powerpc/sysdev/fsl_rio.c | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+--- a/arch/powerpc/sysdev/fsl_rio.c
++++ b/arch/powerpc/sysdev/fsl_rio.c
+@@ -54,6 +54,7 @@
+ #define ODSR_CLEAR 0x1c00
+ #define LTLEECSR_ENABLE_ALL 0xFFC000FC
+ #define ESCSR_CLEAR 0x07120204
++#define IECSR_CLEAR 0x80000000
+
+ #define RIO_PORT1_EDCSR 0x0640
+ #define RIO_PORT2_EDCSR 0x0680
+@@ -1089,11 +1090,11 @@ static void port_error_handler(struct ri
+
+ if (offset == 0) {
+ out_be32((u32 *)(rio_regs_win + RIO_PORT1_EDCSR), 0);
+- out_be32((u32 *)(rio_regs_win + RIO_PORT1_IECSR), 0);
++ out_be32((u32 *)(rio_regs_win + RIO_PORT1_IECSR), IECSR_CLEAR);
+ out_be32((u32 *)(rio_regs_win + RIO_ESCSR), ESCSR_CLEAR);
+ } else {
+ out_be32((u32 *)(rio_regs_win + RIO_PORT2_EDCSR), 0);
+- out_be32((u32 *)(rio_regs_win + RIO_PORT2_IECSR), 0);
++ out_be32((u32 *)(rio_regs_win + RIO_PORT2_IECSR), IECSR_CLEAR);
+ out_be32((u32 *)(rio_regs_win + RIO_PORT2_ESCSR), ESCSR_CLEAR);
+ }
+ }
diff --git a/queue-3.0/asoc-ad193x-fix-dac-word-len-setting.patch b/queue-3.0/asoc-ad193x-fix-dac-word-len-setting.patch
new file mode 100644
index 0000000000..8810ead657
--- /dev/null
+++ b/queue-3.0/asoc-ad193x-fix-dac-word-len-setting.patch
@@ -0,0 +1,43 @@
+From 95c93d8525ebce1024bda7316f602ae45c36cd6f Mon Sep 17 00:00:00 2001
+From: Scott Jiang <scott.jiang.linux@gmail.com>
+Date: Fri, 12 Aug 2011 18:04:11 -0400
+Subject: ASoC: ad193x: fix dac word len setting
+
+From: Scott Jiang <scott.jiang.linux@gmail.com>
+
+commit 95c93d8525ebce1024bda7316f602ae45c36cd6f upstream.
+
+dac word len value should left shift before setting
+
+Signed-off-by: Scott Jiang <scott.jiang.linux@gmail.com>
+Acked-by: Barry Song <21cnbao@gmail.com>
+Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ sound/soc/codecs/ad193x.c | 3 ++-
+ sound/soc/codecs/ad193x.h | 1 +
+ 2 files changed, 3 insertions(+), 1 deletion(-)
+
+--- a/sound/soc/codecs/ad193x.c
++++ b/sound/soc/codecs/ad193x.c
+@@ -307,7 +307,8 @@ static int ad193x_hw_params(struct snd_p
+ snd_soc_write(codec, AD193X_PLL_CLK_CTRL0, reg);
+
+ reg = snd_soc_read(codec, AD193X_DAC_CTRL2);
+- reg = (reg & (~AD193X_DAC_WORD_LEN_MASK)) | word_len;
++ reg = (reg & (~AD193X_DAC_WORD_LEN_MASK))
++ | (word_len << AD193X_DAC_WORD_LEN_SHFT);
+ snd_soc_write(codec, AD193X_DAC_CTRL2, reg);
+
+ reg = snd_soc_read(codec, AD193X_ADC_CTRL1);
+--- a/sound/soc/codecs/ad193x.h
++++ b/sound/soc/codecs/ad193x.h
+@@ -34,6 +34,7 @@
+ #define AD193X_DAC_LEFT_HIGH (1 << 3)
+ #define AD193X_DAC_BCLK_INV (1 << 7)
+ #define AD193X_DAC_CTRL2 0x804
++#define AD193X_DAC_WORD_LEN_SHFT 3
+ #define AD193X_DAC_WORD_LEN_MASK 0x18
+ #define AD193X_DAC_MASTER_MUTE 1
+ #define AD193X_DAC_CHNL_MUTE 0x805
diff --git a/queue-3.0/asoc-ad193x-fix-registers-definition.patch b/queue-3.0/asoc-ad193x-fix-registers-definition.patch
new file mode 100644
index 0000000000..284915c7cc
--- /dev/null
+++ b/queue-3.0/asoc-ad193x-fix-registers-definition.patch
@@ -0,0 +1,39 @@
+From bf545ed72f2eeac664695a8ea2199d9ddaef6020 Mon Sep 17 00:00:00 2001
+From: Scott Jiang <scott.jiang.linux@gmail.com>
+Date: Fri, 12 Aug 2011 18:04:10 -0400
+Subject: ASoC: ad193x: fix registers definition
+
+From: Scott Jiang <scott.jiang.linux@gmail.com>
+
+commit bf545ed72f2eeac664695a8ea2199d9ddaef6020 upstream.
+
+fix dac word len mask and adc tdm fmt shift value
+
+Signed-off-by: Scott Jiang <scott.jiang.linux@gmail.com>
+Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ sound/soc/codecs/ad193x.h | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/sound/soc/codecs/ad193x.h
++++ b/sound/soc/codecs/ad193x.h
+@@ -34,7 +34,7 @@
+ #define AD193X_DAC_LEFT_HIGH (1 << 3)
+ #define AD193X_DAC_BCLK_INV (1 << 7)
+ #define AD193X_DAC_CTRL2 0x804
+-#define AD193X_DAC_WORD_LEN_MASK 0xC
++#define AD193X_DAC_WORD_LEN_MASK 0x18
+ #define AD193X_DAC_MASTER_MUTE 1
+ #define AD193X_DAC_CHNL_MUTE 0x805
+ #define AD193X_DACL1_MUTE 0
+@@ -63,7 +63,7 @@
+ #define AD193X_ADC_CTRL1 0x80f
+ #define AD193X_ADC_SERFMT_MASK 0x60
+ #define AD193X_ADC_SERFMT_STEREO (0 << 5)
+-#define AD193X_ADC_SERFMT_TDM (1 << 2)
++#define AD193X_ADC_SERFMT_TDM (1 << 5)
+ #define AD193X_ADC_SERFMT_AUX (2 << 5)
+ #define AD193X_ADC_WORD_LEN_MASK 0x3
+ #define AD193X_ADC_CTRL2 0x810
diff --git a/queue-3.0/asoc-soc-jack-fix-checking-return-value-of-request_any_context_irq.patch b/queue-3.0/asoc-soc-jack-fix-checking-return-value-of-request_any_context_irq.patch
new file mode 100644
index 0000000000..a767daea71
--- /dev/null
+++ b/queue-3.0/asoc-soc-jack-fix-checking-return-value-of-request_any_context_irq.patch
@@ -0,0 +1,31 @@
+From d2b4c7bd7eabfaa2e3e5b8107d5eeb56ac879813 Mon Sep 17 00:00:00 2001
+From: Axel Lin <axel.lin@gmail.com>
+Date: Sat, 13 Aug 2011 19:15:01 +0800
+Subject: ASoC: soc-jack: Fix checking return value of request_any_context_irq
+
+From: Axel Lin <axel.lin@gmail.com>
+
+commit d2b4c7bd7eabfaa2e3e5b8107d5eeb56ac879813 upstream.
+
+request_any_context_irq() returns a negative value on failure.
+On success, it returns either IRQC_IS_HARDIRQ or IRQC_IS_NESTED.
+
+Signed-off-by: Axel Lin <axel.lin@gmail.com>
+Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ sound/soc/soc-jack.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/sound/soc/soc-jack.c
++++ b/sound/soc/soc-jack.c
+@@ -327,7 +327,7 @@ int snd_soc_jack_add_gpios(struct snd_so
+ IRQF_TRIGGER_FALLING,
+ gpios[i].name,
+ &gpios[i]);
+- if (ret)
++ if (ret < 0)
+ goto err;
+
+ if (gpios[i].wake) {
diff --git a/queue-3.0/kernel-printk-do-not-turn-off-bootconsole-in-printk_late_init-if-keep_bootcon.patch b/queue-3.0/kernel-printk-do-not-turn-off-bootconsole-in-printk_late_init-if-keep_bootcon.patch
new file mode 100644
index 0000000000..cde7cd73ef
--- /dev/null
+++ b/queue-3.0/kernel-printk-do-not-turn-off-bootconsole-in-printk_late_init-if-keep_bootcon.patch
@@ -0,0 +1,45 @@
+From 4c30c6f566c0989ddaee3407da44751e340a63ed Mon Sep 17 00:00:00 2001
+From: Nishanth Aravamudan <nacc@us.ibm.com>
+Date: Thu, 25 Aug 2011 15:59:11 -0700
+Subject: kernel/printk: do not turn off bootconsole in printk_late_init() if keep_bootcon
+
+From: Nishanth Aravamudan <nacc@us.ibm.com>
+
+commit 4c30c6f566c0989ddaee3407da44751e340a63ed upstream.
+
+It seems that 7bf693951a8e ("console: allow to retain boot console via
+boot option keep_bootcon") doesn't always achieve what it aims, as when
+printk_late_init() runs it unconditionally turns off all boot consoles.
+With this patch, I am able to see more messages on the boot console in
+KVM guests than I can without, when keep_bootcon is specified.
+
+I think it is appropriate for the relevant -stable trees. However, it's
+more of an annoyance than a serious bug (ideally you don't need to keep
+the boot console around as console handover should be working -- I was
+encountering a situation where the console handover wasn't working and
+not having the boot console available meant I couldn't see why).
+
+Signed-off-by: Nishanth Aravamudan <nacc@us.ibm.com>
+Cc: David S. Miller <davem@davemloft.net>
+Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
+Cc: Greg KH <gregkh@suse.de>
+Acked-by: Fabio M. Di Nitto <fdinitto@redhat.com>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ kernel/printk.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/kernel/printk.c
++++ b/kernel/printk.c
+@@ -1584,7 +1584,7 @@ static int __init printk_late_init(void)
+ struct console *con;
+
+ for_each_console(con) {
+- if (con->flags & CON_BOOT) {
++ if (!keep_bootcon && con->flags & CON_BOOT) {
+ printk(KERN_INFO "turn off boot console %s%d\n",
+ con->name, con->index);
+ unregister_console(con);
diff --git a/queue-3.0/omap-serial-allow-ixon-and-ixoff-to-be-disabled.patch b/queue-3.0/omap-serial-allow-ixon-and-ixoff-to-be-disabled.patch
new file mode 100644
index 0000000000..1b1bef9c43
--- /dev/null
+++ b/queue-3.0/omap-serial-allow-ixon-and-ixoff-to-be-disabled.patch
@@ -0,0 +1,34 @@
+From b280a97d1caf6fe1d38b51ebb31219391f5ad1a0 Mon Sep 17 00:00:00 2001
+From: Nick Pelly <npelly@google.com>
+Date: Fri, 15 Jul 2011 13:53:08 -0700
+Subject: omap-serial: Allow IXON and IXOFF to be disabled.
+
+From: Nick Pelly <npelly@google.com>
+
+commit b280a97d1caf6fe1d38b51ebb31219391f5ad1a0 upstream.
+
+Fixes logic bug that software flow control cannot be disabled, because
+serial_omap_configure_xonxoff() is not called if both IXON and IXOFF bits
+are cleared.
+
+Signed-off-by: Nick Pelly <npelly@google.com>
+Acked-by: Govindraj.R <govindraj.raja@ti.com>
+Tested-by: Govindraj.R <govindraj.raja@ti.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/tty/serial/omap-serial.c | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+--- a/drivers/tty/serial/omap-serial.c
++++ b/drivers/tty/serial/omap-serial.c
+@@ -806,8 +806,7 @@ serial_omap_set_termios(struct uart_port
+
+ serial_omap_set_mctrl(&up->port, up->port.mctrl);
+ /* Software Flow Control Configuration */
+- if (termios->c_iflag & (IXON | IXOFF))
+- serial_omap_configure_xonxoff(up, termios);
++ serial_omap_configure_xonxoff(up, termios);
+
+ spin_unlock_irqrestore(&up->port.lock, flags);
+ dev_dbg(up->port.dev, "serial_omap_set_termios+%d\n", up->pdev->id);
diff --git a/queue-3.0/rapidio-fix-use-of-non-compatible-registers.patch b/queue-3.0/rapidio-fix-use-of-non-compatible-registers.patch
new file mode 100644
index 0000000000..ec303254ea
--- /dev/null
+++ b/queue-3.0/rapidio-fix-use-of-non-compatible-registers.patch
@@ -0,0 +1,160 @@
+From 284fb68d00c56e971ed01e0b4bac5ddd4d1b74ab Mon Sep 17 00:00:00 2001
+From: Alexandre Bounine <alexandre.bounine@idt.com>
+Date: Thu, 25 Aug 2011 15:59:13 -0700
+Subject: rapidio: fix use of non-compatible registers
+
+From: Alexandre Bounine <alexandre.bounine@idt.com>
+
+commit 284fb68d00c56e971ed01e0b4bac5ddd4d1b74ab upstream.
+
+Replace/remove use of RIO v.1.2 registers/bits that are not
+forward-compatible with newer versions of RapidIO specification.
+
+RapidIO specification v.1.3 removed Write Port CSR, Doorbell CSR,
+Mailbox CSR and Mailbox and Doorbell bits of the PEF CAR.
+
+Use of removed (since RIO v.1.3) register bits affects users of
+currently available 1.3 and 2.x compliant devices who may use not so
+recent kernel versions.
+
+Removing checks for unsupported bits makes corresponding routines
+compatible with all versions of RapidIO specification. Therefore,
+backporting makes stable kernel versions compliant with RIO v.1.3 and
+later as well.
+
+Signed-off-by: Alexandre Bounine <alexandre.bounine@idt.com>
+Cc: Kumar Gala <galak@kernel.crashing.org>
+Cc: Matt Porter <mporter@kernel.crashing.org>
+Cc: Li Yang <leoli@freescale.com>
+Cc: Thomas Moll <thomas.moll@sysgo.com>
+Cc: Chul Kim <chul.kim@idt.com>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/net/rionet.c | 23 ++++++++---------------
+ drivers/rapidio/rio-scan.c | 3 +--
+ include/linux/rio_regs.h | 18 +++++++++---------
+ 3 files changed, 18 insertions(+), 26 deletions(-)
+
+--- a/drivers/net/rionet.c
++++ b/drivers/net/rionet.c
+@@ -80,13 +80,13 @@ static int rionet_capable = 1;
+ */
+ static struct rio_dev **rionet_active;
+
+-#define is_rionet_capable(pef, src_ops, dst_ops) \
+- ((pef & RIO_PEF_INB_MBOX) && \
+- (pef & RIO_PEF_INB_DOORBELL) && \
++#define is_rionet_capable(src_ops, dst_ops) \
++ ((src_ops & RIO_SRC_OPS_DATA_MSG) && \
++ (dst_ops & RIO_DST_OPS_DATA_MSG) && \
+ (src_ops & RIO_SRC_OPS_DOORBELL) && \
+ (dst_ops & RIO_DST_OPS_DOORBELL))
+ #define dev_rionet_capable(dev) \
+- is_rionet_capable(dev->pef, dev->src_ops, dev->dst_ops)
++ is_rionet_capable(dev->src_ops, dev->dst_ops)
+
+ #define RIONET_MAC_MATCH(x) (*(u32 *)x == 0x00010001)
+ #define RIONET_GET_DESTID(x) (*(u16 *)(x + 4))
+@@ -282,7 +282,6 @@ static int rionet_open(struct net_device
+ {
+ int i, rc = 0;
+ struct rionet_peer *peer, *tmp;
+- u32 pwdcsr;
+ struct rionet_private *rnet = netdev_priv(ndev);
+
+ if (netif_msg_ifup(rnet))
+@@ -332,13 +331,8 @@ static int rionet_open(struct net_device
+ continue;
+ }
+
+- /*
+- * If device has initialized inbound doorbells,
+- * send a join message
+- */
+- rio_read_config_32(peer->rdev, RIO_WRITE_PORT_CSR, &pwdcsr);
+- if (pwdcsr & RIO_DOORBELL_AVAIL)
+- rio_send_doorbell(peer->rdev, RIONET_DOORBELL_JOIN);
++ /* Send a join message */
++ rio_send_doorbell(peer->rdev, RIONET_DOORBELL_JOIN);
+ }
+
+ out:
+@@ -492,7 +486,7 @@ static int rionet_setup_netdev(struct ri
+ static int rionet_probe(struct rio_dev *rdev, const struct rio_device_id *id)
+ {
+ int rc = -ENODEV;
+- u32 lpef, lsrc_ops, ldst_ops;
++ u32 lsrc_ops, ldst_ops;
+ struct rionet_peer *peer;
+ struct net_device *ndev = NULL;
+
+@@ -515,12 +509,11 @@ static int rionet_probe(struct rio_dev *
+ * on later probes
+ */
+ if (!rionet_check) {
+- rio_local_read_config_32(rdev->net->hport, RIO_PEF_CAR, &lpef);
+ rio_local_read_config_32(rdev->net->hport, RIO_SRC_OPS_CAR,
+ &lsrc_ops);
+ rio_local_read_config_32(rdev->net->hport, RIO_DST_OPS_CAR,
+ &ldst_ops);
+- if (!is_rionet_capable(lpef, lsrc_ops, ldst_ops)) {
++ if (!is_rionet_capable(lsrc_ops, ldst_ops)) {
+ printk(KERN_ERR
+ "%s: local device is not network capable\n",
+ DRV_NAME);
+--- a/drivers/rapidio/rio-scan.c
++++ b/drivers/rapidio/rio-scan.c
+@@ -505,8 +505,7 @@ static struct rio_dev __devinit *rio_set
+ rdev->dev.dma_mask = &rdev->dma_mask;
+ rdev->dev.coherent_dma_mask = DMA_BIT_MASK(32);
+
+- if ((rdev->pef & RIO_PEF_INB_DOORBELL) &&
+- (rdev->dst_ops & RIO_DST_OPS_DOORBELL))
++ if (rdev->dst_ops & RIO_DST_OPS_DOORBELL)
+ rio_init_dbell_res(&rdev->riores[RIO_DOORBELL_RESOURCE],
+ 0, 0xffff);
+
+--- a/include/linux/rio_regs.h
++++ b/include/linux/rio_regs.h
+@@ -36,12 +36,12 @@
+ #define RIO_PEF_PROCESSOR 0x20000000 /* [I] Processor */
+ #define RIO_PEF_SWITCH 0x10000000 /* [I] Switch */
+ #define RIO_PEF_MULTIPORT 0x08000000 /* [VI, 2.1] Multiport */
+-#define RIO_PEF_INB_MBOX 0x00f00000 /* [II] Mailboxes */
+-#define RIO_PEF_INB_MBOX0 0x00800000 /* [II] Mailbox 0 */
+-#define RIO_PEF_INB_MBOX1 0x00400000 /* [II] Mailbox 1 */
+-#define RIO_PEF_INB_MBOX2 0x00200000 /* [II] Mailbox 2 */
+-#define RIO_PEF_INB_MBOX3 0x00100000 /* [II] Mailbox 3 */
+-#define RIO_PEF_INB_DOORBELL 0x00080000 /* [II] Doorbells */
++#define RIO_PEF_INB_MBOX 0x00f00000 /* [II, <= 1.2] Mailboxes */
++#define RIO_PEF_INB_MBOX0 0x00800000 /* [II, <= 1.2] Mailbox 0 */
++#define RIO_PEF_INB_MBOX1 0x00400000 /* [II, <= 1.2] Mailbox 1 */
++#define RIO_PEF_INB_MBOX2 0x00200000 /* [II, <= 1.2] Mailbox 2 */
++#define RIO_PEF_INB_MBOX3 0x00100000 /* [II, <= 1.2] Mailbox 3 */
++#define RIO_PEF_INB_DOORBELL 0x00080000 /* [II, <= 1.2] Doorbells */
+ #define RIO_PEF_EXT_RT 0x00000200 /* [III, 1.3] Extended route table support */
+ #define RIO_PEF_STD_RT 0x00000100 /* [III, 1.3] Standard route table support */
+ #define RIO_PEF_CTLS 0x00000010 /* [III] CTLS */
+@@ -102,7 +102,7 @@
+ #define RIO_SWITCH_RT_LIMIT 0x34 /* [III, 1.3] Switch Route Table Destination ID Limit CAR */
+ #define RIO_RT_MAX_DESTID 0x0000ffff
+
+-#define RIO_MBOX_CSR 0x40 /* [II] Mailbox CSR */
++#define RIO_MBOX_CSR 0x40 /* [II, <= 1.2] Mailbox CSR */
+ #define RIO_MBOX0_AVAIL 0x80000000 /* [II] Mbox 0 avail */
+ #define RIO_MBOX0_FULL 0x40000000 /* [II] Mbox 0 full */
+ #define RIO_MBOX0_EMPTY 0x20000000 /* [II] Mbox 0 empty */
+@@ -128,8 +128,8 @@
+ #define RIO_MBOX3_FAIL 0x00000008 /* [II] Mbox 3 fail */
+ #define RIO_MBOX3_ERROR 0x00000004 /* [II] Mbox 3 error */
+
+-#define RIO_WRITE_PORT_CSR 0x44 /* [I] Write Port CSR */
+-#define RIO_DOORBELL_CSR 0x44 /* [II] Doorbell CSR */
++#define RIO_WRITE_PORT_CSR 0x44 /* [I, <= 1.2] Write Port CSR */
++#define RIO_DOORBELL_CSR 0x44 /* [II, <= 1.2] Doorbell CSR */
+ #define RIO_DOORBELL_AVAIL 0x80000000 /* [II] Doorbell avail */
+ #define RIO_DOORBELL_FULL 0x40000000 /* [II] Doorbell full */
+ #define RIO_DOORBELL_EMPTY 0x20000000 /* [II] Doorbell empty */
diff --git a/queue-3.0/serial-8250_pnp-add-intermec-cv60-touchscreen-device.patch b/queue-3.0/serial-8250_pnp-add-intermec-cv60-touchscreen-device.patch
new file mode 100644
index 0000000000..279a454b76
--- /dev/null
+++ b/queue-3.0/serial-8250_pnp-add-intermec-cv60-touchscreen-device.patch
@@ -0,0 +1,34 @@
+From ab8ba3a2d2cba6a658ef596cd5b2e0905b6c8a9f Mon Sep 17 00:00:00 2001
+From: Bjorn Helgaas <bhelgaas@google.com>
+Date: Tue, 16 Aug 2011 12:02:28 -0600
+Subject: serial: 8250_pnp: add Intermec CV60 touchscreen device
+
+From: Bjorn Helgaas <bhelgaas@google.com>
+
+commit ab8ba3a2d2cba6a658ef596cd5b2e0905b6c8a9f upstream.
+
+It would have been nice if Intermec had supplied a PNP0501 _CID for the
+COM3 device, but they didn't, so we have to recognize it explicitly.
+
+Reference: https://bugzilla.kernel.org/show_bug.cgi?id=40612
+CC: Jeff Chua <jeff.chua.linux@gmail.com>
+Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
+Acked-by: Alan Cox <alan@linux.intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/tty/serial/8250_pnp.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+--- a/drivers/tty/serial/8250_pnp.c
++++ b/drivers/tty/serial/8250_pnp.c
+@@ -109,6 +109,9 @@ static const struct pnp_device_id pnp_de
+ /* IBM */
+ /* IBM Thinkpad 701 Internal Modem Voice */
+ { "IBM0033", 0 },
++ /* Intermec */
++ /* Intermec CV60 touchscreen port */
++ { "PNP4972", 0 },
+ /* Intertex */
+ /* Intertex 28k8 33k6 Voice EXT PnP */
+ { "IXDC801", 0 },
diff --git a/queue-3.0/series b/queue-3.0/series
new file mode 100644
index 0000000000..0d226bf4bc
--- /dev/null
+++ b/queue-3.0/series
@@ -0,0 +1,15 @@
+kernel-printk-do-not-turn-off-bootconsole-in-printk_late_init-if-keep_bootcon.patch
+rapidio-fix-use-of-non-compatible-registers.patch
+arch-powerpc-sysdev-fsl_rio.c-correct-iecsr-register-clear.patch
+sfi-table-irq-0xff-means-no-interrupt.patch
+asoc-soc-jack-fix-checking-return-value-of-request_any_context_irq.patch
+asoc-ad193x-fix-registers-definition.patch
+asoc-ad193x-fix-dac-word-len-setting.patch
+omap-serial-allow-ixon-and-ixoff-to-be-disabled.patch
+serial-8250_pnp-add-intermec-cv60-touchscreen-device.patch
+8250_pci-add-support-for-rosewill-rc-305-4x-serial-port.patch
+8250-fix-race-condition-in-serial8250_backup_timeout.patch
+tty-add-spi-prefix-for-spi-modalias.patch
+tty-pty-fix-pty-counting.patch
+usb-ftdi_sio-add-calao-reference-board-support.patch
+usb-s5p-ehci-fix-a-null-pointer-deference.patch
diff --git a/queue-3.0/sfi-table-irq-0xff-means-no-interrupt.patch b/queue-3.0/sfi-table-irq-0xff-means-no-interrupt.patch
new file mode 100644
index 0000000000..f7fd36ff60
--- /dev/null
+++ b/queue-3.0/sfi-table-irq-0xff-means-no-interrupt.patch
@@ -0,0 +1,39 @@
+From a94cc4e6c0a26a7c8f79a432ab2c89534aa674d5 Mon Sep 17 00:00:00 2001
+From: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>
+Date: Fri, 26 Aug 2011 12:20:59 +0100
+Subject: sfi: table irq 0xFF means 'no interrupt'
+
+From: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>
+
+commit a94cc4e6c0a26a7c8f79a432ab2c89534aa674d5 upstream.
+
+According to the SFI specification irq number 0xFF means device has no
+interrupt or interrupt attached via GPIO.
+
+Currently, we don't handle this special case and set irq field in
+*_board_info structs to 255. It leads to confusion in some drivers.
+Accelerometer driver tries to register interrupt 255, fails and prints
+"Cannot get IRQ" to dmesg.
+
+Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
+Signed-off-by: Alan Cox <alan@linux.intel.com>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ arch/x86/platform/mrst/mrst.c | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+--- a/arch/x86/platform/mrst/mrst.c
++++ b/arch/x86/platform/mrst/mrst.c
+@@ -689,7 +689,9 @@ static int __init sfi_parse_devs(struct
+ irq_attr.trigger = 1;
+ irq_attr.polarity = 1;
+ io_apic_set_pci_routing(NULL, pentry->irq, &irq_attr);
+- }
++ } else
++ pentry->irq = 0; /* No irq */
++
+ switch (pentry->type) {
+ case SFI_DEV_TYPE_IPC:
+ /* ID as IRQ is a hack that will go away */
diff --git a/queue-3.0/tty-add-spi-prefix-for-spi-modalias.patch b/queue-3.0/tty-add-spi-prefix-for-spi-modalias.patch
new file mode 100644
index 0000000000..6806ae2a77
--- /dev/null
+++ b/queue-3.0/tty-add-spi-prefix-for-spi-modalias.patch
@@ -0,0 +1,49 @@
+From 8c4074cd2254606aeb788d518ccc27c9f97129e1 Mon Sep 17 00:00:00 2001
+From: Axel Lin <axel.lin@gmail.com>
+Date: Mon, 1 Aug 2011 21:20:10 +0800
+Subject: tty: Add "spi:" prefix for spi modalias
+
+From: Axel Lin <axel.lin@gmail.com>
+
+commit 8c4074cd2254606aeb788d518ccc27c9f97129e1 upstream.
+
+Since commit e0626e38 (spi: prefix modalias with "spi:"),
+the spi modalias is prefixed with "spi:".
+
+This patch adds "spi:" prefix and removes "-spi" suffix in the modalias.
+
+Signed-off-by: Axel Lin <axel.lin@gmail.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/tty/serial/max3107-aava.c | 2 +-
+ drivers/tty/serial/max3107.c | 2 +-
+ drivers/tty/serial/mrst_max3110.c | 2 +-
+ 3 files changed, 3 insertions(+), 3 deletions(-)
+
+--- a/drivers/tty/serial/max3107-aava.c
++++ b/drivers/tty/serial/max3107-aava.c
+@@ -340,5 +340,5 @@ module_exit(max3107_exit);
+
+ MODULE_DESCRIPTION("MAX3107 driver");
+ MODULE_AUTHOR("Aavamobile");
+-MODULE_ALIAS("aava-max3107-spi");
++MODULE_ALIAS("spi:aava-max3107");
+ MODULE_LICENSE("GPL v2");
+--- a/drivers/tty/serial/max3107.c
++++ b/drivers/tty/serial/max3107.c
+@@ -1209,5 +1209,5 @@ module_exit(max3107_exit);
+
+ MODULE_DESCRIPTION("MAX3107 driver");
+ MODULE_AUTHOR("Aavamobile");
+-MODULE_ALIAS("max3107-spi");
++MODULE_ALIAS("spi:max3107");
+ MODULE_LICENSE("GPL v2");
+--- a/drivers/tty/serial/mrst_max3110.c
++++ b/drivers/tty/serial/mrst_max3110.c
+@@ -917,4 +917,4 @@ module_init(serial_m3110_init);
+ module_exit(serial_m3110_exit);
+
+ MODULE_LICENSE("GPL v2");
+-MODULE_ALIAS("max3110-uart");
++MODULE_ALIAS("spi:max3110-uart");
diff --git a/queue-3.0/tty-pty-fix-pty-counting.patch b/queue-3.0/tty-pty-fix-pty-counting.patch
new file mode 100644
index 0000000000..220d34d4c7
--- /dev/null
+++ b/queue-3.0/tty-pty-fix-pty-counting.patch
@@ -0,0 +1,135 @@
+From 24d406a6bf736f7aebdc8fa0f0ec86e0890c6d24 Mon Sep 17 00:00:00 2001
+From: Jiri Slaby <jslaby@suse.cz>
+Date: Wed, 10 Aug 2011 14:59:28 +0200
+Subject: TTY: pty, fix pty counting
+
+From: Jiri Slaby <jslaby@suse.cz>
+
+commit 24d406a6bf736f7aebdc8fa0f0ec86e0890c6d24 upstream.
+
+tty_operations->remove is normally called like:
+queue_release_one_tty
+ ->tty_shutdown
+ ->tty_driver_remove_tty
+ ->tty_operations->remove
+
+However tty_shutdown() is called from queue_release_one_tty() only if
+tty_operations->shutdown is NULL. But for pty, it is not.
+pty_unix98_shutdown() is used there as ->shutdown.
+
+So tty_operations->remove of pty (i.e. pty_unix98_remove()) is never
+called. This results in invalid pty_count. I.e. what can be seen in
+/proc/sys/kernel/pty/nr.
+
+I see this was already reported at:
+ https://lkml.org/lkml/2009/11/5/370
+But it was not fixed since then.
+
+This patch is kind of a hackish way. The problem lies in ->install. We
+allocate there another tty (so-called tty->link). So ->install is
+called once, but ->remove twice, for both tty and tty->link. The fix
+here is to count both tty and tty->link and divide the count by 2 for
+user.
+
+And to have ->remove called, let's make tty_driver_remove_tty() global
+and call that from pty_unix98_shutdown() (tty_operations->shutdown).
+
+While at it, let's document that when ->shutdown is defined,
+tty_shutdown() is not called.
+
+Signed-off-by: Jiri Slaby <jslaby@suse.cz>
+Cc: Alan Cox <alan@linux.intel.com>
+Cc: "H. Peter Anvin" <hpa@zytor.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/tty/pty.c | 17 +++++++++++++++--
+ drivers/tty/tty_io.c | 3 +--
+ include/linux/tty.h | 2 ++
+ include/linux/tty_driver.h | 3 +++
+ 4 files changed, 21 insertions(+), 4 deletions(-)
+
+--- a/drivers/tty/pty.c
++++ b/drivers/tty/pty.c
+@@ -446,8 +446,19 @@ static inline void legacy_pty_init(void)
+ int pty_limit = NR_UNIX98_PTY_DEFAULT;
+ static int pty_limit_min;
+ static int pty_limit_max = NR_UNIX98_PTY_MAX;
++static int tty_count;
+ static int pty_count;
+
++static inline void pty_inc_count(void)
++{
++ pty_count = (++tty_count) / 2;
++}
++
++static inline void pty_dec_count(void)
++{
++ pty_count = (--tty_count) / 2;
++}
++
+ static struct cdev ptmx_cdev;
+
+ static struct ctl_table pty_table[] = {
+@@ -542,6 +553,7 @@ static struct tty_struct *pts_unix98_loo
+
+ static void pty_unix98_shutdown(struct tty_struct *tty)
+ {
++ tty_driver_remove_tty(tty->driver, tty);
+ /* We have our own method as we don't use the tty index */
+ kfree(tty->termios);
+ }
+@@ -588,7 +600,8 @@ static int pty_unix98_install(struct tty
+ */
+ tty_driver_kref_get(driver);
+ tty->count++;
+- pty_count++;
++ pty_inc_count(); /* tty */
++ pty_inc_count(); /* tty->link */
+ return 0;
+ err_free_mem:
+ deinitialize_tty_struct(o_tty);
+@@ -602,7 +615,7 @@ err_free_tty:
+
+ static void pty_unix98_remove(struct tty_driver *driver, struct tty_struct *tty)
+ {
+- pty_count--;
++ pty_dec_count();
+ }
+
+ static const struct tty_operations ptm_unix98_ops = {
+--- a/drivers/tty/tty_io.c
++++ b/drivers/tty/tty_io.c
+@@ -1294,8 +1294,7 @@ static int tty_driver_install_tty(struct
+ *
+ * Locking: tty_mutex for now
+ */
+-static void tty_driver_remove_tty(struct tty_driver *driver,
+- struct tty_struct *tty)
++void tty_driver_remove_tty(struct tty_driver *driver, struct tty_struct *tty)
+ {
+ if (driver->ops->remove)
+ driver->ops->remove(driver, tty);
+--- a/include/linux/tty.h
++++ b/include/linux/tty.h
+@@ -420,6 +420,8 @@ extern void tty_driver_flush_buffer(stru
+ extern void tty_throttle(struct tty_struct *tty);
+ extern void tty_unthrottle(struct tty_struct *tty);
+ extern int tty_do_resize(struct tty_struct *tty, struct winsize *ws);
++extern void tty_driver_remove_tty(struct tty_driver *driver,
++ struct tty_struct *tty);
+ extern void tty_shutdown(struct tty_struct *tty);
+ extern void tty_free_termios(struct tty_struct *tty);
+ extern int is_current_pgrp_orphaned(void);
+--- a/include/linux/tty_driver.h
++++ b/include/linux/tty_driver.h
+@@ -47,6 +47,9 @@
+ *
+ * This routine is called synchronously when a particular tty device
+ * is closed for the last time freeing up the resources.
++ * Note that tty_shutdown() is not called if ops->shutdown is defined.
++ * This means one is responsible to take care of calling ops->remove (e.g.
++ * via tty_driver_remove_tty) and releasing tty->termios.
+ *
+ *
+ * void (*cleanup)(struct tty_struct * tty);
diff --git a/queue-3.0/usb-ftdi_sio-add-calao-reference-board-support.patch b/queue-3.0/usb-ftdi_sio-add-calao-reference-board-support.patch
new file mode 100644
index 0000000000..3765de707a
--- /dev/null
+++ b/queue-3.0/usb-ftdi_sio-add-calao-reference-board-support.patch
@@ -0,0 +1,76 @@
+From c96fbdd0ab97235f930ebf24b38fa42a2e3458cf Mon Sep 17 00:00:00 2001
+From: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
+Date: Thu, 25 Aug 2011 11:46:58 +0200
+Subject: USB: ftdi_sio: add Calao reference board support
+
+From: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
+
+commit c96fbdd0ab97235f930ebf24b38fa42a2e3458cf upstream.
+
+Calao use on there dev kits a FT2232 where the port 0 is used for the JTAG and
+port 1 for the UART
+
+They use the same VID and PID as FTDI Chip but they program the manufacturer
+name in the eeprom
+
+So use this information to detect it
+
+Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
+Cc: Gregory Hermant <gregory.hermant@calao-systems.com>
+Cc: Alan Cox <alan@linux.intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/serial/ftdi_sio.c | 20 +++++++++++++++++++-
+ 1 file changed, 19 insertions(+), 1 deletion(-)
+
+--- a/drivers/usb/serial/ftdi_sio.c
++++ b/drivers/usb/serial/ftdi_sio.c
+@@ -101,6 +101,7 @@ static int ftdi_jtag_probe(struct usb_
+ static int ftdi_mtxorb_hack_setup(struct usb_serial *serial);
+ static int ftdi_NDI_device_setup(struct usb_serial *serial);
+ static int ftdi_stmclite_probe(struct usb_serial *serial);
++static int ftdi_8u2232c_probe(struct usb_serial *serial);
+ static void ftdi_USB_UIRT_setup(struct ftdi_private *priv);
+ static void ftdi_HE_TIRA1_setup(struct ftdi_private *priv);
+
+@@ -128,6 +129,10 @@ static struct ftdi_sio_quirk ftdi_stmcli
+ .probe = ftdi_stmclite_probe,
+ };
+
++static struct ftdi_sio_quirk ftdi_8u2232c_quirk = {
++ .probe = ftdi_8u2232c_probe,
++};
++
+ /*
+ * The 8U232AM has the same API as the sio except for:
+ * - it can support MUCH higher baudrates; up to:
+@@ -177,7 +182,8 @@ static struct usb_device_id id_table_com
+ { USB_DEVICE(FTDI_VID, FTDI_8U232AM_PID) },
+ { USB_DEVICE(FTDI_VID, FTDI_8U232AM_ALT_PID) },
+ { USB_DEVICE(FTDI_VID, FTDI_232RL_PID) },
+- { USB_DEVICE(FTDI_VID, FTDI_8U2232C_PID) },
++ { USB_DEVICE(FTDI_VID, FTDI_8U2232C_PID) ,
++ .driver_info = (kernel_ulong_t)&ftdi_8u2232c_quirk },
+ { USB_DEVICE(FTDI_VID, FTDI_4232H_PID) },
+ { USB_DEVICE(FTDI_VID, FTDI_232H_PID) },
+ { USB_DEVICE(FTDI_VID, FTDI_MICRO_CHAMELEON_PID) },
+@@ -1732,6 +1738,18 @@ static int ftdi_jtag_probe(struct usb_se
+
+ return 0;
+ }
++
++static int ftdi_8u2232c_probe(struct usb_serial *serial)
++{
++ struct usb_device *udev = serial->dev;
++
++ dbg("%s", __func__);
++
++ if (strcmp(udev->manufacturer, "CALAO Systems") == 0)
++ return ftdi_jtag_probe(serial);
++
++ return 0;
++}
+
+ /*
+ * First and second port on STMCLiteadaptors is reserved for JTAG interface
diff --git a/queue-3.0/usb-s5p-ehci-fix-a-null-pointer-deference.patch b/queue-3.0/usb-s5p-ehci-fix-a-null-pointer-deference.patch
new file mode 100644
index 0000000000..360a353bf2
--- /dev/null
+++ b/queue-3.0/usb-s5p-ehci-fix-a-null-pointer-deference.patch
@@ -0,0 +1,32 @@
+From e5d3d4463fb30998385f9e78ab3c7f63b5813000 Mon Sep 17 00:00:00 2001
+From: Yulgon Kim <yulgon.kim@samsung.com>
+Date: Thu, 18 Aug 2011 14:02:45 +0900
+Subject: usb: s5p-ehci: fix a NULL pointer deference
+
+From: Yulgon Kim <yulgon.kim@samsung.com>
+
+commit e5d3d4463fb30998385f9e78ab3c7f63b5813000 upstream.
+
+This patch fixes a NULL pointer deference. A NULL pointer
+dereference happens since s5p_ehci->hcd field is not initialized
+yet in probe function.
+
+[jg1.han@samsung.com: edit commit message]
+Signed-off-by: Yulgon Kim <yulgon.kim@samsung.com>
+Signed-off-by: Jingoo Han <jg1.han@samsung.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/host/ehci-s5p.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/drivers/usb/host/ehci-s5p.c
++++ b/drivers/usb/host/ehci-s5p.c
+@@ -86,6 +86,7 @@ static int __devinit s5p_ehci_probe(stru
+ goto fail_hcd;
+ }
+
++ s5p_ehci->hcd = hcd;
+ s5p_ehci->clk = clk_get(&pdev->dev, "usbhost");
+
+ if (IS_ERR(s5p_ehci->clk)) {