--- /dev/null
+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;
--- /dev/null
+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",
--- /dev/null
+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
--- /dev/null
+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);
+ }
--- /dev/null
+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);
--- /dev/null
+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) {
--- /dev/null
+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));
+
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
--- /dev/null
+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);
--- /dev/null
+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 */
--- /dev/null
+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 */
+ };
+
--- /dev/null
+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);
+
--- /dev/null
+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;
+
--- /dev/null
+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 */
--- /dev/null
+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 */
--- /dev/null
+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 */