]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
.35 patches
authorGreg Kroah-Hartman <gregkh@suse.de>
Wed, 15 Sep 2010 19:24:54 +0000 (12:24 -0700)
committerGreg Kroah-Hartman <gregkh@suse.de>
Wed, 15 Sep 2010 19:24:54 +0000 (12:24 -0700)
16 files changed:
queue-2.6.35/ath9k_htc-fix-disconnect-issue-in-ht40-mode.patch [new file with mode: 0644]
queue-2.6.35/ath9k_hw-fix-eeprom-uncompress-block-reading-on-ar9003.patch [new file with mode: 0644]
queue-2.6.35/ath9k_hw-fix-parsing-of-ht40-5-ghz-ctls.patch [new file with mode: 0644]
queue-2.6.35/fuse-flush-background-queue-on-connection-close.patch [new file with mode: 0644]
queue-2.6.35/mac80211-delete-work-timer.patch [new file with mode: 0644]
queue-2.6.35/ocfs2-fix-incorrect-checksum-validation-error.patch [new file with mode: 0644]
queue-2.6.35/serial-bfin_sport_uart-restore-transmit-frame-sync-fix.patch [new file with mode: 0644]
queue-2.6.35/series
queue-2.6.35/usb-allow-drivers-to-use-allocated-bandwidth-until-unbound.patch [new file with mode: 0644]
queue-2.6.35/usb-cp210x-add-b-g-h3000-link-cable-id.patch [new file with mode: 0644]
queue-2.6.35/usb-cp210x-add-new-device-id.patch [new file with mode: 0644]
queue-2.6.35/usb-ehci-ppc-of-problems-in-unwind.patch [new file with mode: 0644]
queue-2.6.35/usb-fix-kernel-oops-with-g_ether-and-windows.patch [new file with mode: 0644]
queue-2.6.35/usb-ftdi_sio-added-custom-pids-for-chamsys-products.patch [new file with mode: 0644]
queue-2.6.35/usb-serial-mos7840-add-usb-id-to-support-the-b-b-electronics-usoptl4-2p.patch [new file with mode: 0644]
queue-2.6.35/usb-serial-mos7840-add-usb-ids-to-support-more-b-b-usb-rs485-converters.patch [new file with mode: 0644]

