]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
3.2-stable patches
authorGreg Kroah-Hartman <gregkh@suse.de>
Mon, 30 Jan 2012 23:08:36 +0000 (15:08 -0800)
committerGreg Kroah-Hartman <gregkh@suse.de>
Mon, 30 Jan 2012 23:08:36 +0000 (15:08 -0800)
added patches:
usb-cdc-wdm-updating-desc-length-must-be-protected-by-spin_lock.patch
usb-cdc-wdm-use-two-mutexes-to-allow-simultaneous-read-and-write.patch
usb-ftdi_sio-add-more-identifiers.patch
usb-ftdi_sio-add-pid-for-ti-xds100v2-beaglebone-a3.patch
usb-ftdi_sio-fix-initial-baud-rate.patch
usb-ftdi_sio-fix-tiocsserial-baud_base-handling.patch
usb-option-add-lg-docomo-l-02c.patch
usb-serial-ftdi-additional-ids.patch

queue-3.2/series
queue-3.2/usb-cdc-wdm-updating-desc-length-must-be-protected-by-spin_lock.patch [new file with mode: 0644]
queue-3.2/usb-cdc-wdm-use-two-mutexes-to-allow-simultaneous-read-and-write.patch [new file with mode: 0644]
queue-3.2/usb-ftdi_sio-add-more-identifiers.patch [new file with mode: 0644]
queue-3.2/usb-ftdi_sio-add-pid-for-ti-xds100v2-beaglebone-a3.patch [new file with mode: 0644]
queue-3.2/usb-ftdi_sio-fix-initial-baud-rate.patch [new file with mode: 0644]
queue-3.2/usb-ftdi_sio-fix-tiocsserial-baud_base-handling.patch [new file with mode: 0644]
queue-3.2/usb-option-add-lg-docomo-l-02c.patch [new file with mode: 0644]
queue-3.2/usb-serial-ftdi-additional-ids.patch [new file with mode: 0644]

index 68857b0a8463c5aab3266e33e50e59b4e6b8c897..deb0bd2b12714ecb0de9da6d2e134d6a7782adb8 100644 (file)
@@ -36,3 +36,11 @@ arm-7296-1-proc-v7.s-remove-harvard_cache-preprocessor-guards.patch
 sysfs-complain-bitterly-about-attempts-to-remove-files-from-nonexistent-directories.patch
 x86-xen-size-struct-xen_spinlock-to-always-fit-in-arch_spinlock_t.patch
 mpt2sas-removed-redundant-calling-of-_scsih_probe_devices-from-_scsih_probe.patch
