From: Greg Kroah-Hartman Date: Wed, 15 Sep 2010 19:24:54 +0000 (-0700) Subject: .35 patches X-Git-Tag: v2.6.27.54~35 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=7fd787334b7ce472adcf714169d9cc808828c010;p=thirdparty%2Fkernel%2Fstable-queue.git .35 patches --- 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 index 00000000000..a897c4b33c6 --- /dev/null +++ b/queue-2.6.35/ath9k_htc-fix-disconnect-issue-in-ht40-mode.patch @@ -0,0 +1,37 @@ +From 71ba186c123630ddab17667ec9ecf7e2ef211295 Mon Sep 17 00:00:00 2001 +From: Vivek Natarajan +Date: Thu, 12 Aug 2010 14:23:28 +0530 +Subject: ath9k_htc: Fix disconnect issue in HT40 mode. + +From: Vivek Natarajan + +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 +Signed-off-by: John W. Linville +Signed-off-by: Greg Kroah-Hartman + + +--- + 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 index 00000000000..d870946dd59 --- /dev/null +++ b/queue-2.6.35/ath9k_hw-fix-eeprom-uncompress-block-reading-on-ar9003.patch @@ -0,0 +1,35 @@ +From 803288e61e346ba367373bc7d5eeb6e11c81a33c Mon Sep 17 00:00:00 2001 +From: Luis R. Rodriguez +Date: Mon, 30 Aug 2010 19:26:32 -0400 +Subject: ath9k_hw: Fix EEPROM uncompress block reading on AR9003 + +From: Luis R. Rodriguez + +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 +Signed-off-by: John W. Linville +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..e440cad34de --- /dev/null +++ b/queue-2.6.35/ath9k_hw-fix-parsing-of-ht40-5-ghz-ctls.patch @@ -0,0 +1,47 @@ +From 904879748d7439a6dabdc6be9aad983e216b027d Mon Sep 17 00:00:00 2001 +From: Luis R. Rodriguez +Date: Mon, 30 Aug 2010 19:26:33 -0400 +Subject: ath9k_hw: fix parsing of HT40 5 GHz CTLs + +From: Luis R. Rodriguez + +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 +Signed-off-by: John W. Linville +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..3234ccea3f9 --- /dev/null +++ b/queue-2.6.35/fuse-flush-background-queue-on-connection-close.patch @@ -0,0 +1,78 @@ +From 595afaf9e6ee1b48e13ec4b8bcc8c7dee888161a Mon Sep 17 00:00:00 2001 +From: Miklos Szeredi +Date: Tue, 7 Sep 2010 13:42:41 +0200 +Subject: fuse: flush background queue on connection close + +From: Miklos Szeredi + +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 +Signed-off-by: Miklos Szeredi +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..da57ab0e6d1 --- /dev/null +++ b/queue-2.6.35/mac80211-delete-work-timer.patch @@ -0,0 +1,42 @@ +From 071249b1d501b1f31a6b1af3fbcbe03158a84e5c Mon Sep 17 00:00:00 2001 +From: Johannes Berg +Date: Wed, 25 Aug 2010 14:47:38 +0200 +Subject: mac80211: delete work timer + +From: Johannes Berg + +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 +Signed-off-by: John W. Linville +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..231aaef8706 --- /dev/null +++ b/queue-2.6.35/ocfs2-fix-incorrect-checksum-validation-error.patch @@ -0,0 +1,43 @@ +From f5ce5a08a40f2086435858ddc80cb40394b082eb Mon Sep 17 00:00:00 2001 +From: Sunil Mushran +Date: Thu, 12 Aug 2010 16:24:26 -0700 +Subject: ocfs2: Fix incorrect checksum validation error + +From: Sunil Mushran + +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 +Singed-off-by: Tao Ma +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..d32a2d769dd --- /dev/null +++ b/queue-2.6.35/serial-bfin_sport_uart-restore-transmit-frame-sync-fix.patch @@ -0,0 +1,32 @@ +From 336746918299f2ca16b31490655b4ff7c8824c87 Mon Sep 17 00:00:00 2001 +From: Sonic Zhang +Date: Sat, 28 Aug 2010 16:32:55 -0400 +Subject: serial: bfin_sport_uart: restore transmit frame sync fix + +From: Sonic Zhang + +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 +Signed-off-by: Mike Frysinger +Signed-off-by: Greg Kroah-Hartman + +--- + 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)); + diff --git a/queue-2.6.35/series b/queue-2.6.35/series index e72e52c76bc..a6fe4c55d1f 100644 --- a/queue-2.6.35/series +++ b/queue-2.6.35/series @@ -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 index 00000000000..3886c39028c --- /dev/null +++ b/queue-2.6.35/usb-allow-drivers-to-use-allocated-bandwidth-until-unbound.patch @@ -0,0 +1,87 @@ +From 0791971ba8fbc44e4f476079f856335ed45e6324 Mon Sep 17 00:00:00 2001 +From: Thadeu Lima de Souza Cascardo +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 + +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 +Cc: Alan Stern +Cc: Sarah Sharp +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..58d01f6291f --- /dev/null +++ b/queue-2.6.35/usb-cp210x-add-b-g-h3000-link-cable-id.patch @@ -0,0 +1,29 @@ +From 0bf7a81c5d447c21db434be35363c44c0a30f598 Mon Sep 17 00:00:00 2001 +From: Jason Detring +Date: Thu, 26 Aug 2010 15:08:54 -0500 +Subject: USB: cp210x: Add B&G H3000 link cable ID + +From: Jason Detring + +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 +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..918def0fffc --- /dev/null +++ b/queue-2.6.35/usb-cp210x-add-new-device-id.patch @@ -0,0 +1,47 @@ +From 541e05ec3add5ab5bcf238d60161b53480280b20 Mon Sep 17 00:00:00 2001 +From: Craig Shelley +Date: Mon, 23 Aug 2010 20:50:57 +0100 +Subject: USB: CP210x Add new device ID + +From: Craig Shelley + +commit 541e05ec3add5ab5bcf238d60161b53480280b20 upstream. + +New device ID added for Balluff RFID reader. + +Signed-off-by: Craig Shelley +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..62c5f61b2b0 --- /dev/null +++ b/queue-2.6.35/usb-ehci-ppc-of-problems-in-unwind.patch @@ -0,0 +1,53 @@ +From 08a3b3b1c2e622e378d9086aee9e2e42ce37591d Mon Sep 17 00:00:00 2001 +From: Dan Carpenter +Date: Sat, 14 Aug 2010 11:06:19 +0200 +Subject: USB: ehci-ppc-of: problems in unwind + +From: Dan Carpenter + +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 +Reviewed-by: Grant Likely +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..ddb5f3c487d --- /dev/null +++ b/queue-2.6.35/usb-fix-kernel-oops-with-g_ether-and-windows.patch @@ -0,0 +1,39 @@ +From 037d3656adbd7e8cb848f01cf5dec423ed76bbe7 Mon Sep 17 00:00:00 2001 +From: Maxim Osipov +Date: Sat, 21 Aug 2010 14:54:06 +0400 +Subject: USB: Fix kernel oops with g_ether and Windows + +From: Maxim Osipov + +commit 037d3656adbd7e8cb848f01cf5dec423ed76bbe7 upstream. + +Please find attached patch for +https://bugzilla.kernel.org/show_bug.cgi?id=16023 problem. + + +Signed-off-by: Maxim Osipov +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..32ff57e0b59 --- /dev/null +++ b/queue-2.6.35/usb-ftdi_sio-added-custom-pids-for-chamsys-products.patch @@ -0,0 +1,57 @@ +From 657373883417b2618023fd4135d251ba06a2c30a Mon Sep 17 00:00:00 2001 +From: Luke Lowrey +Date: Thu, 2 Sep 2010 11:39:49 +0100 +Subject: USB: ftdi_sio: Added custom PIDs for ChamSys products + +From: Luke Lowrey + +commit 657373883417b2618023fd4135d251ba06a2c30a upstream. + +Added the 0xDAF8 to 0xDAFF PID range for ChamSys limited USB interface/wing products + +Signed-off-by: Luke Lowrey +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..b462d7d5130 --- /dev/null +++ b/queue-2.6.35/usb-serial-mos7840-add-usb-id-to-support-the-b-b-electronics-usoptl4-2p.patch @@ -0,0 +1,45 @@ +From caf3a636a9f809fdca5fa746e6687096457accb1 Mon Sep 17 00:00:00 2001 +From: Dave Ludlow +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 + +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 +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..e4890cb336d --- /dev/null +++ b/queue-2.6.35/usb-serial-mos7840-add-usb-ids-to-support-more-b-b-usb-rs485-converters.patch @@ -0,0 +1,94 @@ +From 870408c8291015872a7a0b583673a9e56b3e73f4 Mon Sep 17 00:00:00 2001 +From: Dave Ludlow +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 + +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 +Signed-off-by: Greg Kroah-Hartman + +--- + 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 */