Skip to contentSkip to conversation

MUSB: Fix bug - don't mess up count number and CSR0 register value

PATCH In review Bryan Wu 3 participants 4 messages Aug 5, 2008

Subsystems (2)
lore
Share & tools
lore

Bryan Wu

author
#0 lore raw

PATCH 1/1 MUSB: Fix bug - don't mess up count number and CSR0 register value

---
 drivers/usb/musb/musb_gadget_ep0.c |   24 ++++++++++++------------
 1 files changed, 12 insertions(+), 12 deletions(-)
drivers/usb/musb/musb_gadget_ep0.c +12 -12
index 2d2574c..e7b56df 100644
@@ -452,7 +452,7 @@ static void ep0_rxstate(struct musb *musb)
 {
 	void __iomem		*regs = musb->control_ep->regs;
 	struct usb_request	*req;
-	u16			tmp;
+	u16			count, csr;
 
 	req = next_ep0_request(musb);
 
@@ -464,34 +464,34 @@ static void ep0_rxstate(struct musb *musb)
 		unsigned	len = req->length - req->actual;
 
 		/* read the buffer */
-		tmp = musb_readb(regs, MUSB_COUNT0);
-		if (tmp > len) {
+		count = musb_readb(regs, MUSB_COUNT0);
+		if (count > len) {
 			req->status = -EOVERFLOW;
-			tmp = len;
+			count = len;
 		}
-		musb_read_fifo(&musb->endpoints[0], tmp, buf);
-		req->actual += tmp;
-		tmp = MUSB_CSR0_P_SVDRXPKTRDY;
-		if (tmp < 64 || req->actual == req->length) {
+		musb_read_fifo(&musb->endpoints[0], count, buf);
+		req->actual += count;
+		csr = MUSB_CSR0_P_SVDRXPKTRDY;
+		if (count < 64 || req->actual == req->length) {
 			musb->ep0_state = MUSB_EP0_STAGE_STATUSIN;
-			tmp |= MUSB_CSR0_P_DATAEND;
+			csr |= MUSB_CSR0_P_DATAEND;
 		} else
 			req = NULL;
 	} else
-		tmp = MUSB_CSR0_P_SVDRXPKTRDY | MUSB_CSR0_P_SENDSTALL;
+		csr = MUSB_CSR0_P_SVDRXPKTRDY | MUSB_CSR0_P_SENDSTALL;
 
 
 	/* Completion handler may choose to stall, e.g. because the
 	 * message just received holds invalid data.
 	 */
 	if (req) {
-		musb->ackpend = tmp;
+		musb->ackpend = csr;
 		musb_g_ep0_giveback(musb, req);
 		if (!musb->ackpend)
 			return;
 		musb->ackpend = 0;
 	}
-	musb_writew(regs, MUSB_CSR0, tmp);
+	musb_writew(regs, MUSB_CSR0, csr);
 }
 
 /*
Signature · 1 line
1.5.3
#1 lore raw

Hi,

Quoted 4 lines · Bryan Wu
---
 drivers/usb/musb/musb_gadget_ep0.c |   24 ++++++++++++------------
 1 files changed, 12 insertions(+), 12 deletions(-)

I think all musb patches should be now posted to linux-usb list as the patches are queued for integration.

So I'll be using plain code coming from mainline tree and won't apply any patches to musb code except temporary fixes if compile breaks.

Cheers,

Tony

Quoted 65 lines
drivers/usb/musb/musb_gadget_ep0.c +12 -12
index 2d2574c..e7b56df 100644
@@ -452,7 +452,7 @@ static void ep0_rxstate(struct musb *musb)
 {
 	void __iomem		*regs = musb->control_ep->regs;
 	struct usb_request	*req;
-	u16			tmp;
+	u16			count, csr;
 
 	req = next_ep0_request(musb);
 
@@ -464,34 +464,34 @@ static void ep0_rxstate(struct musb *musb)
 		unsigned	len = req->length - req->actual;
 
 		/* read the buffer */
-		tmp = musb_readb(regs, MUSB_COUNT0);
-		if (tmp > len) {
+		count = musb_readb(regs, MUSB_COUNT0);
+		if (count > len) {
 			req->status = -EOVERFLOW;
-			tmp = len;
+			count = len;
 		}
-		musb_read_fifo(&musb->endpoints[0], tmp, buf);
-		req->actual += tmp;
-		tmp = MUSB_CSR0_P_SVDRXPKTRDY;
-		if (tmp < 64 || req->actual == req->length) {
+		musb_read_fifo(&musb->endpoints[0], count, buf);
+		req->actual += count;
+		csr = MUSB_CSR0_P_SVDRXPKTRDY;
+		if (count < 64 || req->actual == req->length) {
 			musb->ep0_state = MUSB_EP0_STAGE_STATUSIN;
-			tmp |= MUSB_CSR0_P_DATAEND;
+			csr |= MUSB_CSR0_P_DATAEND;
 		} else
 			req = NULL;
 	} else
-		tmp = MUSB_CSR0_P_SVDRXPKTRDY | MUSB_CSR0_P_SENDSTALL;
+		csr = MUSB_CSR0_P_SVDRXPKTRDY | MUSB_CSR0_P_SENDSTALL;
 
 
 	/* Completion handler may choose to stall, e.g. because the
 	 * message just received holds invalid data.
 	 */
 	if (req) {
-		musb->ackpend = tmp;
+		musb->ackpend = csr;
 		musb_g_ep0_giveback(musb, req);
 		if (!musb->ackpend)
 			return;
 		musb->ackpend = 0;
 	}
-	musb_writew(regs, MUSB_CSR0, tmp);
+	musb_writew(regs, MUSB_CSR0, csr);
 }
 
 /*
Signature · 5 lines
1.5.3
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
#2 lore raw
Quoted 11 lines

Hi,

Quoted 4 lines · Bryan Wu
---
 drivers/usb/musb/musb_gadget_ep0.c |   24 ++++++++++++------------
 1 files changed, 12 insertions(+), 12 deletions(-)

I think all musb patches should be now posted to linux-usb list as the patches are queued for integration.

Quoted 7 lines

So I'll be using plain code coming from mainline tree and won't apply any patches to musb code except temporary fixes if compile breaks.

Cheers,

Tony

Do you mind if I post the patches here as well? It could be useful to someone using USB on OMAP? At least they could get a review here.

I've got one set of patches coming up over the next couple of days, and all of it is based on the current linux-omap tree.

- Anand

#3 lore raw
Quoted 15 lines · Gadiyar, Anand
Quoted 15 lines

Hi,

Quoted 4 lines · Bryan Wu
---
 drivers/usb/musb/musb_gadget_ep0.c |   24 ++++++++++++------------
 1 files changed, 12 insertions(+), 12 deletions(-)

I think all musb patches should be now posted to linux-usb list as the patches are queued for integration.

So I'll be using plain code coming from mainline tree and won't apply any patches to musb code except temporary fixes if compile breaks.

Quoted 6 lines
Quoted 3 lines

Cheers,

Tony

Do you mind if I post the patches here as well? It could be useful to someone using USB on OMAP? At least they could get a review here.

Yes, it's a good idea to Cc linux-omap list so people can test them and keep track of the changes easier :)

Quoted 2 lines

I've got one set of patches coming up over the next couple of days, and all of it is based on the current linux-omap tree.

OK

Tony