MUSB: Fix bug - don't mess up count number and CSR0 register value
Subsystems (2)
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
@@ -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
Hi,
Quoted 4 lines · Bryan Wu
Signed-off-by Bryan Wu <[email protected]>--- 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@@ -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
Quoted 11 lines
Hi,
Quoted 4 lines · Bryan Wu
Signed-off-by Bryan Wu <[email protected]>--- 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
Quoted 15 lines · Gadiyar, Anand
Quoted 15 lines
Hi,
Quoted 4 lines · Bryan Wu
Signed-off-by Bryan Wu <[email protected]>--- 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