+usb-option-add-lg-docomo-l-02c.patch
+usb-ftdi_sio-fix-tiocsserial-baud_base-handling.patch
+usb-ftdi_sio-fix-initial-baud-rate.patch
+usb-ftdi_sio-add-pid-for-ti-xds100v2-beaglebone-a3.patch
+usb-serial-ftdi-additional-ids.patch
+usb-ftdi_sio-add-more-identifiers.patch
+usb-cdc-wdm-updating-desc-length-must-be-protected-by-spin_lock.patch
+usb-cdc-wdm-use-two-mutexes-to-allow-simultaneous-read-and-write.patch
diff --git a/queue-3.2/usb-cdc-wdm-updating-desc-length-must-be-protected-by-spin_lock.patch b/queue-3.2/usb-cdc-wdm-updating-desc-length-must-be-protected-by-spin_lock.patch
new file mode 100644 (file)
index 0000000..0799a3d
--- /dev/null
@@ -0,0 +1,34 @@
+From c428b70c1e115c5649707a602742e34130d19428 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Bj=C3=B8rn=20Mork?= <bjorn@mork.no>
+Date: Mon, 16 Jan 2012 12:41:47 +0100
+Subject: USB: cdc-wdm: updating desc->length must be protected by spin_lock
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+From: Bjørn Mork <bjorn@mork.no>
+
+commit c428b70c1e115c5649707a602742e34130d19428 upstream.
+
+wdm_in_callback() will also touch this field, so we cannot change it without locking
+
+Signed-off-by: Bjørn Mork <bjorn@mork.no>
+Acked-by: Oliver Neukum <oneukum@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/class/cdc-wdm.c |    2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/drivers/usb/class/cdc-wdm.c
++++ b/drivers/usb/class/cdc-wdm.c
+@@ -467,7 +467,9 @@ retry:
+       for (i = 0; i < desc->length - cntr; i++)
+               desc->ubuf[i] = desc->ubuf[i + cntr];
++      spin_lock_irq(&desc->iuspin);
+       desc->length -= cntr;
++      spin_unlock_irq(&desc->iuspin);
+       /* in case we had outstanding data */
+       if (!desc->length)
+               clear_bit(WDM_READ, &desc->flags);
diff --git a/queue-3.2/usb-cdc-wdm-use-two-mutexes-to-allow-simultaneous-read-and-write.patch b/queue-3.2/usb-cdc-wdm-use-two-mutexes-to-allow-simultaneous-read-and-write.patch
new file mode 100644 (file)
index 0000000..50ee4e4
--- /dev/null
@@ -0,0 +1,175 @@
+From e8537bd2c4f325a4796da33564ddcef9489b7feb Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Bj=C3=B8rn=20Mork?= <bjorn@mork.no>
+Date: Mon, 16 Jan 2012 12:41:48 +0100
+Subject: USB: cdc-wdm: use two mutexes to allow simultaneous read and write
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+From: Bjørn Mork <bjorn@mork.no>
+
+commit e8537bd2c4f325a4796da33564ddcef9489b7feb upstream.
+
+using a separate read and write mutex for locking is sufficient to make the
+driver accept simultaneous read and write. This improves useability a lot.
+
+Signed-off-by: Bjørn Mork <bjorn@mork.no>
+Cc: Oliver Neukum <oneukum@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/class/cdc-wdm.c |   49 +++++++++++++++++++++++++++-----------------
+ 1 file changed, 31 insertions(+), 18 deletions(-)
+
+--- a/drivers/usb/class/cdc-wdm.c
++++ b/drivers/usb/class/cdc-wdm.c
+@@ -88,7 +88,8 @@ struct wdm_device {
+       int                     count;
+       dma_addr_t              shandle;
+       dma_addr_t              ihandle;
+-      struct mutex            lock;
++      struct mutex            wlock;
++      struct mutex            rlock;
+       wait_queue_head_t       wait;
+       struct work_struct      rxwork;
+       int                     werr;
+@@ -323,7 +324,7 @@ static ssize_t wdm_write
+       }
+       /* concurrent writes and disconnect */
+-      r = mutex_lock_interruptible(&desc->lock);
++      r = mutex_lock_interruptible(&desc->wlock);
+       rv = -ERESTARTSYS;
+       if (r) {
+               kfree(buf);
+@@ -386,7 +387,7 @@ static ssize_t wdm_write
+ out:
+       usb_autopm_put_interface(desc->intf);
+ outnp:
+-      mutex_unlock(&desc->lock);
++      mutex_unlock(&desc->wlock);
+ outnl:
+       return rv < 0 ? rv : count;
+ }
+@@ -399,7 +400,7 @@ static ssize_t wdm_read
+       struct wdm_device *desc = file->private_data;
+-      rv = mutex_lock_interruptible(&desc->lock); /*concurrent reads */
++      rv = mutex_lock_interruptible(&desc->rlock); /*concurrent reads */
+       if (rv < 0)
+               return -ERESTARTSYS;
+@@ -476,7 +477,7 @@ retry:
+       rv = cntr;
+ err:
+-      mutex_unlock(&desc->lock);
++      mutex_unlock(&desc->rlock);
+       return rv;
+ }
+@@ -542,7 +543,8 @@ static int wdm_open(struct inode *inode,
+       }
+       intf->needs_remote_wakeup = 1;
+-      mutex_lock(&desc->lock);
++      /* using write lock to protect desc->count */
++      mutex_lock(&desc->wlock);
+       if (!desc->count++) {
+               desc->werr = 0;
+               desc->rerr = 0;
+@@ -555,7 +557,7 @@ static int wdm_open(struct inode *inode,
+       } else {
+               rv = 0;
+       }
+-      mutex_unlock(&desc->lock);
++      mutex_unlock(&desc->wlock);
+       usb_autopm_put_interface(desc->intf);
+ out:
+       mutex_unlock(&wdm_mutex);
+@@ -567,9 +569,11 @@ static int wdm_release(struct inode *ino
+       struct wdm_device *desc = file->private_data;
+       mutex_lock(&wdm_mutex);
+-      mutex_lock(&desc->lock);
++
++      /* using write lock to protect desc->count */
++      mutex_lock(&desc->wlock);
+       desc->count--;
+-      mutex_unlock(&desc->lock);
++      mutex_unlock(&desc->wlock);
+       if (!desc->count) {
+               dev_dbg(&desc->intf->dev, "wdm_release: cleanup");
+@@ -667,7 +671,8 @@ next_desc:
+       desc = kzalloc(sizeof(struct wdm_device), GFP_KERNEL);
+       if (!desc)
+               goto out;
+-      mutex_init(&desc->lock);
++      mutex_init(&desc->rlock);
++      mutex_init(&desc->wlock);
+       spin_lock_init(&desc->iuspin);
+       init_waitqueue_head(&desc->wait);
+       desc->wMaxCommand = maxcom;
+@@ -781,10 +786,12 @@ static void wdm_disconnect(struct usb_in
+       /* to terminate pending flushes */
+       clear_bit(WDM_IN_USE, &desc->flags);
+       spin_unlock_irqrestore(&desc->iuspin, flags);
+-      mutex_lock(&desc->lock);
++      mutex_lock(&desc->rlock);
++      mutex_lock(&desc->wlock);
+       kill_urbs(desc);
+       cancel_work_sync(&desc->rxwork);
+-      mutex_unlock(&desc->lock);
++      mutex_unlock(&desc->wlock);
++      mutex_unlock(&desc->rlock);
+       wake_up_all(&desc->wait);
+       if (!desc->count)
+               cleanup(desc);
+@@ -800,8 +807,10 @@ static int wdm_suspend(struct usb_interf
+       dev_dbg(&desc->intf->dev, "wdm%d_suspend\n", intf->minor);
+       /* if this is an autosuspend the caller does the locking */
+-      if (!PMSG_IS_AUTO(message))
+-              mutex_lock(&desc->lock);
++      if (!PMSG_IS_AUTO(message)) {
++              mutex_lock(&desc->rlock);
++              mutex_lock(&desc->wlock);
++      }
+       spin_lock_irq(&desc->iuspin);
+       if (PMSG_IS_AUTO(message) &&
+@@ -817,8 +826,10 @@ static int wdm_suspend(struct usb_interf
+               kill_urbs(desc);
+               cancel_work_sync(&desc->rxwork);
+       }
+-      if (!PMSG_IS_AUTO(message))
+-              mutex_unlock(&desc->lock);
++      if (!PMSG_IS_AUTO(message)) {
++              mutex_unlock(&desc->wlock);
++              mutex_unlock(&desc->rlock);
++      }
+       return rv;
+ }
+@@ -856,7 +867,8 @@ static int wdm_pre_reset(struct usb_inte
+ {
+       struct wdm_device *desc = usb_get_intfdata(intf);
+-      mutex_lock(&desc->lock);
++      mutex_lock(&desc->rlock);
++      mutex_lock(&desc->wlock);
+       kill_urbs(desc);
+       /*
+@@ -878,7 +890,8 @@ static int wdm_post_reset(struct usb_int
+       int rv;
+       rv = recover_from_urb_loss(desc);
+-      mutex_unlock(&desc->lock);
++      mutex_unlock(&desc->wlock);
++      mutex_unlock(&desc->rlock);
+       return 0;
+ }
diff --git a/queue-3.2/usb-ftdi_sio-add-more-identifiers.patch b/queue-3.2/usb-ftdi_sio-add-more-identifiers.patch
new file mode 100644 (file)
index 0000000..6accda3
--- /dev/null
@@ -0,0 +1,44 @@
+From 2353f806c97020d4c7709f15eebb49b591f7306d Mon Sep 17 00:00:00 2001
+From: Alan Cox <alan@linux.intel.com>
+Date: Thu, 26 Jan 2012 17:41:34 +0000
+Subject: USB: ftdi_sio: Add more identifiers
+
+From: Alan Cox <alan@linux.intel.com>
+
+commit 2353f806c97020d4c7709f15eebb49b591f7306d upstream.
+
+0x04d8, 0x000a: Hornby Elite
+
+Signed-off-by: Alan Cox <alan@linux.intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/serial/ftdi_sio.c     |    1 +
+ drivers/usb/serial/ftdi_sio_ids.h |    6 ++++++
+ 2 files changed, 7 insertions(+)
+
+--- a/drivers/usb/serial/ftdi_sio.c
++++ b/drivers/usb/serial/ftdi_sio.c
+@@ -797,6 +797,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(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,6 +532,12 @@
+ #define ADI_GNICEPLUS_PID     0xF001
+ /*
++ * Hornby Elite
++ */
++#define HORNBY_VID            0x04D8
++#define HORNBY_ELITE_PID      0x000A
++
++/*
+  * RATOC REX-USB60F
+  */
+ #define RATOC_VENDOR_ID               0x0584
diff --git a/queue-3.2/usb-ftdi_sio-add-pid-for-ti-xds100v2-beaglebone-a3.patch b/queue-3.2/usb-ftdi_sio-add-pid-for-ti-xds100v2-beaglebone-a3.patch
new file mode 100644 (file)
index 0000000..3e5cc14
--- /dev/null
@@ -0,0 +1,46 @@
+From 55f13aeae0346f0c89bfface91ad9a97653dc433 Mon Sep 17 00:00:00 2001
+From: Peter Korsgaard <jacmet@sunsite.dk>
+Date: Wed, 18 Jan 2012 23:43:45 +0100
+Subject: USB: ftdi_sio: add PID for TI XDS100v2 / BeagleBone A3
+
+From: Peter Korsgaard <jacmet@sunsite.dk>
+
+commit 55f13aeae0346f0c89bfface91ad9a97653dc433 upstream.
+
+Port A for JTAG, port B for serial.
+
+Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/serial/ftdi_sio.c     |    2 ++
+ drivers/usb/serial/ftdi_sio_ids.h |    7 +++++++
+ 2 files changed, 9 insertions(+)
+
+--- a/drivers/usb/serial/ftdi_sio.c
++++ b/drivers/usb/serial/ftdi_sio.c
+@@ -805,6 +805,8 @@ static struct usb_device_id id_table_com
+       { USB_DEVICE(BAYER_VID, BAYER_CONTOUR_CABLE_PID) },
+       { USB_DEVICE(FTDI_VID, MARVELL_OPENRD_PID),
+               .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
++      { USB_DEVICE(FTDI_VID, TI_XDS100V2_PID),
++              .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
+       { USB_DEVICE(FTDI_VID, HAMEG_HO820_PID) },
+       { USB_DEVICE(FTDI_VID, HAMEG_HO720_PID) },
+       { USB_DEVICE(FTDI_VID, HAMEG_HO730_PID) },
+--- a/drivers/usb/serial/ftdi_sio_ids.h
++++ b/drivers/usb/serial/ftdi_sio_ids.h
+@@ -39,6 +39,13 @@
+ /* www.candapter.com Ewert Energy Systems CANdapter device */
+ #define FTDI_CANDAPTER_PID 0x9F80 /* Product Id */
++/*
++ * Texas Instruments XDS100v2 JTAG / BeagleBone A3
++ * http://processors.wiki.ti.com/index.php/XDS100
++ * http://beagleboard.org/bone
++ */
++#define TI_XDS100V2_PID               0xa6d0
++
+ #define FTDI_NXTCAM_PID               0xABB8 /* NXTCam for Mindstorms NXT */
+ /* US Interface Navigator (http://www.usinterface.com/) */
diff --git a/queue-3.2/usb-ftdi_sio-fix-initial-baud-rate.patch b/queue-3.2/usb-ftdi_sio-fix-initial-baud-rate.patch
new file mode 100644 (file)
index 0000000..11e518f
--- /dev/null
@@ -0,0 +1,47 @@
+From 108e02b12921078a59dcacd048079ece48a4a983 Mon Sep 17 00:00:00 2001
+From: Johan Hovold <jhovold@gmail.com>
+Date: Wed, 18 Jan 2012 01:46:00 +0100
+Subject: USB: ftdi_sio: fix initial baud rate
+
+From: Johan Hovold <jhovold@gmail.com>
+
+commit 108e02b12921078a59dcacd048079ece48a4a983 upstream.
+
+Fix regression introduced by commit b1ffb4c851f1 ("USB: Fix Corruption
+issue in USB ftdi driver ftdi_sio.c") which caused the termios settings
+to no longer be initialised at open. Consequently it was no longer
+possible to set the port to the default speed of 9600 baud without first
+changing to another baud rate and back again.
+
+Reported-by: Roland Ramthun <mail@roland-ramthun.de>
+Signed-off-by: Johan Hovold <jhovold@gmail.com>
+Tested-by: Roland Ramthun <mail@roland-ramthun.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/serial/ftdi_sio.c |    7 +++++--
+ 1 file changed, 5 insertions(+), 2 deletions(-)
+
+--- a/drivers/usb/serial/ftdi_sio.c
++++ b/drivers/usb/serial/ftdi_sio.c
+@@ -1823,6 +1823,7 @@ static int ftdi_sio_port_remove(struct u
+ static int ftdi_open(struct tty_struct *tty, struct usb_serial_port *port)
+ {
++      struct ktermios dummy;
+       struct usb_device *dev = port->serial->dev;
+       struct ftdi_private *priv = usb_get_serial_port_data(port);
+       int result;
+@@ -1841,8 +1842,10 @@ static int ftdi_open(struct tty_struct *
+          This is same behaviour as serial.c/rs_open() - Kuba */
+       /* ftdi_set_termios  will send usb control messages */
+-      if (tty)
+-              ftdi_set_termios(tty, port, tty->termios);
++      if (tty) {
++              memset(&dummy, 0, sizeof(dummy));
++              ftdi_set_termios(tty, port, &dummy);
++      }
+       /* Start reading from the device */
+       result = usb_serial_generic_open(tty, port);
diff --git a/queue-3.2/usb-ftdi_sio-fix-tiocsserial-baud_base-handling.patch b/queue-3.2/usb-ftdi_sio-fix-tiocsserial-baud_base-handling.patch
new file mode 100644 (file)
index 0000000..77eb3e2
--- /dev/null
@@ -0,0 +1,39 @@
+From eb833a9e0972f60beb4ab8104ad7ef6bf30f02fc Mon Sep 17 00:00:00 2001
+From: Johan Hovold <jhovold@gmail.com>
+Date: Tue, 10 Jan 2012 23:33:37 +0100
+Subject: USB: ftdi_sio: fix TIOCSSERIAL baud_base handling
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+From: Johan Hovold <jhovold@gmail.com>
+
+commit eb833a9e0972f60beb4ab8104ad7ef6bf30f02fc upstream.
+
+Return EINVAL if new baud_base does not match the current one.
+
+The baud_base is device specific and can not be changed. This restores
+the old (pre-2005) behaviour which was changed due to a
+misunderstanding regarding this fact (see
+https://lkml.org/lkml/2005/1/20/84).
+
+Reported-by: Torbjörn Lofterud <torbjorn@pi.nxs.se>
+Signed-off-by: Johan Hovold <jhovold@gmail.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/serial/ftdi_sio.c |    3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+--- a/drivers/usb/serial/ftdi_sio.c
++++ b/drivers/usb/serial/ftdi_sio.c
+@@ -1333,8 +1333,7 @@ static int set_serial_info(struct tty_st
+               goto check_and_exit;
+       }
+-      if ((new_serial.baud_base != priv->baud_base) &&
+-          (new_serial.baud_base < 9600)) {
++      if (new_serial.baud_base != priv->baud_base) {
+               mutex_unlock(&priv->cfg_lock);
+               return -EINVAL;
+       }
diff --git a/queue-3.2/usb-option-add-lg-docomo-l-02c.patch b/queue-3.2/usb-option-add-lg-docomo-l-02c.patch
new file mode 100644 (file)
index 0000000..5b00892
--- /dev/null
@@ -0,0 +1,39 @@
+From e423d7401fd0717cb56a6cf51dd8341cc3e800d2 Mon Sep 17 00:00:00 2001
+From: Kentaro Matsuyama <kentaro.matsuyama@gmail.com>
+Date: Thu, 12 Jan 2012 23:07:51 +0900
+Subject: USB: option: Add LG docomo L-02C
+
+From: Kentaro Matsuyama <kentaro.matsuyama@gmail.com>
+
+commit e423d7401fd0717cb56a6cf51dd8341cc3e800d2 upstream.
+
+Add vendor and product ID for USB 3G/LTE modem of docomo L-02C
+
+Signed-off-by: Kentaro Matsuyama <kentaro.matsuyama@gmail.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/serial/option.c |    5 +++++
+ 1 file changed, 5 insertions(+)
+
+--- a/drivers/usb/serial/option.c
++++ b/drivers/usb/serial/option.c
+@@ -480,6 +480,10 @@ static void option_instat_callback(struc
+ #define ZD_VENDOR_ID                          0x0685
+ #define ZD_PRODUCT_7000                               0x7000
++/* LG products */
++#define LG_VENDOR_ID                          0x1004
++#define LG_PRODUCT_L02C                               0x618f
++
+ /* some devices interfaces need special handling due to a number of reasons */
+ enum option_blacklist_reason {
+               OPTION_BLACKLIST_NONE = 0,
+@@ -1183,6 +1187,7 @@ static const struct usb_device_id option
+       { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CLU526) },
+       { USB_DEVICE_AND_INTERFACE_INFO(VIETTEL_VENDOR_ID, VIETTEL_PRODUCT_VT1000, 0xff, 0xff, 0xff) },
+       { USB_DEVICE_AND_INTERFACE_INFO(ZD_VENDOR_ID, ZD_PRODUCT_7000, 0xff, 0xff, 0xff) },
++      { USB_DEVICE(LG_VENDOR_ID, LG_PRODUCT_L02C) }, /* docomo L-02C modem */
+       { } /* Terminating entry */
+ };
+ MODULE_DEVICE_TABLE(usb, option_ids);
diff --git a/queue-3.2/usb-serial-ftdi-additional-ids.patch b/queue-3.2/usb-serial-ftdi-additional-ids.patch
new file mode 100644 (file)
index 0000000..9efc770
--- /dev/null
@@ -0,0 +1,45 @@
+From fc216ec363f4d174932df90bbf35c77d0540e561 Mon Sep 17 00:00:00 2001
+From: Peter Naulls <peter@chocky.org>
+Date: Tue, 17 Jan 2012 18:27:09 -0800
+Subject: USB: serial: ftdi additional IDs
+
+From: Peter Naulls <peter@chocky.org>
+
+commit fc216ec363f4d174932df90bbf35c77d0540e561 upstream.
+
+I tested this against 2.6.39 in the Ubuntu kernel, however I see the IDs
+are not in latest 3.2 git.
+
+This adds IDs for the FTDI controller in the Rainforest Automation
+Zigbee dongle.
+
+Signed-off-by: Peter Naulls <peter@chocky.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/serial/ftdi_sio.c     |    1 +
+ drivers/usb/serial/ftdi_sio_ids.h |    6 ++++++
+ 2 files changed, 7 insertions(+)
+
+--- a/drivers/usb/serial/ftdi_sio.c
++++ b/drivers/usb/serial/ftdi_sio.c
+@@ -843,6 +843,7 @@ static struct usb_device_id id_table_com
+               .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
+       { USB_DEVICE(ST_VID, ST_STMCLT1030_PID),
+               .driver_info = (kernel_ulong_t)&ftdi_stmclite_quirk },
++      { USB_DEVICE(FTDI_VID, FTDI_RF_R106) },
+       { },                                    /* Optional parameter entry */
+       { }                                     /* Terminating entry */
+ };
+--- a/drivers/usb/serial/ftdi_sio_ids.h
++++ b/drivers/usb/serial/ftdi_sio_ids.h
+@@ -1175,3 +1175,9 @@
+  */
+ /* TagTracer MIFARE*/
+ #define FTDI_ZEITCONTROL_TAGTRACE_MIFARE_PID  0xF7C0
++
++/*
++ * Rainforest Automation
++ */
++/* ZigBee controller */
++#define FTDI_RF_R106          0x8A28