diff options
author | Ben Dooks <ben-linux@fluff.org> | 2010-07-19 04:40:46 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2010-08-10 17:35:42 -0400 |
commit | c9a64ea884b8b40d70077ffe1e93081f2190f072 (patch) | |
tree | 32ed05e79acbd4165b504c5e0b434dbcd3ac533a /drivers/usb/gadget | |
parent | 03e10e5ab5ba6511ddaf80085cf08c62e9336fa5 (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.c | 2 |
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 |