diff --git a/queue-2.6.35/ath9k_htc-fix-disconnect-issue-in-ht40-mode.patch b/queue-2.6.35/ath9k_htc-fix-disconnect-issue-in-ht40-mode.patch
new file mode 100644 (file)
index 0000000..a897c4b
--- /dev/null
@@ -0,0 +1,37 @@
+From 71ba186c123630ddab17667ec9ecf7e2ef211295 Mon Sep 17 00:00:00 2001
+From: Vivek Natarajan <vnatarajan@atheros.com>
+Date: Thu, 12 Aug 2010 14:23:28 +0530
+Subject: ath9k_htc: Fix disconnect issue in HT40 mode.
+
+From: Vivek Natarajan <vnatarajan@atheros.com>
+
+commit 71ba186c123630ddab17667ec9ecf7e2ef211295 upstream.
+
+Some APs advertise that they may be HT40 capable in the capabilites
+but the current operating channel configuration may be only HT20.
+This causes disconnection as ath9k_htc sets WLAN_RC_40_FLAG despite
+the AP operating in HT20 mode.
+Hence set this flag only if the current channel configuration
+is HT40 enabled.
+
+Signed-off-by: Vivek Natarajan <vnatarajan@atheros.com>
+Signed-off-by: John W. Linville <linville@tuxdriver.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+
+---
+ drivers/net/wireless/ath/ath9k/htc_drv_main.c |    3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/drivers/net/wireless/ath/ath9k/htc_drv_main.c
++++ b/drivers/net/wireless/ath/ath9k/htc_drv_main.c
+@@ -370,7 +370,8 @@ static int ath9k_htc_init_rate(struct at
+               priv->tgt_rate.rates.ht_rates.rs_nrates = j;
+               caps = WLAN_RC_HT_FLAG;
+-              if (sta->ht_cap.cap & IEEE80211_HT_CAP_SUP_WIDTH_20_40)
++              if ((sta->ht_cap.cap & IEEE80211_HT_CAP_SUP_WIDTH_20_40) &&
++                  (conf_is_ht40(&priv->hw->conf)))
+                       caps |= WLAN_RC_40_FLAG;
+               if (sta->ht_cap.cap & IEEE80211_HT_CAP_SGI_40)
+                       caps |= WLAN_RC_SGI_FLAG;
diff --git a/queue-2.6.35/ath9k_hw-fix-eeprom-uncompress-block-reading-on-ar9003.patch b/queue-2.6.35/ath9k_hw-fix-eeprom-uncompress-block-reading-on-ar9003.patch
new file mode 100644 (file)
index 0000000..d870946
--- /dev/null
@@ -0,0 +1,35 @@
+From 803288e61e346ba367373bc7d5eeb6e11c81a33c Mon Sep 17 00:00:00 2001
+From: Luis R. Rodriguez <lrodriguez@atheros.com>
+Date: Mon, 30 Aug 2010 19:26:32 -0400
+Subject: ath9k_hw: Fix EEPROM uncompress block reading on AR9003
+
+From: Luis R. Rodriguez <lrodriguez@atheros.com>
+
+commit 803288e61e346ba367373bc7d5eeb6e11c81a33c upstream.
+
+The EEPROM is compressed on AR9003, upon decompression
+the wrong upper limit was being used for the block which
+prevented the 5 GHz CTL indexes from being used, which are
+stored towards the end of the EEPROM block. This fix allows
+the actual intended regulatory limits to be used on AR9003
+hardware.
+
+Signed-off-by: Luis R. Rodriguez <lrodriguez@atheros.com>
+Signed-off-by: John W. Linville <linville@tuxdriver.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/net/wireless/ath/ath9k/ar9003_eeprom.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
++++ b/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
+@@ -768,7 +768,7 @@ static bool ar9300_uncompress_block(stru
+               length = block[it+1];
+               length &= 0xff;
+-              if (length > 0 && spot >= 0 && spot+length < mdataSize) {
++              if (length > 0 && spot >= 0 && spot+length <= mdataSize) {
+                       ath_print(common, ATH_DBG_EEPROM,
+                                 "Restore at %d: spot=%d "
+                                 "offset=%d length=%d\n",
diff --git a/queue-2.6.35/ath9k_hw-fix-parsing-of-ht40-5-ghz-ctls.patch b/queue-2.6.35/ath9k_hw-fix-parsing-of-ht40-5-ghz-ctls.patch
new file mode 100644 (file)
index 0000000..e440cad
--- /dev/null
@@ -0,0 +1,47 @@
+From 904879748d7439a6dabdc6be9aad983e216b027d Mon Sep 17 00:00:00 2001
+From: Luis R. Rodriguez <lrodriguez@atheros.com>
+Date: Mon, 30 Aug 2010 19:26:33 -0400
+Subject: ath9k_hw: fix parsing of HT40 5 GHz CTLs
+
+From: Luis R. Rodriguez <lrodriguez@atheros.com>
+
+commit 904879748d7439a6dabdc6be9aad983e216b027d upstream.
+
+The 5 GHz CTL indexes were not being read for all hardware
+devices due to the masking out through the CTL_MODE_M mask
+being one bit too short. Without this the calibrated regulatory
+maximum values were not being picked up when devices operate
+on 5 GHz in HT40 mode. The final output power used for Atheros
+devices is the minimum between the calibrated CTL values and
+what CRDA provides.
+
+Signed-off-by: Luis R. Rodriguez <lrodriguez@atheros.com>
+Signed-off-by: John W. Linville <linville@tuxdriver.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/net/wireless/ath/ath9k/eeprom.h |    2 +-
+ drivers/net/wireless/ath/regd.h         |    1 -
+ 2 files changed, 1 insertion(+), 2 deletions(-)
+
+--- a/drivers/net/wireless/ath/ath9k/eeprom.h
++++ b/drivers/net/wireless/ath/ath9k/eeprom.h
+@@ -62,7 +62,7 @@
+ #define SD_NO_CTL               0xE0
+ #define NO_CTL                  0xff
+-#define CTL_MODE_M              7
++#define CTL_MODE_M              0xf
+ #define CTL_11A                 0
+ #define CTL_11B                 1
+ #define CTL_11G                 2
+--- a/drivers/net/wireless/ath/regd.h
++++ b/drivers/net/wireless/ath/regd.h
+@@ -31,7 +31,6 @@ enum ctl_group {
+ #define NO_CTL 0xff
+ #define SD_NO_CTL               0xE0
+ #define NO_CTL                  0xff
+-#define CTL_MODE_M              7
+ #define CTL_11A                 0
+ #define CTL_11B                 1
+ #define CTL_11G                 2
diff --git a/queue-2.6.35/fuse-flush-background-queue-on-connection-close.patch b/queue-2.6.35/fuse-flush-background-queue-on-connection-close.patch
new file mode 100644 (file)
index 0000000..3234cce
--- /dev/null
@@ -0,0 +1,78 @@
+From 595afaf9e6ee1b48e13ec4b8bcc8c7dee888161a Mon Sep 17 00:00:00 2001
+From: Miklos Szeredi <mszeredi@suse.cz>
+Date: Tue, 7 Sep 2010 13:42:41 +0200
+Subject: fuse: flush background queue on connection close
+
+From: Miklos Szeredi <mszeredi@suse.cz>
+
+commit 595afaf9e6ee1b48e13ec4b8bcc8c7dee888161a upstream.
+
+David Bartly reported that fuse can hang in fuse_get_req_nofail() when
+the connection to the filesystem server is no longer active.
+
+If bg_queue is not empty then flush_bg_queue() called from
+request_end() can put more requests on to the pending queue.  If this
+happens while ending requests on the processing queue then those
+background requests will be queued to the pending list and never
+ended.
+
+Another problem is that fuse_dev_release() didn't wake up processes
+sleeping on blocked_waitq.
+
+Solve this by:
+
+ a) flushing the background queue before calling end_requests() on the
+    pending and processing queues
+
+ b) setting blocked = 0 and waking up processes waiting on
+    blocked_waitq()
+
+Thanks to David for an excellent bug report.
+
+Reported-by: David Bartley <andareed@gmail.com>
+Signed-off-by: Miklos Szeredi <mszeredi@suse.cz>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ fs/fuse/dev.c |   16 ++++++++++++----
+ 1 file changed, 12 insertions(+), 4 deletions(-)
+
+--- a/fs/fuse/dev.c
++++ b/fs/fuse/dev.c
+@@ -1552,6 +1552,14 @@ __acquires(&fc->lock)
+       }
+ }
++static void end_queued_requests(struct fuse_conn *fc)
++{
++      fc->max_background = UINT_MAX;
++      flush_bg_queue(fc);
++      end_requests(fc, &fc->pending);
++      end_requests(fc, &fc->processing);
++}
++
+ /*
+  * Abort all requests.
+  *
+@@ -1578,8 +1586,7 @@ void fuse_abort_conn(struct fuse_conn *f
+               fc->connected = 0;
+               fc->blocked = 0;
+               end_io_requests(fc);
+-              end_requests(fc, &fc->pending);
+-              end_requests(fc, &fc->processing);
++              end_queued_requests(fc);
+               wake_up_all(&fc->waitq);
+               wake_up_all(&fc->blocked_waitq);
+               kill_fasync(&fc->fasync, SIGIO, POLL_IN);
+@@ -1594,8 +1601,9 @@ int fuse_dev_release(struct inode *inode
+       if (fc) {
+               spin_lock(&fc->lock);
+               fc->connected = 0;
+-              end_requests(fc, &fc->pending);
+-              end_requests(fc, &fc->processing);
++              fc->blocked = 0;
++              end_queued_requests(fc);
++              wake_up_all(&fc->blocked_waitq);
+               spin_unlock(&fc->lock);
+               fuse_conn_put(fc);
+       }
diff --git a/queue-2.6.35/mac80211-delete-work-timer.patch b/queue-2.6.35/mac80211-delete-work-timer.patch
new file mode 100644 (file)
index 0000000..da57ab0
--- /dev/null
@@ -0,0 +1,42 @@
+From 071249b1d501b1f31a6b1af3fbcbe03158a84e5c Mon Sep 17 00:00:00 2001
+From: Johannes Berg <johannes.berg@intel.com>
+Date: Wed, 25 Aug 2010 14:47:38 +0200
+Subject: mac80211: delete work timer
+
+From: Johannes Berg <johannes.berg@intel.com>
+
+commit 071249b1d501b1f31a6b1af3fbcbe03158a84e5c upstream.
+
+The new workqueue changes helped me find this bug
+that's been lingering since the changes to the work
+processing in mac80211 -- the work timer is never
+deleted properly. Do that to avoid having it fire
+after all data structures have been freed. It can't
+be re-armed because all it will do, if running, is
+schedule the work, but that gets flushed later and
+won't have anything to do since all work items are
+gone by now (by way of interface removal).
+
+Signed-off-by: Johannes Berg <johannes.berg@intel.com>
+Signed-off-by: John W. Linville <linville@tuxdriver.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ net/mac80211/main.c |    6 ++++++
+ 1 file changed, 6 insertions(+)
+
+--- a/net/mac80211/main.c
++++ b/net/mac80211/main.c
+@@ -659,6 +659,12 @@ void ieee80211_unregister_hw(struct ieee
+       rtnl_unlock();
++      /*
++       * Now all work items will be gone, but the
++       * timer might still be armed, so delete it
++       */
++      del_timer_sync(&local->work_timer);
++
+       cancel_work_sync(&local->reconfig_filter);
+       ieee80211_clear_tx_pending(local);
diff --git a/queue-2.6.35/ocfs2-fix-incorrect-checksum-validation-error.patch b/queue-2.6.35/ocfs2-fix-incorrect-checksum-validation-error.patch
new file mode 100644 (file)
index 0000000..231aaef
--- /dev/null
@@ -0,0 +1,43 @@
+From f5ce5a08a40f2086435858ddc80cb40394b082eb Mon Sep 17 00:00:00 2001
+From: Sunil Mushran <sunil.mushran@oracle.com>
+Date: Thu, 12 Aug 2010 16:24:26 -0700
+Subject: ocfs2: Fix incorrect checksum validation error
+
+From: Sunil Mushran <sunil.mushran@oracle.com>
+
+commit f5ce5a08a40f2086435858ddc80cb40394b082eb upstream.
+
+For local mounts, ocfs2_read_locked_inode() calls ocfs2_read_blocks_sync() to
+read the inode off the disk. The latter first checks to see if that block is
+cached in the journal, and, if so, returns that block. That is ok.
+
+But ocfs2_read_locked_inode() goes wrong when it tries to validate the checksum
+of such blocks. Blocks that are cached in the journal may not have had their
+checksum computed as yet. We should not validate the checksums of such blocks.
+
+Fixes ossbz#1282
+http://oss.oracle.com/bugzilla/show_bug.cgi?id=1282
+
+Signed-off-by: Sunil Mushran <sunil.mushran@oracle.com>
+Singed-off-by: Tao Ma <tao.ma@oracle.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ fs/ocfs2/inode.c |    6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+--- a/fs/ocfs2/inode.c
++++ b/fs/ocfs2/inode.c
+@@ -488,7 +488,11 @@ static int ocfs2_read_locked_inode(struc
+                                                    OCFS2_BH_IGNORE_CACHE);
+       } else {
+               status = ocfs2_read_blocks_sync(osb, args->fi_blkno, 1, &bh);
+-              if (!status)
++              /*
++               * If buffer is in jbd, then its checksum may not have been
++               * computed as yet.
++               */
++              if (!status && !buffer_jbd(bh))
+                       status = ocfs2_validate_inode_block(osb->sb, bh);
+       }
+       if (status < 0) {
diff --git a/queue-2.6.35/serial-bfin_sport_uart-restore-transmit-frame-sync-fix.patch b/queue-2.6.35/serial-bfin_sport_uart-restore-transmit-frame-sync-fix.patch
new file mode 100644 (file)
index 0000000..d32a2d7
--- /dev/null
@@ -0,0 +1,32 @@
+From 336746918299f2ca16b31490655b4ff7c8824c87 Mon Sep 17 00:00:00 2001
+From: Sonic Zhang <sonic.zhang@analog.com>
+Date: Sat, 28 Aug 2010 16:32:55 -0400
+Subject: serial: bfin_sport_uart: restore transmit frame sync fix
+
+From: Sonic Zhang <sonic.zhang@analog.com>
+
+commit 336746918299f2ca16b31490655b4ff7c8824c87 upstream.
+
+The large cleanup/rewrite of resources in commit ccf68e59e93181df9353c0cc
+accidentally reverted an earlier fix in commit a19e8b205915b2925aca75b.
+So restore it here.
+
+Signed-off-by: Sonic Zhang <sonic.zhang@analog.com>
+Signed-off-by: Mike Frysinger <vapier@gentoo.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/serial/bfin_sport_uart.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/serial/bfin_sport_uart.c
++++ b/drivers/serial/bfin_sport_uart.c
+@@ -121,7 +121,7 @@ static int sport_uart_setup(struct sport
+       unsigned int sclk = get_sclk();
+       /* Set TCR1 and TCR2, TFSR is not enabled for uart */
+-      SPORT_PUT_TCR1(up, (ITFS | TLSBIT | ITCLK));
++      SPORT_PUT_TCR1(up, (LATFS | ITFS | TFSR | TLSBIT | ITCLK));
+       SPORT_PUT_TCR2(up, size + 1);
+       pr_debug("%s TCR1:%x, TCR2:%x\n", __func__, SPORT_GET_TCR1(up), SPORT_GET_TCR2(up));
index e72e52c76bcca03782c6cf3d0a42ae4473adb4ad..a6fe4c55d1f15f73571a04e6474c1abc1bd653d1 100644 (file)
@@ -25,3 +25,18 @@ staging-hv-fixed-bounce-kmap-problem-by-using-correct-index.patch
 staging-hv-fixed-the-value-of-the-64bit-hole-inside-ring-buffer.patch
 staging-hv-increased-storvsc-ringbuffer-and-max_io_requests.patch
 staging-hv-fixed-lockup-problem-with-bounce_buffer-scatter-list.patch
+fuse-flush-background-queue-on-connection-close.patch
+mac80211-delete-work-timer.patch
+ath9k_htc-fix-disconnect-issue-in-ht40-mode.patch
+ath9k_hw-fix-eeprom-uncompress-block-reading-on-ar9003.patch
+ath9k_hw-fix-parsing-of-ht40-5-ghz-ctls.patch
+ocfs2-fix-incorrect-checksum-validation-error.patch
+serial-bfin_sport_uart-restore-transmit-frame-sync-fix.patch
+usb-ehci-ppc-of-problems-in-unwind.patch
+usb-fix-kernel-oops-with-g_ether-and-windows.patch
+usb-cp210x-add-new-device-id.patch
+usb-cp210x-add-b-g-h3000-link-cable-id.patch
+usb-allow-drivers-to-use-allocated-bandwidth-until-unbound.patch
+usb-ftdi_sio-added-custom-pids-for-chamsys-products.patch
+usb-serial-mos7840-add-usb-id-to-support-the-b-b-electronics-usoptl4-2p.patch
+usb-serial-mos7840-add-usb-ids-to-support-more-b-b-usb-rs485-converters.patch
diff --git a/queue-2.6.35/usb-allow-drivers-to-use-allocated-bandwidth-until-unbound.patch b/queue-2.6.35/usb-allow-drivers-to-use-allocated-bandwidth-until-unbound.patch
new file mode 100644 (file)
index 0000000..3886c39
--- /dev/null
@@ -0,0 +1,87 @@
+From 0791971ba8fbc44e4f476079f856335ed45e6324 Mon Sep 17 00:00:00 2001
+From: Thadeu Lima de Souza Cascardo <cascardo@holoscopio.com>
+Date: Sat, 28 Aug 2010 03:06:29 -0300
+Subject: usb: allow drivers to use allocated bandwidth until unbound
+
+From: Thadeu Lima de Souza Cascardo <cascardo@holoscopio.com>
+
+commit 0791971ba8fbc44e4f476079f856335ed45e6324 upstream.
+
+When using the remove sysfs file, the device configuration is set to -1
+(unconfigured). This eventually unbind drivers with the bandwidth_mutex
+held. Some drivers may call functions that hold said mutex, like
+usb_reset_device. This is the case for rtl8187, for example. This will
+lead to the same process holding the mutex twice, which deadlocks.
+
+Besides, according to Alan Stern:
+"The deadlock problem probably could be handled somehow, but there's a
+separate issue: Until the usb_disable_device call finishes unbinding
+the drivers, the drivers are free to continue using their allocated
+bandwidth.  We musn't change the bandwidth allocations until after the
+unbinding is done.  So this patch is indeed necessary."
+
+Unbinding the driver before holding the bandwidth_mutex solves the
+problem. If any operation after that fails, drivers are not bound again.
+But that would be a problem anyway that the user may solve resetting the
+device configuration to one that works, just like he would need to do in
+most other failure cases.
+
+Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@holoscopio.com>
+Cc: Alan Stern <stern@rowland.harvard.edu>
+Cc: Sarah Sharp <sarah.a.sharp@linux.intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/core/message.c |   22 +++++++++++-----------
+ 1 file changed, 11 insertions(+), 11 deletions(-)
+
+--- a/drivers/usb/core/message.c
++++ b/drivers/usb/core/message.c
+@@ -1724,6 +1724,15 @@ free_interfaces:
+       if (ret)
+               goto free_interfaces;
++      /* if it's already configured, clear out old state first.
++       * getting rid of old interfaces means unbinding their drivers.
++       */
++      if (dev->state != USB_STATE_ADDRESS)
++              usb_disable_device(dev, 1);     /* Skip ep0 */
++
++      /* Get rid of pending async Set-Config requests for this device */
++      cancel_async_set_config(dev);
++
+       /* Make sure we have bandwidth (and available HCD resources) for this
+        * configuration.  Remove endpoints from the schedule if we're dropping
+        * this configuration to set configuration 0.  After this point, the
+@@ -1733,20 +1742,11 @@ free_interfaces:
+       mutex_lock(&hcd->bandwidth_mutex);
+       ret = usb_hcd_alloc_bandwidth(dev, cp, NULL, NULL);
+       if (ret < 0) {
+-              usb_autosuspend_device(dev);
+               mutex_unlock(&hcd->bandwidth_mutex);
++              usb_autosuspend_device(dev);
+               goto free_interfaces;
+       }
+-      /* if it's already configured, clear out old state first.
+-       * getting rid of old interfaces means unbinding their drivers.
+-       */
+-      if (dev->state != USB_STATE_ADDRESS)
+-              usb_disable_device(dev, 1);     /* Skip ep0 */
+-
+-      /* Get rid of pending async Set-Config requests for this device */
+-      cancel_async_set_config(dev);
+-
+       ret = usb_control_msg(dev, usb_sndctrlpipe(dev, 0),
+                             USB_REQ_SET_CONFIGURATION, 0, configuration, 0,
+                             NULL, 0, USB_CTRL_SET_TIMEOUT);
+@@ -1761,8 +1761,8 @@ free_interfaces:
+       if (!cp) {
+               usb_set_device_state(dev, USB_STATE_ADDRESS);
+               usb_hcd_alloc_bandwidth(dev, NULL, NULL, NULL);
+-              usb_autosuspend_device(dev);
+               mutex_unlock(&hcd->bandwidth_mutex);
++              usb_autosuspend_device(dev);
+               goto free_interfaces;
+       }
+       mutex_unlock(&hcd->bandwidth_mutex);
diff --git a/queue-2.6.35/usb-cp210x-add-b-g-h3000-link-cable-id.patch b/queue-2.6.35/usb-cp210x-add-b-g-h3000-link-cable-id.patch
new file mode 100644 (file)
index 0000000..58d01f6
--- /dev/null
@@ -0,0 +1,29 @@
+From 0bf7a81c5d447c21db434be35363c44c0a30f598 Mon Sep 17 00:00:00 2001
+From: Jason Detring <jason.detring@navico.com>
+Date: Thu, 26 Aug 2010 15:08:54 -0500
+Subject: USB: cp210x: Add B&G H3000 link cable ID
+
+From: Jason Detring <jason.detring@navico.com>
+
+commit 0bf7a81c5d447c21db434be35363c44c0a30f598 upstream.
+
+This is the cable between an H3000 navigation unit and a multi-function display.
+http://www.bandg.com/en/Products/H3000/Spares-and-Accessories/Cables/H3000-CPU-USB-Cable-Pack/
+
+Signed-off-by: Jason Detring <jason.detring@navico.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/serial/cp210x.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/drivers/usb/serial/cp210x.c
++++ b/drivers/usb/serial/cp210x.c
+@@ -88,6 +88,7 @@ static const struct usb_device_id id_tab
+       { USB_DEVICE(0x10C4, 0x8149) }, /* West Mountain Radio Computerized Battery Analyzer */
+       { USB_DEVICE(0x10C4, 0x814A) }, /* West Mountain Radio RIGblaster P&P */
+       { USB_DEVICE(0x10C4, 0x814B) }, /* West Mountain Radio RIGtalk */
++      { USB_DEVICE(0x10C4, 0x8156) }, /* B&G H3000 link cable */
+       { USB_DEVICE(0x10C4, 0x815E) }, /* Helicomm IP-Link 1220-DVM */
+       { USB_DEVICE(0x10C4, 0x818B) }, /* AVIT Research USB to TTL */
+       { USB_DEVICE(0x10C4, 0x819F) }, /* MJS USB Toslink Switcher */
diff --git a/queue-2.6.35/usb-cp210x-add-new-device-id.patch b/queue-2.6.35/usb-cp210x-add-new-device-id.patch
new file mode 100644 (file)
index 0000000..918def0
--- /dev/null
@@ -0,0 +1,47 @@
+From 541e05ec3add5ab5bcf238d60161b53480280b20 Mon Sep 17 00:00:00 2001
+From: Craig Shelley <craig@microtron.org.uk>
+Date: Mon, 23 Aug 2010 20:50:57 +0100
+Subject: USB: CP210x Add new device ID
+
+From: Craig Shelley <craig@microtron.org.uk>
+
+commit 541e05ec3add5ab5bcf238d60161b53480280b20 upstream.
+
+New device ID added for Balluff RFID reader.
+
+Signed-off-by: Craig Shelley <craig@microtron.org.uk>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/serial/cp210x.c |    9 +++++----
+ 1 file changed, 5 insertions(+), 4 deletions(-)
+
+--- a/drivers/usb/serial/cp210x.c
++++ b/drivers/usb/serial/cp210x.c
+@@ -109,6 +109,7 @@ static const struct usb_device_id id_tab
+       { USB_DEVICE(0x10C4, 0x83A8) }, /* Amber Wireless AMB2560 */
+       { USB_DEVICE(0x10C4, 0x8411) }, /* Kyocera GPS Module */
+       { USB_DEVICE(0x10C4, 0x846E) }, /* BEI USB Sensor Interface (VCP) */
++      { USB_DEVICE(0x10C4, 0x8477) }, /* Balluff RFID */
+       { USB_DEVICE(0x10C4, 0xEA60) }, /* Silicon Labs factory default */
+       { USB_DEVICE(0x10C4, 0xEA61) }, /* Silicon Labs factory default */
+       { USB_DEVICE(0x10C4, 0xEA71) }, /* Infinity GPS-MIC-1 Radio Monophone */
+@@ -122,14 +123,14 @@ static const struct usb_device_id id_tab
+       { USB_DEVICE(0x1555, 0x0004) }, /* Owen AC4 USB-RS485 Converter */
+       { USB_DEVICE(0x166A, 0x0303) }, /* Clipsal 5500PCU C-Bus USB interface */
+       { USB_DEVICE(0x16D6, 0x0001) }, /* Jablotron serial interface */
+-      { 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(0x413C, 0x9500) }, /* DW700 GPS USB interface */
+       { USB_DEVICE(0x16DC, 0x0010) }, /* W-IE-NE-R Plein & Baus GmbH PL512 Power Supply */
+       { USB_DEVICE(0x16DC, 0x0011) }, /* W-IE-NE-R Plein & Baus GmbH RCM Remote Control for MARATON Power Supply */
+       { USB_DEVICE(0x16DC, 0x0012) }, /* W-IE-NE-R Plein & Baus GmbH MPOD Multi Channel Power Supply */
+       { USB_DEVICE(0x16DC, 0x0015) }, /* W-IE-NE-R Plein & Baus GmbH CML Control, Monitoring and Data Logger */
++      { 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(0x413C, 0x9500) }, /* DW700 GPS USB interface */
+       { } /* Terminating Entry */
+ };
diff --git a/queue-2.6.35/usb-ehci-ppc-of-problems-in-unwind.patch b/queue-2.6.35/usb-ehci-ppc-of-problems-in-unwind.patch
new file mode 100644 (file)
index 0000000..62c5f61
--- /dev/null
@@ -0,0 +1,53 @@
+From 08a3b3b1c2e622e378d9086aee9e2e42ce37591d Mon Sep 17 00:00:00 2001
+From: Dan Carpenter <error27@gmail.com>
+Date: Sat, 14 Aug 2010 11:06:19 +0200
+Subject: USB: ehci-ppc-of: problems in unwind
+
+From: Dan Carpenter <error27@gmail.com>
+
+commit 08a3b3b1c2e622e378d9086aee9e2e42ce37591d upstream.
+
+The iounmap(ehci->ohci_hcctrl_reg); should be the first thing we do
+because the ioremap() was the last thing we did.  Also if we hit any of
+the goto statements in the original code then it would have led to a
+NULL dereference of "ehci".  This bug was introduced in: 796bcae7361c
+"USB: powerpc: Workaround for the PPC440EPX USBH_23 errata [take 3]"
+
+I modified the few lines in front a little so that my code didn't
+obscure the return success code path.
+
+Signed-off-by: Dan Carpenter <error27@gmail.com>
+Reviewed-by: Grant Likely <grant.likely@secretlab.ca>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/host/ehci-ppc-of.c |   12 +++++++-----
+ 1 file changed, 7 insertions(+), 5 deletions(-)
+
+--- a/drivers/usb/host/ehci-ppc-of.c
++++ b/drivers/usb/host/ehci-ppc-of.c
+@@ -192,17 +192,19 @@ ehci_hcd_ppc_of_probe(struct of_device *
+       }
+       rv = usb_add_hcd(hcd, irq, 0);
+-      if (rv == 0)
+-              return 0;
++      if (rv)
++              goto err_ehci;
++      return 0;
++
++err_ehci:
++      if (ehci->has_amcc_usb23)
++              iounmap(ehci->ohci_hcctrl_reg);
+       iounmap(hcd->regs);
+ err_ioremap:
+       irq_dispose_mapping(irq);
+ err_irq:
+       release_mem_region(hcd->rsrc_start, hcd->rsrc_len);
+-
+-      if (ehci->has_amcc_usb23)
+-              iounmap(ehci->ohci_hcctrl_reg);
+ err_rmr:
+       usb_put_hcd(hcd);
diff --git a/queue-2.6.35/usb-fix-kernel-oops-with-g_ether-and-windows.patch b/queue-2.6.35/usb-fix-kernel-oops-with-g_ether-and-windows.patch
new file mode 100644 (file)
index 0000000..ddb5f3c
--- /dev/null
@@ -0,0 +1,39 @@
+From 037d3656adbd7e8cb848f01cf5dec423ed76bbe7 Mon Sep 17 00:00:00 2001
+From: Maxim Osipov <maxim.osipov@gmail.com>
+Date: Sat, 21 Aug 2010 14:54:06 +0400
+Subject: USB: Fix kernel oops with g_ether and Windows
+
+From: Maxim Osipov <maxim.osipov@gmail.com>
+
+commit 037d3656adbd7e8cb848f01cf5dec423ed76bbe7 upstream.
+
+Please find attached patch for
+https://bugzilla.kernel.org/show_bug.cgi?id=16023 problem.
+
+
+Signed-off-by: Maxim Osipov <maxim.osipov@gmail.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/gadget/rndis.c |   10 +++++++---
+ 1 file changed, 7 insertions(+), 3 deletions(-)
+
+--- a/drivers/usb/gadget/rndis.c
++++ b/drivers/usb/gadget/rndis.c
+@@ -292,9 +292,13 @@ gen_ndis_query_resp (int configNr, u32 O
+       /* mandatory */
+       case OID_GEN_VENDOR_DESCRIPTION:
+               pr_debug("%s: OID_GEN_VENDOR_DESCRIPTION\n", __func__);
+-              length = strlen (rndis_per_dev_params [configNr].vendorDescr);
+-              memcpy (outbuf,
+-                      rndis_per_dev_params [configNr].vendorDescr, length);
++              if ( rndis_per_dev_params [configNr].vendorDescr ) {
++                      length = strlen (rndis_per_dev_params [configNr].vendorDescr);
++                      memcpy (outbuf,
++                              rndis_per_dev_params [configNr].vendorDescr, length);
++              } else {
++                      outbuf[0] = 0;
++              }
+               retval = 0;
+               break;
diff --git a/queue-2.6.35/usb-ftdi_sio-added-custom-pids-for-chamsys-products.patch b/queue-2.6.35/usb-ftdi_sio-added-custom-pids-for-chamsys-products.patch
new file mode 100644 (file)
index 0000000..32ff57e
--- /dev/null
@@ -0,0 +1,57 @@
+From 657373883417b2618023fd4135d251ba06a2c30a Mon Sep 17 00:00:00 2001
+From: Luke Lowrey <luke@chamsys.co.uk>
+Date: Thu, 2 Sep 2010 11:39:49 +0100
+Subject: USB: ftdi_sio: Added custom PIDs for ChamSys products
+
+From: Luke Lowrey <luke@chamsys.co.uk>
+
+commit 657373883417b2618023fd4135d251ba06a2c30a upstream.
+
+Added the 0xDAF8 to 0xDAFF PID range for ChamSys limited USB interface/wing products
+
+Signed-off-by: Luke Lowrey <luke@chamsys.co.uk>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/serial/ftdi_sio.c     |    8 ++++++++
+ drivers/usb/serial/ftdi_sio_ids.h |   12 ++++++++++++
+ 2 files changed, 20 insertions(+)
+
+--- a/drivers/usb/serial/ftdi_sio.c
++++ b/drivers/usb/serial/ftdi_sio.c
+@@ -753,6 +753,14 @@ static struct usb_device_id id_table_com
+       { USB_DEVICE(FTDI_VID, SEGWAY_RMP200_PID) },
+       { USB_DEVICE(IONICS_VID, IONICS_PLUGCOMPUTER_PID),
+               .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
++      { USB_DEVICE(FTDI_VID, FTDI_CHAMSYS_24_MASTER_WING_PID) },
++      { USB_DEVICE(FTDI_VID, FTDI_CHAMSYS_PC_WING_PID) },
++      { USB_DEVICE(FTDI_VID, FTDI_CHAMSYS_USB_DMX_PID) },
++      { USB_DEVICE(FTDI_VID, FTDI_CHAMSYS_MIDI_TIMECODE_PID) },
++      { USB_DEVICE(FTDI_VID, FTDI_CHAMSYS_MINI_WING_PID) },
++      { USB_DEVICE(FTDI_VID, FTDI_CHAMSYS_MAXI_WING_PID) },
++      { USB_DEVICE(FTDI_VID, FTDI_CHAMSYS_MEDIA_WING_PID) },
++      { USB_DEVICE(FTDI_VID, FTDI_CHAMSYS_WING_PID) },
+       { },                                    /* Optional parameter entry */
+       { }                                     /* Terminating entry */
+ };
+--- a/drivers/usb/serial/ftdi_sio_ids.h
++++ b/drivers/usb/serial/ftdi_sio_ids.h
+@@ -135,6 +135,18 @@
+ #define FTDI_NDI_AURORA_SCU_PID               0xDA74  /* NDI Aurora SCU */
+ /*
++ * ChamSys Limited (www.chamsys.co.uk) USB wing/interface product IDs
++ */
++#define FTDI_CHAMSYS_24_MASTER_WING_PID        0xDAF8
++#define FTDI_CHAMSYS_PC_WING_PID       0xDAF9
++#define FTDI_CHAMSYS_USB_DMX_PID       0xDAFA
++#define FTDI_CHAMSYS_MIDI_TIMECODE_PID 0xDAFB
++#define FTDI_CHAMSYS_MINI_WING_PID     0xDAFC
++#define FTDI_CHAMSYS_MAXI_WING_PID     0xDAFD
++#define FTDI_CHAMSYS_MEDIA_WING_PID    0xDAFE
++#define FTDI_CHAMSYS_WING_PID  0xDAFF
++
++/*
+  * Westrex International devices submitted by Cory Lee
+  */
+ #define FTDI_WESTREX_MODEL_777_PID    0xDC00  /* Model 777 */
diff --git a/queue-2.6.35/usb-serial-mos7840-add-usb-id-to-support-the-b-b-electronics-usoptl4-2p.patch b/queue-2.6.35/usb-serial-mos7840-add-usb-id-to-support-the-b-b-electronics-usoptl4-2p.patch
new file mode 100644 (file)
index 0000000..b462d7d
--- /dev/null
@@ -0,0 +1,45 @@
+From caf3a636a9f809fdca5fa746e6687096457accb1 Mon Sep 17 00:00:00 2001
+From: Dave Ludlow <dave.ludlow@bay.ws>
+Date: Tue, 31 Aug 2010 14:26:17 -0400
+Subject: usb: serial: mos7840: Add USB ID to support the B&B Electronics USOPTL4-2P.
+
+From: Dave Ludlow <dave.ludlow@bay.ws>
+
+commit caf3a636a9f809fdca5fa746e6687096457accb1 upstream.
+
+Add the USB ID needed to support B&B Electronic's 2-port, optically-isolated,
+powered, USB to RS485 converter.
+
+Signed-off-by: Dave Ludlow <dave.ludlow@bay.ws>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/serial/mos7840.c |    3 +++
+ 1 file changed, 3 insertions(+)
+
+--- a/drivers/usb/serial/mos7840.c
++++ b/drivers/usb/serial/mos7840.c
+@@ -129,6 +129,7 @@
+ #define BANDB_DEVICE_ID_USOPTL4_2     0xAC42
+ #define BANDB_DEVICE_ID_USOPTL4_4     0xAC44
+ #define BANDB_DEVICE_ID_USOPTL2_4     0xAC24
++#define BANDB_DEVICE_ID_USOPTL4_2P      0xBC02
+ /* This driver also supports
+  * ATEN UC2324 device using Moschip MCS7840
+@@ -192,6 +193,7 @@ static const struct usb_device_id moschi
+       {USB_DEVICE(USB_VENDOR_ID_BANDB, BANDB_DEVICE_ID_USOPTL4_2)},
+       {USB_DEVICE(USB_VENDOR_ID_BANDB, BANDB_DEVICE_ID_USOPTL4_4)},
+       {USB_DEVICE(USB_VENDOR_ID_BANDB, BANDB_DEVICE_ID_USOPTL2_4)},
++      {USB_DEVICE(USB_VENDOR_ID_BANDB, BANDB_DEVICE_ID_USOPTL2_4P)},
+       {USB_DEVICE(USB_VENDOR_ID_ATENINTL, ATENINTL_DEVICE_ID_UC2324)},
+       {USB_DEVICE(USB_VENDOR_ID_ATENINTL, ATENINTL_DEVICE_ID_UC2322)},
+       {}                      /* terminating entry */
+@@ -209,6 +211,7 @@ static const struct usb_device_id moschi
+       {USB_DEVICE(USB_VENDOR_ID_BANDB, BANDB_DEVICE_ID_USOPTL4_2)},
+       {USB_DEVICE(USB_VENDOR_ID_BANDB, BANDB_DEVICE_ID_USOPTL4_4)},
+       {USB_DEVICE(USB_VENDOR_ID_BANDB, BANDB_DEVICE_ID_USOPTL2_4)},
++      {USB_DEVICE(USB_VENDOR_ID_BANDB, BANDB_DEVICE_ID_USOPTL2_4P)},
+       {USB_DEVICE(USB_VENDOR_ID_ATENINTL, ATENINTL_DEVICE_ID_UC2324)},
+       {USB_DEVICE(USB_VENDOR_ID_ATENINTL, ATENINTL_DEVICE_ID_UC2322)},
+       {}                      /* terminating entry */
diff --git a/queue-2.6.35/usb-serial-mos7840-add-usb-ids-to-support-more-b-b-usb-rs485-converters.patch b/queue-2.6.35/usb-serial-mos7840-add-usb-ids-to-support-more-b-b-usb-rs485-converters.patch
new file mode 100644 (file)
index 0000000..e4890cb
--- /dev/null
@@ -0,0 +1,94 @@
+From 870408c8291015872a7a0b583673a9e56b3e73f4 Mon Sep 17 00:00:00 2001
+From: Dave Ludlow <dave.ludlow@bay.ws>
+Date: Wed, 1 Sep 2010 12:33:30 -0400
+Subject: usb: serial: mos7840: Add USB IDs to support more B&B USB/RS485 converters.
+
+From: Dave Ludlow <dave.ludlow@bay.ws>
+
+commit 870408c8291015872a7a0b583673a9e56b3e73f4 upstream.
+
+Add the USB IDs needed to support the B&B USOPTL4-4P, USO9ML2-2P, and
+USO9ML2-4P.  This patch expands and corrects a typo in the patch sent
+on 08-31-2010.
+
+Signed-off-by: Dave Ludlow <dave.ludlow@bay.ws>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/serial/mos7840.c |   35 ++++++++++++++++++++++-------------
+ 1 file changed, 22 insertions(+), 13 deletions(-)
+
+--- a/drivers/usb/serial/mos7840.c
++++ b/drivers/usb/serial/mos7840.c
+@@ -119,17 +119,20 @@
+  * by making a change here, in moschip_port_id_table, and in
+  * moschip_id_table_combined
+  */
+-#define USB_VENDOR_ID_BANDB             0x0856
+-#define BANDB_DEVICE_ID_USO9ML2_2     0xAC22
+-#define BANDB_DEVICE_ID_USO9ML2_4     0xAC24
+-#define BANDB_DEVICE_ID_US9ML2_2      0xAC29
+-#define BANDB_DEVICE_ID_US9ML2_4      0xAC30
+-#define BANDB_DEVICE_ID_USPTL4_2      0xAC31
+-#define BANDB_DEVICE_ID_USPTL4_4      0xAC32
+-#define BANDB_DEVICE_ID_USOPTL4_2     0xAC42
+-#define BANDB_DEVICE_ID_USOPTL4_4     0xAC44
+-#define BANDB_DEVICE_ID_USOPTL2_4     0xAC24
+-#define BANDB_DEVICE_ID_USOPTL4_2P      0xBC02
++#define USB_VENDOR_ID_BANDB              0x0856
++#define BANDB_DEVICE_ID_USO9ML2_2        0xAC22
++#define BANDB_DEVICE_ID_USO9ML2_2P       0xBC00
++#define BANDB_DEVICE_ID_USO9ML2_4        0xAC24
++#define BANDB_DEVICE_ID_USO9ML2_4P       0xBC01
++#define BANDB_DEVICE_ID_US9ML2_2         0xAC29
++#define BANDB_DEVICE_ID_US9ML2_4         0xAC30
++#define BANDB_DEVICE_ID_USPTL4_2         0xAC31
++#define BANDB_DEVICE_ID_USPTL4_4         0xAC32
++#define BANDB_DEVICE_ID_USOPTL4_2        0xAC42
++#define BANDB_DEVICE_ID_USOPTL4_2P       0xBC02
++#define BANDB_DEVICE_ID_USOPTL4_4        0xAC44
++#define BANDB_DEVICE_ID_USOPTL4_4P       0xBC03
++#define BANDB_DEVICE_ID_USOPTL2_4        0xAC24
+ /* This driver also supports
+  * ATEN UC2324 device using Moschip MCS7840
+@@ -185,15 +188,18 @@ static const struct usb_device_id moschi
+       {USB_DEVICE(USB_VENDOR_ID_MOSCHIP, MOSCHIP_DEVICE_ID_7840)},
+       {USB_DEVICE(USB_VENDOR_ID_MOSCHIP, MOSCHIP_DEVICE_ID_7820)},
+       {USB_DEVICE(USB_VENDOR_ID_BANDB, BANDB_DEVICE_ID_USO9ML2_2)},
++      {USB_DEVICE(USB_VENDOR_ID_BANDB, BANDB_DEVICE_ID_USO9ML2_2P)},
+       {USB_DEVICE(USB_VENDOR_ID_BANDB, BANDB_DEVICE_ID_USO9ML2_4)},
++      {USB_DEVICE(USB_VENDOR_ID_BANDB, BANDB_DEVICE_ID_USO9ML2_4P)},
+       {USB_DEVICE(USB_VENDOR_ID_BANDB, BANDB_DEVICE_ID_US9ML2_2)},
+       {USB_DEVICE(USB_VENDOR_ID_BANDB, BANDB_DEVICE_ID_US9ML2_4)},
+       {USB_DEVICE(USB_VENDOR_ID_BANDB, BANDB_DEVICE_ID_USPTL4_2)},
+       {USB_DEVICE(USB_VENDOR_ID_BANDB, BANDB_DEVICE_ID_USPTL4_4)},
+       {USB_DEVICE(USB_VENDOR_ID_BANDB, BANDB_DEVICE_ID_USOPTL4_2)},
++      {USB_DEVICE(USB_VENDOR_ID_BANDB, BANDB_DEVICE_ID_USOPTL4_2P)},
+       {USB_DEVICE(USB_VENDOR_ID_BANDB, BANDB_DEVICE_ID_USOPTL4_4)},
++      {USB_DEVICE(USB_VENDOR_ID_BANDB, BANDB_DEVICE_ID_USOPTL4_4P)},
+       {USB_DEVICE(USB_VENDOR_ID_BANDB, BANDB_DEVICE_ID_USOPTL2_4)},
+-      {USB_DEVICE(USB_VENDOR_ID_BANDB, BANDB_DEVICE_ID_USOPTL2_4P)},
+       {USB_DEVICE(USB_VENDOR_ID_ATENINTL, ATENINTL_DEVICE_ID_UC2324)},
+       {USB_DEVICE(USB_VENDOR_ID_ATENINTL, ATENINTL_DEVICE_ID_UC2322)},
+       {}                      /* terminating entry */
+@@ -203,15 +209,18 @@ static const struct usb_device_id moschi
+       {USB_DEVICE(USB_VENDOR_ID_MOSCHIP, MOSCHIP_DEVICE_ID_7840)},
+       {USB_DEVICE(USB_VENDOR_ID_MOSCHIP, MOSCHIP_DEVICE_ID_7820)},
+       {USB_DEVICE(USB_VENDOR_ID_BANDB, BANDB_DEVICE_ID_USO9ML2_2)},
++      {USB_DEVICE(USB_VENDOR_ID_BANDB, BANDB_DEVICE_ID_USO9ML2_2P)},
+       {USB_DEVICE(USB_VENDOR_ID_BANDB, BANDB_DEVICE_ID_USO9ML2_4)},
++      {USB_DEVICE(USB_VENDOR_ID_BANDB, BANDB_DEVICE_ID_USO9ML2_4P)},
+       {USB_DEVICE(USB_VENDOR_ID_BANDB, BANDB_DEVICE_ID_US9ML2_2)},
+       {USB_DEVICE(USB_VENDOR_ID_BANDB, BANDB_DEVICE_ID_US9ML2_4)},
+       {USB_DEVICE(USB_VENDOR_ID_BANDB, BANDB_DEVICE_ID_USPTL4_2)},
+       {USB_DEVICE(USB_VENDOR_ID_BANDB, BANDB_DEVICE_ID_USPTL4_4)},
+       {USB_DEVICE(USB_VENDOR_ID_BANDB, BANDB_DEVICE_ID_USOPTL4_2)},
++      {USB_DEVICE(USB_VENDOR_ID_BANDB, BANDB_DEVICE_ID_USOPTL4_2P)},
+       {USB_DEVICE(USB_VENDOR_ID_BANDB, BANDB_DEVICE_ID_USOPTL4_4)},
++      {USB_DEVICE(USB_VENDOR_ID_BANDB, BANDB_DEVICE_ID_USOPTL4_4P)},
+       {USB_DEVICE(USB_VENDOR_ID_BANDB, BANDB_DEVICE_ID_USOPTL2_4)},
+-      {USB_DEVICE(USB_VENDOR_ID_BANDB, BANDB_DEVICE_ID_USOPTL2_4P)},
+       {USB_DEVICE(USB_VENDOR_ID_ATENINTL, ATENINTL_DEVICE_ID_UC2324)},
+       {USB_DEVICE(USB_VENDOR_ID_ATENINTL, ATENINTL_DEVICE_ID_UC2322)},
+       {}                      /* terminating entry */