Title: [4030] trunk: Fix bug [#3750]: define MUSB_TXCSR_MODE as 0x0, because this bit is reserved for our implementation because the FIFOs for Rx and Tx endpoints are
Revision
4030
Author
cooloney
Date
2007-12-11 23:56:39 -0600 (Tue, 11 Dec 2007)

Log Message

Fix bug [#3750]: define MUSB_TXCSR_MODE as 0x0, because this bit is reserved for our implementation because the FIFOs for Rx and Tx endpoints are
separate.

Diffstat

 drivers/usb/musb/musb_host.c                |   22 ++++++++++------------
 include/asm-blackfin/mach-bf527/musb-bfin.h |    2 +-
 include/asm-blackfin/mach-bf548/musb-bfin.h |    2 +-
 3 files changed, 12 insertions(+), 14 deletions(-)

Modified Paths

Diff

Modified: trunk/drivers/usb/musb/musb_host.c (4029 => 4030)


--- trunk/drivers/usb/musb/musb_host.c	2007-12-11 22:02:34 UTC (rev 4029)
+++ trunk/drivers/usb/musb/musb_host.c	2007-12-12 05:56:39 UTC (rev 4030)
@@ -594,12 +594,11 @@
 			WARN("rx%d, packet/%d ready?\n", ep->epnum,
 				musb_readw(ep->regs, MUSB_RXCOUNT));
 
-#ifdef CONFIG_BLACKFIN
-		musb_h_flush_rxfifo(ep, 0);
-#else
-		musb_h_flush_rxfifo(ep, MUSB_RXCSR_CLRDATATOG);
-#endif
-
+		csr = musb_readw(ep->regs, MUSB_TXCSR);
+		if (csr & MUSB_TXCSR_MODE)
+			musb_h_flush_rxfifo(ep, MUSB_RXCSR_CLRDATATOG);
+		else
+			musb_h_flush_rxfifo(ep, 0);
 	}
 
 	/* target addr and (for multipoint) hub addr/port */
@@ -693,9 +692,9 @@
 			/* ASSERT:  TXCSR_DMAENAB was already cleared */
 
 			/* flush all old state, set default */
-#ifndef CONFIG_BLACKFIN
-			musb_h_tx_flush_fifo(hw_ep);
-#endif
+			if (csr & MUSB_TXCSR_MODE)
+				musb_h_tx_flush_fifo(hw_ep);
+
 			csr &= ~(MUSB_TXCSR_H_NAKTIMEOUT
 					| MUSB_TXCSR_DMAMODE
 					| MUSB_TXCSR_FRCDATATOG
@@ -709,10 +708,9 @@
 					qh->epnum, 1))
 				csr |= MUSB_TXCSR_H_WR_DATATOGGLE
 					| MUSB_TXCSR_H_DATATOGGLE;
-#ifndef CONFIG_BLACKFIN
 			else
-				csr |= MUSB_TXCSR_CLRDATATOG;
-#endif
+				if (csr & MUSB_TXCSR_MODE)
+					csr |= MUSB_TXCSR_CLRDATATOG;
 
 			/* twice in case of double packet buffering */
 			musb_writew(epio, MUSB_TXCSR, csr);

Modified: trunk/include/asm-blackfin/mach-bf527/musb-bfin.h (4029 => 4030)


--- trunk/include/asm-blackfin/mach-bf527/musb-bfin.h	2007-12-11 22:02:34 UTC (rev 4029)
+++ trunk/include/asm-blackfin/mach-bf527/musb-bfin.h	2007-12-12 05:56:39 UTC (rev 4030)
@@ -198,7 +198,7 @@
 
 /* TXCSR in Peripheral and Host mode */
 #define MUSB_TXCSR_AUTOSET		0x8000
-#define MUSB_TXCSR_MODE			0x2000
+#define MUSB_TXCSR_MODE			0x0000	/* Not implemented - HW has seperate Tx/Rx FIFO */
 #define MUSB_TXCSR_DMAENAB		0x1000
 #define MUSB_TXCSR_FRCDATATOG		0x0800
 #define MUSB_TXCSR_DMAMODE		0x0400

Modified: trunk/include/asm-blackfin/mach-bf548/musb-bfin.h (4029 => 4030)


--- trunk/include/asm-blackfin/mach-bf548/musb-bfin.h	2007-12-11 22:02:34 UTC (rev 4029)
+++ trunk/include/asm-blackfin/mach-bf548/musb-bfin.h	2007-12-12 05:56:39 UTC (rev 4030)
@@ -198,7 +198,7 @@
 
 /* TXCSR in Peripheral and Host mode */
 #define MUSB_TXCSR_AUTOSET		0x8000
-#define MUSB_TXCSR_MODE			0x2000
+#define MUSB_TXCSR_MODE			0x0000	/* Not implemented - HW has seperate Tx/Rx FIFO */
 #define MUSB_TXCSR_DMAENAB		0x1000
 #define MUSB_TXCSR_FRCDATATOG		0x0800
 #define MUSB_TXCSR_DMAMODE		0x0400
_______________________________________________
Linux-kernel-commits mailing list
[email protected]
http://blackfin.uclinux.org/mailman/listinfo/linux-kernel-commits

Reply via email to