aboutsummaryrefslogtreecommitdiffstats
diff options
authorGreg Kroah-Hartman <gregkh@suse.de>2008-09-03 11:30:16 -0700
committerGreg Kroah-Hartman <gregkh@suse.de>2008-09-03 11:30:16 -0700
commite422188b040abcae963a7a3099fd0d6aff7b6747 (patch)
tree9c11971039181c63c64c640d7257a6251a1b6abe
parent1ca42735e263e47d8f37557a46fcbbe38972f2d4 (diff)
downloadpatches-e422188b040abcae963a7a3099fd0d6aff7b6747.tar.gz
usb patches
-rw-r--r--series6
-rw-r--r--usb.current/usb-fix-ehci-periodic-transfers.patch127
-rw-r--r--usb.current/usb-fixing-nokia-3310c-in-storage-mode.patch36
-rw-r--r--usb.current/usb-gadget-fix-omap_udc-dma-regression.patch45
-rw-r--r--usb.current/usb-musb-fix-include-path.patch61
-rw-r--r--usb.current/usb-update-of-documentation-usb-anchors.txt.patch43
6 files changed, 318 insertions, 0 deletions
diff --git a/series b/series
index 1ba725faf12d10..4304a47df10933 100644
--- a/series
+++ b/series
@@ -22,6 +22,12 @@ usb.current/usb-ehci-fix-some-ehci-hangs-and-crashes.patch
usb.current/usb-fix-the-nokia-6300-storage-mode.patch
usb.current/usb-correct-sierra-wireless-usb-evdo-modem-device-id.patch
usb.current/usb-fix-hcd-interrupt-disabling.patch
+usb.current/usb-update-of-documentation-usb-anchors.txt.patch
+usb.current/usb-gadget-fix-omap_udc-dma-regression.patch
+usb.current/usb-fixing-nokia-3310c-in-storage-mode.patch
+usb.current/usb-musb-fix-include-path.patch
+usb.current/usb-fix-ehci-periodic-transfers.patch
+
usb.current/usb-added-driver-for-a-delcom-usb-7-segment-led-display.patch
usb.current/usb-add-usb-test-and-measurement-class-driver.patch
diff --git a/usb.current/usb-fix-ehci-periodic-transfers.patch b/usb.current/usb-fix-ehci-periodic-transfers.patch
new file mode 100644
index 00000000000000..a9b2333b22786b
--- /dev/null
+++ b/usb.current/usb-fix-ehci-periodic-transfers.patch
@@ -0,0 +1,127 @@
+From david-b@pacbell.net Wed Sep 3 11:20:17 2008
+From: David Brownell <david-b@pacbell.net>
+Date: Tue, 26 Aug 2008 23:35:04 -0700
+Subject: USB: fix EHCI periodic transfers
+To: amruth_pv@yahoo.com
+Cc: Alan Stern <stern@rowland.harvard.edu>, Karsten Wiese <fzu@wemgehoertderstaat.de>, Oliver Neukum <oliver@neukum.org>, Greg KH <greg@kroah.com>
+Message-ID: <200808262335.05204.david-b@pacbell.net>
+Content-Disposition: inline
+
+From: David Brownell <dbrownell@users.sourceforge.net>
+
+As noted by Stefan Neis <Stefan.Neis@kobil.com>, we had a recent
+regression with EHCI periodic transfers, in some (seemingly not
+all that common) cases.
+
+The root cause was that the schedule activation was only loosely
+coupled to the addition or removal of transfers, so two different
+execution contexts could both think they had to deactivate (or
+conversely activate) the schedule. So this fix tightens that
+coupling, managing it more like a refcount.
+
+Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/host/ehci-sched.c | 32 ++++++++++++++------------------
+ 1 file changed, 14 insertions(+), 18 deletions(-)
+
+--- a/drivers/usb/host/ehci-sched.c
++++ b/drivers/usb/host/ehci-sched.c
+@@ -437,6 +437,9 @@ static int enable_periodic (struct ehci_
+ u32 cmd;
+ int status;
+
++ if (ehci->periodic_sched++)
++ return 0;
++
+ /* did clearing PSE did take effect yet?
+ * takes effect only at frame boundaries...
+ */
+@@ -461,6 +464,9 @@ static int disable_periodic (struct ehci
+ u32 cmd;
+ int status;
+
++ if (--ehci->periodic_sched)
++ return 0;
++
+ /* did setting PSE not take effect yet?
+ * takes effect only at frame boundaries...
+ */
+@@ -544,13 +550,10 @@ static int qh_link_periodic (struct ehci
+ : (qh->usecs * 8);
+
+ /* maybe enable periodic schedule processing */
+- if (!ehci->periodic_sched++)
+- return enable_periodic (ehci);
+-
+- return 0;
++ return enable_periodic(ehci);
+ }
+
+-static void qh_unlink_periodic (struct ehci_hcd *ehci, struct ehci_qh *qh)
++static int qh_unlink_periodic(struct ehci_hcd *ehci, struct ehci_qh *qh)
+ {
+ unsigned i;
+ unsigned period;
+@@ -586,9 +589,7 @@ static void qh_unlink_periodic (struct e
+ qh_put (qh);
+
+ /* maybe turn off periodic schedule */
+- ehci->periodic_sched--;
+- if (!ehci->periodic_sched)
+- (void) disable_periodic (ehci);
++ return disable_periodic(ehci);
+ }
+
+ static void intr_deschedule (struct ehci_hcd *ehci, struct ehci_qh *qh)
+@@ -1562,9 +1563,7 @@ itd_link_urb (
+ urb->hcpriv = NULL;
+
+ timer_action (ehci, TIMER_IO_WATCHDOG);
+- if (unlikely (!ehci->periodic_sched++))
+- return enable_periodic (ehci);
+- return 0;
++ return enable_periodic(ehci);
+ }
+
+ #define ISO_ERRS (EHCI_ISOC_BUF_ERR | EHCI_ISOC_BABBLE | EHCI_ISOC_XACTERR)
+@@ -1642,7 +1641,7 @@ itd_complete (
+ ehci_urb_done(ehci, urb, 0);
+ retval = true;
+ urb = NULL;
+- ehci->periodic_sched--;
++ (void) disable_periodic(ehci);
+ ehci_to_hcd(ehci)->self.bandwidth_isoc_reqs--;
+
+ if (unlikely (list_empty (&stream->td_list))) {
+@@ -1951,9 +1950,7 @@ sitd_link_urb (
+ urb->hcpriv = NULL;
+
+ timer_action (ehci, TIMER_IO_WATCHDOG);
+- if (!ehci->periodic_sched++)
+- return enable_periodic (ehci);
+- return 0;
++ return enable_periodic(ehci);
+ }
+
+ /*-------------------------------------------------------------------------*/
+@@ -2019,7 +2016,7 @@ sitd_complete (
+ ehci_urb_done(ehci, urb, 0);
+ retval = true;
+ urb = NULL;
+- ehci->periodic_sched--;
++ (void) disable_periodic(ehci);
+ ehci_to_hcd(ehci)->self.bandwidth_isoc_reqs--;
+
+ if (list_empty (&stream->td_list)) {
+@@ -2243,8 +2240,7 @@ restart:
+ if (unlikely (modified)) {
+ if (likely(ehci->periodic_sched > 0))
+ goto restart;
+- /* maybe we can short-circuit this scan! */
+- disable_periodic(ehci);
++ /* short-circuit this scan */
+ now_uframe = clock;
+ break;
+ }
diff --git a/usb.current/usb-fixing-nokia-3310c-in-storage-mode.patch b/usb.current/usb-fixing-nokia-3310c-in-storage-mode.patch
new file mode 100644
index 00000000000000..ef8f99ec2bf181
--- /dev/null
+++ b/usb.current/usb-fixing-nokia-3310c-in-storage-mode.patch
@@ -0,0 +1,36 @@
+From filip@blueturtle.nu Wed Sep 3 11:18:04 2008
+From: Filip Joelsson <filip@blueturtle.nu>
+Date: Sun, 31 Aug 2008 08:22:16 +0200
+Subject: USB: Fixing Nokia 3310c in storage mode
+To: phil@ipom.com
+Cc: linux-usb@vger.kernel.org, usb-storage@lists.one-eyed-alien.net
+Message-ID: <48BA3898.7010707@blueturtle.nu>
+
+
+I had trouble connecting my cell phone as a storage device - so I added
+it to the unusual_devs.h list. I had trouble with the bcdDeviceMin and
+Max values - so after some experimenting I made it pretty inclusive.
+
+From: Filip Joelsson <filip@blueturtle.nu>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/storage/unusual_devs.h | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+--- a/drivers/usb/storage/unusual_devs.h
++++ b/drivers/usb/storage/unusual_devs.h
+@@ -160,6 +160,13 @@ UNUSUAL_DEV( 0x0421, 0x0019, 0x0592, 0x
+ US_SC_DEVICE, US_PR_DEVICE, NULL,
+ US_FL_MAX_SECTORS_64 ),
+
++/* Reported by Filip Joelsson <filip@blueturtle.nu> */
++UNUSUAL_DEV( 0x0421, 0x005d, 0x0001, 0x0600,
++ "Nokia",
++ "Nokia 3110c",
++ US_SC_DEVICE, US_PR_DEVICE, NULL,
++ US_FL_FIX_CAPACITY ),
++
+ /* Reported by Mario Rettig <mariorettig@web.de> */
+ UNUSUAL_DEV( 0x0421, 0x042e, 0x0100, 0x0100,
+ "Nokia",
diff --git a/usb.current/usb-gadget-fix-omap_udc-dma-regression.patch b/usb.current/usb-gadget-fix-omap_udc-dma-regression.patch
new file mode 100644
index 00000000000000..f080e9458eff7b
--- /dev/null
+++ b/usb.current/usb-gadget-fix-omap_udc-dma-regression.patch
@@ -0,0 +1,45 @@
+From david-b@pacbell.net Wed Sep 3 11:17:37 2008
+From: David Brownell <david-b@pacbell.net>
+Date: Sun, 31 Aug 2008 18:04:27 -0700
+Subject: usb gadget: fix omap_udc DMA regression
+To: linux-usb@vger.kernel.org
+Cc: Greg KH <greg@kroah.com>, Russell King <rmk@arm.linux.org.uk>
+Message-ID: <200808311804.27829.david-b@pacbell.net>
+Content-Disposition: inline
+
+
+From: David Brownell <dbrownell@users.sourceforge.net>
+
+This resolves another regression caused by the "use omap_read/write
+instead of __REG" patch: the hardware address used for DMA to/from
+the UDC became wrong. Bug noted by Russell King.
+
+Reported-by: Russell King <rmk@arm.linux.org.uk>
+Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
+Acked-by: Russell King <rmk@arm.linux.org.uk>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/gadget/omap_udc.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/drivers/usb/gadget/omap_udc.c
++++ b/drivers/usb/gadget/omap_udc.c
+@@ -787,7 +787,7 @@ static void dma_channel_claim(struct oma
+ omap_set_dma_dest_params(ep->lch,
+ OMAP_DMA_PORT_TIPB,
+ OMAP_DMA_AMODE_CONSTANT,
+- (unsigned long) io_v2p(UDC_DATA_DMA),
++ UDC_DATA_DMA,
+ 0, 0);
+ }
+ } else {
+@@ -804,7 +804,7 @@ static void dma_channel_claim(struct oma
+ omap_set_dma_src_params(ep->lch,
+ OMAP_DMA_PORT_TIPB,
+ OMAP_DMA_AMODE_CONSTANT,
+- (unsigned long) io_v2p(UDC_DATA_DMA),
++ UDC_DATA_DMA,
+ 0, 0);
+ /* EMIFF or SDRC */
+ omap_set_dma_dest_burst_mode(ep->lch,
diff --git a/usb.current/usb-musb-fix-include-path.patch b/usb.current/usb-musb-fix-include-path.patch
new file mode 100644
index 00000000000000..894face50961fd
--- /dev/null
+++ b/usb.current/usb-musb-fix-include-path.patch
@@ -0,0 +1,61 @@
+From me@felipebalbi.com Wed Sep 3 11:18:46 2008
+From: Felipe Balbi <me@felipebalbi.com>
+Date: Sat, 30 Aug 2008 19:42:02 +0300
+Subject: usb: musb: fix include path
+To: linux-usb@vger.kernel.org
+Cc: Felipe Balbi <felipe.balbi@nokia.com>
+Message-ID: <1220114522-18213-1-git-send-email-me@felipebalbi.com>
+
+
+From: Felipe Balbi <felipe.balbi@nokia.com>
+
+headers were moved, fixing.
+
+Signed-off-by: Felipe Balbi <felipe.balbi@nokia.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/musb/musb_core.c | 4 ++--
+ drivers/usb/musb/omap2430.c | 4 ++--
+ drivers/usb/musb/omap2430.h | 4 ++--
+ 3 files changed, 6 insertions(+), 6 deletions(-)
+
+--- a/drivers/usb/musb/musb_core.c
++++ b/drivers/usb/musb/musb_core.c
+@@ -100,8 +100,8 @@
+ #include <linux/io.h>
+
+ #ifdef CONFIG_ARM
+-#include <asm/arch/hardware.h>
+-#include <asm/arch/memory.h>
++#include <mach/hardware.h>
++#include <mach/memory.h>
+ #include <asm/mach-types.h>
+ #endif
+
+--- a/drivers/usb/musb/omap2430.c
++++ b/drivers/usb/musb/omap2430.c
+@@ -35,8 +35,8 @@
+ #include <linux/io.h>
+
+ #include <asm/mach-types.h>
+-#include <asm/arch/hardware.h>
+-#include <asm/arch/mux.h>
++#include <mach/hardware.h>
++#include <mach/mux.h>
+
+ #include "musb_core.h"
+ #include "omap2430.h"
+--- a/drivers/usb/musb/omap2430.h
++++ b/drivers/usb/musb/omap2430.h
+@@ -11,8 +11,8 @@
+ #define __MUSB_OMAP243X_H__
+
+ #if defined(CONFIG_ARCH_OMAP2430) || defined(CONFIG_ARCH_OMAP3430)
+-#include <asm/arch/hardware.h>
+-#include <asm/arch/usb.h>
++#include <mach/hardware.h>
++#include <mach/usb.h>
+
+ /*
+ * OMAP2430-specific definitions
diff --git a/usb.current/usb-update-of-documentation-usb-anchors.txt.patch b/usb.current/usb-update-of-documentation-usb-anchors.txt.patch
new file mode 100644
index 00000000000000..e17bbe1e704899
--- /dev/null
+++ b/usb.current/usb-update-of-documentation-usb-anchors.txt.patch
@@ -0,0 +1,43 @@
+From oliver@neukum.org Wed Sep 3 11:17:05 2008
+From: Oliver Neukum <oliver@neukum.org>
+Date: Tue, 2 Sep 2008 10:52:08 +0200
+Subject: USB: update of Documentation/usb/anchors.txt
+To: greg@kroah.com
+Cc: linux-usb@vger.kernel.org
+Message-ID: <200809021052.08650.oliver@neukum.org>
+Content-Disposition: inline
+
+
+The extended anchor API is documented
+
+Signed-off-by: Oliver Neukum <oneukum@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ Documentation/usb/anchors.txt | 12 ++++++++++++
+ 1 file changed, 12 insertions(+)
+
+--- a/Documentation/usb/anchors.txt
++++ b/Documentation/usb/anchors.txt
+@@ -42,9 +42,21 @@ This function kills all URBs associated
+ are called in the reverse temporal order they were submitted.
+ This way no data can be reordered.
+
++usb_unlink_anchored_urbs()
++--------------------------
++
++This function unlinks all URBs associated with an anchor. The URBs
++are processed in the reverse temporal order they were submitted.
++This is similar to usb_kill_anchored_urbs(), but it will not sleep.
++Therefore no guarantee is made that the URBs have been unlinked when
++the call returns. They may be unlinked later but will be unlinked in
++finite time.
++
+ usb_wait_anchor_empty_timeout()
+ -------------------------------
+
+ This function waits for all URBs associated with an anchor to finish
+ or a timeout, whichever comes first. Its return value will tell you
+ whether the timeout was reached.
++
++