aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb
diff options
context:
space:
mode:
authorBen Dooks <ben-linux@fluff.org>2010-07-19 04:40:41 -0400
committerGreg Kroah-Hartman <gregkh@suse.de>2010-08-10 17:35:42 -0400
commit679f9b7c7c7d3c746792138e9d7d76578ef52c41 (patch)
tree425803386b2fd2fd3220ed92bb4fb44c73f9ab48 /drivers/usb
parent6d091ee761992f804a1dcd411836ad0abb71be10 (diff)
USB: s3c-hsotg: The NPTX/PTX FIFO sizes are in words, not bytes
Fix a problem where we have been underestimating the space available in the IN PTX/NPTX FIFOs by assuming that they where simply word aligned instead of in number-of-words. This means all length calculations need to be multiplied-by-4. Note, we do not change the information about fifo size or start addresses available to userspace as we assume the user can multiply by four easily and is already knows these values are in words. Signed-off-by: Ben Dooks <ben-linux@fluff.org> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/usb')
-rw-r--r--drivers/usb/gadget/s3c-hsotg.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/usb/gadget/s3c-hsotg.c b/drivers/usb/gadget/s3c-hsotg.c
index 81f62da26f36..4a251458c61d 100644
--- a/drivers/usb/gadget/s3c-hsotg.c
+++ b/drivers/usb/gadget/s3c-hsotg.c
@@ -505,6 +505,7 @@ static int s3c_hsotg_write_fifo(struct s3c_hsotg *hsotg,
505 } 505 }
506 506
507 can_write = S3C_GNPTXSTS_NPTxFSpcAvail_GET(gnptxsts); 507 can_write = S3C_GNPTXSTS_NPTxFSpcAvail_GET(gnptxsts);
508 can_write *= 4; /* fifo size is in 32bit quantities. */
508 } 509 }
509 510
510 dev_dbg(hsotg->dev, "%s: GNPTXSTS=%08x, can=%d, to=%d, mps %d\n", 511 dev_dbg(hsotg->dev, "%s: GNPTXSTS=%08x, can=%d, to=%d, mps %d\n",
@@ -2732,7 +2733,7 @@ static void __devinit s3c_hsotg_initep(struct s3c_hsotg *hsotg,
2732 */ 2733 */
2733 2734
2734 ptxfifo = readl(hsotg->regs + S3C_DPTXFSIZn(epnum)); 2735 ptxfifo = readl(hsotg->regs + S3C_DPTXFSIZn(epnum));
2735 hs_ep->fifo_size = S3C_DPTXFSIZn_DPTxFSize_GET(ptxfifo); 2736 hs_ep->fifo_size = S3C_DPTXFSIZn_DPTxFSize_GET(ptxfifo) * 4;
2736 2737
2737 /* if we're using dma, we need to set the next-endpoint pointer 2738 /* if we're using dma, we need to set the next-endpoint pointer
2738 * to be something valid. 2739 * to be something valid.