aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/gadget
diff options
context:
space:
mode:
authorBen Dooks <ben-linux@fluff.org>2010-07-19 04:40:46 -0400
committerGreg Kroah-Hartman <gregkh@suse.de>2010-08-10 17:35:42 -0400
commitc9a64ea884b8b40d70077ffe1e93081f2190f072 (patch)
tree32ed05e79acbd4165b504c5e0b434dbcd3ac533a /drivers/usb/gadget
parent03e10e5ab5ba6511ddaf80085cf08c62e9336fa5 (diff)
USB: s3c-hsotg: Check for new request before enqueing new setup
Before trying a new setup transaction after getting an EP0 in complete interrupt, check that the driver did not try and send more EP0 IN data before enqueing a new setup transaction. This fixes a bug where we cannot send all of the IN data in one go so split the transfer, but then fail to send all the data as we start waiting for a new OUT transaction Signed-off-by: Ben Dooks <ben-linux@fluff.org> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/usb/gadget')
-rw-r--r--drivers/usb/gadget/s3c-hsotg.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/usb/gadget/s3c-hsotg.c b/drivers/usb/gadget/s3c-hsotg.c
index df6a39d6270f..10aeee145eea 100644
--- a/drivers/usb/gadget/s3c-hsotg.c
+++ b/drivers/usb/gadget/s3c-hsotg.c
@@ -1790,7 +1790,7 @@ static void s3c_hsotg_epint(struct s3c_hsotg *hsotg, unsigned int idx,
1790 if (dir_in) { 1790 if (dir_in) {
1791 s3c_hsotg_complete_in(hsotg, hs_ep); 1791 s3c_hsotg_complete_in(hsotg, hs_ep);
1792 1792
1793 if (idx == 0) 1793 if (idx == 0 && !hs_ep->req)
1794 s3c_hsotg_enqueue_setup(hsotg); 1794 s3c_hsotg_enqueue_setup(hsotg);
1795 } else if (using_dma(hsotg)) { 1795 } else if (using_dma(hsotg)) {
1796 /* We're using DMA, we need to fire an OutDone here 1796 /* We're using DMA, we need to fire an OutDone here