--- /dev/null
+From 28c56ea1431421dec51b7b229369e991481453df Mon Sep 17 00:00:00 2001
+From: Shengzhou Liu <Shengzhou.Liu@freescale.com>
+Date: Thu, 16 Feb 2012 18:02:20 +0800
+Subject: powerpc/usb: fix bug of kernel hang when initializing usb
+
+From: Shengzhou Liu <Shengzhou.Liu@freescale.com>
+
+commit 28c56ea1431421dec51b7b229369e991481453df upstream.
+
+If USB UTMI PHY is not enable, writing to portsc register will lead to
+kernel hang during boot up.
+
+Signed-off-by: Shengzhou Liu <Shengzhou.Liu@freescale.com>
+Reported-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/usb/host/ehci-fsl.c | 4 ++++
+ drivers/usb/host/ehci-fsl.h | 1 +
+ 2 files changed, 5 insertions(+)
+
+--- a/drivers/usb/host/ehci-fsl.c
++++ b/drivers/usb/host/ehci-fsl.c
+@@ -216,6 +216,8 @@ static void ehci_fsl_setup_phy(struct eh
+ unsigned int port_offset)
+ {
+ u32 portsc;
++ struct usb_hcd *hcd = ehci_to_hcd(ehci);
++ void __iomem *non_ehci = hcd->regs;
+
+ portsc = ehci_readl(ehci, &ehci->regs->port_status[port_offset]);
+ portsc &= ~(PORT_PTS_MSK | PORT_PTS_PTW);
+@@ -231,6 +233,8 @@ static void ehci_fsl_setup_phy(struct eh
+ portsc |= PORT_PTS_PTW;
+ /* fall through */
+ case FSL_USB2_PHY_UTMI:
++ /* enable UTMI PHY */
++ setbits32(non_ehci + FSL_SOC_USB_CTRL, CTRL_UTMI_PHY_EN);
+ portsc |= PORT_PTS_UTMI;
+ break;
+ case FSL_USB2_PHY_NONE:
+--- a/drivers/usb/host/ehci-fsl.h
++++ b/drivers/usb/host/ehci-fsl.h
+@@ -45,5 +45,6 @@
+ #define FSL_SOC_USB_PRICTRL 0x40c /* NOTE: big-endian */
+ #define FSL_SOC_USB_SICTRL 0x410 /* NOTE: big-endian */
+ #define FSL_SOC_USB_CTRL 0x500 /* NOTE: big-endian */
++#define CTRL_UTMI_PHY_EN (1<<9)
+ #define SNOOP_SIZE_2GB 0x1e
+ #endif /* _EHCI_FSL_H */
usb-option-driver-adding-support-for-telit-cc864-single-cc864-dual-and-de910-dual-modems.patch
usb-option-make-interface-blacklist-work-again.patch
usb-option-add-zte-mf820d.patch
+usb-ftdi_sio-fix-problem-when-the-manufacture-is-a-null-string.patch
+usb-ftdi_sio-add-support-for-beaglebone-rev-a5.patch
+usb-microchip-vid-mislabeled-as-hornby-vid-in-ftdi_sio.patch
+usb-ftdi_sio-new-pid-distortec-jtag-lock-pick.patch
+usb-ftdi_sio-add-support-for-ft-x-series-devices.patch
+usb-ftdi_sio-new-pid-lumel-pd12.patch
+powerpc-usb-fix-bug-of-kernel-hang-when-initializing-usb.patch
--- /dev/null
+From 444aa7fa9bd752d19ce472d3e02558b987c3cc67 Mon Sep 17 00:00:00 2001
+From: Peter Korsgaard <jacmet@sunsite.dk>
+Date: Wed, 29 Feb 2012 10:05:37 +0100
+Subject: USB: ftdi_sio: add support for BeagleBone rev A5+
+
+From: Peter Korsgaard <jacmet@sunsite.dk>
+
+commit 444aa7fa9bd752d19ce472d3e02558b987c3cc67 upstream.
+
+BeagleBone changed to the default FTDI 0403:6010 id in rev A5 to make life
+easier for Windows users, so we need a similar workaround as the Calao
+board to support it.
+
+Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/usb/serial/ftdi_sio.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/drivers/usb/serial/ftdi_sio.c
++++ b/drivers/usb/serial/ftdi_sio.c
+@@ -1755,8 +1755,8 @@ static int ftdi_8u2232c_probe(struct usb
+
+ dbg("%s", __func__);
+
+- if ((udev->manufacturer) &&
+- (strcmp(udev->manufacturer, "CALAO Systems") == 0))
++ if ((udev->manufacturer && !strcmp(udev->manufacturer, "CALAO Systems")) ||
++ (udev->product && !strcmp(udev->product, "BeagleBone/XDS100")))
+ return ftdi_jtag_probe(serial);
+
+ return 0;
--- /dev/null
+From dc0827c128c0ee5a58b822b99d662b59f4b8e970 Mon Sep 17 00:00:00 2001
+From: Jim Paris <jim@jtan.com>
+Date: Wed, 14 Mar 2012 17:54:25 -0400
+Subject: USB: ftdi_sio: add support for FT-X series devices
+
+From: Jim Paris <jim@jtan.com>
+
+commit dc0827c128c0ee5a58b822b99d662b59f4b8e970 upstream.
+
+Add PID 0x6015, corresponding to the new series of FT-X chips
+(FT220XD, FT201X, FT220X, FT221X, FT230X, FT231X, FT240X). They all
+appear as serial devices, and seem indistinguishable except for the
+default product string stored in their EEPROM. The baudrate
+generation matches FT232RL devices.
+
+Tested with a FT201X and FT230X at various baudrates (100 - 3000000).
+
+Sample dmesg:
+ ftdi_sio: v1.6.0:USB FTDI Serial Converters Driver
+ usb 2-1: new full-speed USB device number 6 using ohci_hcd
+ usb 2-1: New USB device found, idVendor=0403, idProduct=6015
+ usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
+ usb 2-1: Product: FT230X USB Half UART
+ usb 2-1: Manufacturer: FTDI
+ usb 2-1: SerialNumber: DC001WI6
+ ftdi_sio 2-1:1.0: FTDI USB Serial Device converter detected
+ drivers/usb/serial/ftdi_sio.c: ftdi_sio_port_probe
+ drivers/usb/serial/ftdi_sio.c: ftdi_determine_type: bcdDevice = 0x1000, bNumInterfaces = 1
+ usb 2-1: Detected FT-X
+ usb 2-1: Number of endpoints 2
+ usb 2-1: Endpoint 1 MaxPacketSize 64
+ usb 2-1: Endpoint 2 MaxPacketSize 64
+ usb 2-1: Setting MaxPacketSize 64
+ drivers/usb/serial/ftdi_sio.c: read_latency_timer
+ drivers/usb/serial/ftdi_sio.c: write_latency_timer: setting latency timer = 1
+ drivers/usb/serial/ftdi_sio.c: create_sysfs_attrs
+ drivers/usb/serial/ftdi_sio.c: sysfs attributes for FT-X
+ usb 2-1: FTDI USB Serial Device converter now attached to ttyUSB0
+
+Signed-off-by: Jim Paris <jim@jtan.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/usb/serial/ftdi_sio.c | 20 +++++++++++++++-----
+ drivers/usb/serial/ftdi_sio.h | 3 ++-
+ drivers/usb/serial/ftdi_sio_ids.h | 1 +
+ 3 files changed, 18 insertions(+), 6 deletions(-)
+
+--- a/drivers/usb/serial/ftdi_sio.c
++++ b/drivers/usb/serial/ftdi_sio.c
+@@ -187,6 +187,7 @@ static struct usb_device_id id_table_com
+ .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_FTX_PID) },
+ { USB_DEVICE(FTDI_VID, FTDI_MICRO_CHAMELEON_PID) },
+ { USB_DEVICE(FTDI_VID, FTDI_RELAIS_PID) },
+ { USB_DEVICE(FTDI_VID, FTDI_OPENDCC_PID) },
+@@ -869,7 +870,8 @@ static const char *ftdi_chip_name[] = {
+ [FT232RL] = "FT232RL",
+ [FT2232H] = "FT2232H",
+ [FT4232H] = "FT4232H",
+- [FT232H] = "FT232H"
++ [FT232H] = "FT232H",
++ [FTX] = "FT-X"
+ };
+
+
+@@ -1167,7 +1169,8 @@ static __u32 get_ftdi_divisor(struct tty
+ break;
+ case FT232BM: /* FT232BM chip */
+ case FT2232C: /* FT2232C chip */
+- case FT232RL:
++ case FT232RL: /* FT232RL chip */
++ case FTX: /* FT-X series */
+ if (baud <= 3000000) {
+ __u16 product_id = le16_to_cpu(
+ port->serial->dev->descriptor.idProduct);
+@@ -1453,10 +1456,14 @@ static void ftdi_determine_type(struct u
+ } else if (version < 0x900) {
+ /* Assume it's an FT232RL */
+ priv->chip_type = FT232RL;
+- } else {
++ } else if (version < 0x1000) {
+ /* Assume it's an FT232H */
+ priv->chip_type = FT232H;
++ } else {
++ /* Assume it's an FT-X series device */
++ priv->chip_type = FTX;
+ }
++
+ dev_info(&udev->dev, "Detected %s\n", ftdi_chip_name[priv->chip_type]);
+ }
+
+@@ -1584,7 +1591,8 @@ static int create_sysfs_attrs(struct usb
+ priv->chip_type == FT232RL ||
+ priv->chip_type == FT2232H ||
+ priv->chip_type == FT4232H ||
+- priv->chip_type == FT232H)) {
++ priv->chip_type == FT232H ||
++ priv->chip_type == FTX)) {
+ retval = device_create_file(&port->dev,
+ &dev_attr_latency_timer);
+ }
+@@ -1606,7 +1614,8 @@ static void remove_sysfs_attrs(struct us
+ priv->chip_type == FT232RL ||
+ priv->chip_type == FT2232H ||
+ priv->chip_type == FT4232H ||
+- priv->chip_type == FT232H) {
++ priv->chip_type == FT232H ||
++ priv->chip_type == FTX) {
+ device_remove_file(&port->dev, &dev_attr_latency_timer);
+ }
+ }
+@@ -2263,6 +2272,7 @@ static int ftdi_tiocmget(struct tty_stru
+ case FT2232H:
+ case FT4232H:
+ case FT232H:
++ case FTX:
+ len = 2;
+ break;
+ default:
+--- a/drivers/usb/serial/ftdi_sio.h
++++ b/drivers/usb/serial/ftdi_sio.h
+@@ -157,7 +157,8 @@ enum ftdi_chip_type {
+ FT232RL = 5,
+ FT2232H = 6,
+ FT4232H = 7,
+- FT232H = 8
++ FT232H = 8,
++ FTX = 9,
+ };
+
+ enum ftdi_sio_baudrate {
+--- a/drivers/usb/serial/ftdi_sio_ids.h
++++ b/drivers/usb/serial/ftdi_sio_ids.h
+@@ -23,6 +23,7 @@
+ #define FTDI_8U2232C_PID 0x6010 /* Dual channel device */
+ #define FTDI_4232H_PID 0x6011 /* Quad channel hi-speed device */
+ #define FTDI_232H_PID 0x6014 /* Single channel hi-speed device */
++#define FTDI_FTX_PID 0x6015 /* FT-X series (FT201X, FT230X, FT231X, etc) */
+ #define FTDI_SIO_PID 0x8372 /* Product Id SIO application of 8U100AX */
+ #define FTDI_232RL_PID 0xFBFA /* Product ID for FT232RL */
+
--- /dev/null
+From 656d2b3964a9d0f9864d472f8dfa2dd7dd42e6c0 Mon Sep 17 00:00:00 2001
+From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+Date: Tue, 28 Feb 2012 09:20:09 -0800
+Subject: USB: ftdi_sio: fix problem when the manufacture is a NULL string
+
+From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+commit 656d2b3964a9d0f9864d472f8dfa2dd7dd42e6c0 upstream.
+
+On some misconfigured ftdi_sio devices, if the manufacturer string is
+NULL, the kernel will oops when the device is plugged in. This patch
+fixes the problem.
+
+Reported-by: Wojciech M Zabolotny <W.Zabolotny@elka.pw.edu.pl>
+Tested-by: Wojciech M Zabolotny <W.Zabolotny@elka.pw.edu.pl>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/usb/serial/ftdi_sio.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/drivers/usb/serial/ftdi_sio.c
++++ b/drivers/usb/serial/ftdi_sio.c
+@@ -1755,7 +1755,8 @@ static int ftdi_8u2232c_probe(struct usb
+
+ dbg("%s", __func__);
+
+- if (strcmp(udev->manufacturer, "CALAO Systems") == 0)
++ if ((udev->manufacturer) &&
++ (strcmp(udev->manufacturer, "CALAO Systems") == 0))
+ return ftdi_jtag_probe(serial);
+
+ return 0;
--- /dev/null
+From 47594d5528f28a4c025c2955c68104c75815637c Mon Sep 17 00:00:00 2001
+From: Michał Wróbel <michal.wrobel@flytronic.pl>
+Date: Fri, 9 Mar 2012 14:40:18 +0100
+Subject: USB: ftdi_sio: new PID: Distortec JTAG-lock-pick
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+From: Michał Wróbel <michal.wrobel@flytronic.pl>
+
+commit 47594d5528f28a4c025c2955c68104c75815637c upstream.
+
+Signed-off-by: Michał Wróbel <michal.wrobel@flytronic.pl>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/usb/serial/ftdi_sio.c | 2 ++
+ drivers/usb/serial/ftdi_sio_ids.h | 2 ++
+ 2 files changed, 4 insertions(+)
+
+--- a/drivers/usb/serial/ftdi_sio.c
++++ b/drivers/usb/serial/ftdi_sio.c
+@@ -845,6 +845,8 @@ static struct usb_device_id id_table_com
+ { USB_DEVICE(ST_VID, ST_STMCLT1030_PID),
+ .driver_info = (kernel_ulong_t)&ftdi_stmclite_quirk },
+ { USB_DEVICE(FTDI_VID, FTDI_RF_R106) },
++ { USB_DEVICE(FTDI_VID, FTDI_DISTORTEC_JTAG_LOCK_PICK_PID),
++ .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
+ { }, /* Optional parameter entry */
+ { } /* Terminating entry */
+ };
+--- a/drivers/usb/serial/ftdi_sio_ids.h
++++ b/drivers/usb/serial/ftdi_sio_ids.h
+@@ -97,6 +97,8 @@
+ #define FTDI_TACTRIX_OPENPORT_13S_PID 0xCC49 /* OpenPort 1.3 Subaru */
+ #define FTDI_TACTRIX_OPENPORT_13U_PID 0xCC4A /* OpenPort 1.3 Universal */
+
++#define FTDI_DISTORTEC_JTAG_LOCK_PICK_PID 0xCFF8
++
+ /* SCS HF Radio Modems PID's (http://www.scs-ptc.com) */
+ /* the VID is the standard ftdi vid (FTDI_VID) */
+ #define FTDI_SCS_DEVICE_0_PID 0xD010 /* SCS PTC-IIusb */
--- /dev/null
+From 57e596f3af88ef52dea9640ed5e34ecd38893a02 Mon Sep 17 00:00:00 2001
+From: Michał Wróbel <michal.wrobel@flytronic.pl>
+Date: Thu, 15 Mar 2012 17:24:04 +0100
+Subject: USB: ftdi_sio: new PID: LUMEL PD12
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+From: Michał Wróbel <michal.wrobel@flytronic.pl>
+
+commit 57e596f3af88ef52dea9640ed5e34ecd38893a02 upstream.
+
+Signed-off-by: Michał Wróbel <michal.wrobel@flytronic.pl>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/usb/serial/ftdi_sio.c | 1 +
+ drivers/usb/serial/ftdi_sio_ids.h | 2 ++
+ 2 files changed, 3 insertions(+)
+
+--- a/drivers/usb/serial/ftdi_sio.c
++++ b/drivers/usb/serial/ftdi_sio.c
+@@ -848,6 +848,7 @@ static struct usb_device_id id_table_com
+ { USB_DEVICE(FTDI_VID, FTDI_RF_R106) },
+ { USB_DEVICE(FTDI_VID, FTDI_DISTORTEC_JTAG_LOCK_PICK_PID),
+ .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
++ { USB_DEVICE(FTDI_VID, FTDI_LUMEL_PD12_PID) },
+ { }, /* Optional parameter entry */
+ { } /* Terminating entry */
+ };
+--- a/drivers/usb/serial/ftdi_sio_ids.h
++++ b/drivers/usb/serial/ftdi_sio_ids.h
+@@ -30,6 +30,8 @@
+
+ /*** third-party PIDs (using FTDI_VID) ***/
+
++#define FTDI_LUMEL_PD12_PID 0x6002
++
+ /*
+ * Marvell OpenRD Base, Client
+ * http://www.open-rd.org
--- /dev/null
+From c1cee1d84001815a1b4321c49b995254c0df3100 Mon Sep 17 00:00:00 2001
+From: Bruno Thomsen <bruno.thomsen@gmail.com>
+Date: Sun, 4 Mar 2012 15:19:14 +0100
+Subject: USB: Microchip VID mislabeled as Hornby VID in ftdi_sio.
+
+From: Bruno Thomsen <bruno.thomsen@gmail.com>
+
+commit c1cee1d84001815a1b4321c49b995254c0df3100 upstream.
+
+Microchip VID (0x04d8) was mislabeled as Hornby VID according to USB-IDs.
+
+A Full Speed USB Demo Board PID (0x000a) was mislabeled as
+Hornby Elite (an Digital Command Controller Console for model railways).
+
+Most likely the Hornby based their design on
+PIC18F87J50 Full Speed USB Demo Board.
+
+Signed-off-by: Bruno Thomsen <bruno.thomsen@gmail.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/usb/serial/ftdi_sio.c | 2 +-
+ drivers/usb/serial/ftdi_sio_ids.h | 10 +++++++---
+ 2 files changed, 8 insertions(+), 4 deletions(-)
+
+--- a/drivers/usb/serial/ftdi_sio.c
++++ b/drivers/usb/serial/ftdi_sio.c
+@@ -796,7 +796,7 @@ static struct usb_device_id id_table_com
+ .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
+ { USB_DEVICE(ADI_VID, ADI_GNICEPLUS_PID),
+ .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
+- { USB_DEVICE(HORNBY_VID, HORNBY_ELITE_PID) },
++ { USB_DEVICE(MICROCHIP_VID, MICROCHIP_USB_BOARD_PID) },
+ { USB_DEVICE(JETI_VID, JETI_SPC1201_PID) },
+ { USB_DEVICE(MARVELL_VID, MARVELL_SHEEVAPLUG_PID),
+ .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
+--- a/drivers/usb/serial/ftdi_sio_ids.h
++++ b/drivers/usb/serial/ftdi_sio_ids.h
+@@ -532,10 +532,14 @@
+ #define ADI_GNICEPLUS_PID 0xF001
+
+ /*
+- * Hornby Elite
++ * Microchip Technology, Inc.
++ *
++ * MICROCHIP_VID (0x04D8) and MICROCHIP_USB_BOARD_PID (0x000A) are also used by:
++ * Hornby Elite - Digital Command Control Console
++ * http://www.hornby.com/hornby-dcc/controllers/
+ */
+-#define HORNBY_VID 0x04D8
+-#define HORNBY_ELITE_PID 0x000A
++#define MICROCHIP_VID 0x04D8
++#define MICROCHIP_USB_BOARD_PID 0x000A /* CDC RS-232 Emulation Demo */
+
+ /*
+ * RATOC REX-USB60F