aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/chipidea/ci.h
diff options
context:
space:
mode:
authorMichael Grzeschik <m.grzeschik@pengutronix.de>2013-06-13 17:59:54 +0300
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2013-06-17 13:45:47 -0700
commit2e270412968d961ecde347343ffa67dfe39f6c95 (patch)
tree43381431f6c6f19c594dccf4433a23cecd86be39 /drivers/usb/chipidea/ci.h
parentusb: chipidea: udc: manage dynamic amount of tds with a linked list (diff)
downloadlinux-dev-2e270412968d961ecde347343ffa67dfe39f6c95.tar.xz
linux-dev-2e270412968d961ecde347343ffa67dfe39f6c95.zip
usb: chipidea: udc: add multiple td support to hardware_{en,de}queue
This patch removes the restriction of having a limited amount of only four active tds on one endpoint. We use the linked list implementation to manage all tds which get added and removed by hardware_{en,de}queue. The removal of this restriction adds the driver to run into a hardware errata. It's possible that the hardware will still address an transfer descriptor that already got cleaned up. To solve this the patch also postpone the cleanup of processed tds by one. Signed-off-by: Michael Grzeschik <m.grzeschik@pengutronix.de> Signed-off-by: Alexander Shishkin <alexander.shishkin@linux.intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/usb/chipidea/ci.h')
-rw-r--r--drivers/usb/chipidea/ci.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/usb/chipidea/ci.h b/drivers/usb/chipidea/ci.h
index b0a6bce064ca..9ef686086c24 100644
--- a/drivers/usb/chipidea/ci.h
+++ b/drivers/usb/chipidea/ci.h
@@ -58,6 +58,7 @@ struct ci13xxx_ep {
struct ci13xxx *ci;
spinlock_t *lock;
struct dma_pool *td_pool;
+ struct td_node *pending_td;
};
enum ci_role {