aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/chipidea/udc.h
diff options
context:
space:
mode:
authorMichael Grzeschik <m.grzeschik@pengutronix.de>2013-06-13 17:59:53 +0300
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2013-06-17 13:45:47 -0700
commitcc9e6c495b0a37cc4f7003e470bcbb15ea760377 (patch)
tree620189fb514e382806ac61237b2812476c9abe07 /drivers/usb/chipidea/udc.h
parentusb: chipidea: improve kconfig (diff)
downloadlinux-dev-cc9e6c495b0a37cc4f7003e470bcbb15ea760377.tar.xz
linux-dev-cc9e6c495b0a37cc4f7003e470bcbb15ea760377.zip
usb: chipidea: udc: manage dynamic amount of tds with a linked list
Instead of having a limited number of usable tds in the udc we use a linked list to support dynamic amount of needed tds for all special gadget types. This improves throughput. Signed-off-by: Michael Grzeschik <m.grzeschik@pengutronix.de> Reviewed-by: Felipe Balbi <balbi@ti.com> 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/udc.h')
-rw-r--r--drivers/usb/chipidea/udc.h11
1 files changed, 7 insertions, 4 deletions
diff --git a/drivers/usb/chipidea/udc.h b/drivers/usb/chipidea/udc.h
index a75724a19e1a..0ecc0ad4f513 100644
--- a/drivers/usb/chipidea/udc.h
+++ b/drivers/usb/chipidea/udc.h
@@ -60,6 +60,12 @@ struct ci13xxx_qh {
struct usb_ctrlrequest setup;
} __attribute__ ((packed, aligned(4)));
+struct td_node {
+ struct list_head td;
+ dma_addr_t dma;
+ struct ci13xxx_td *ptr;
+};
+
/**
* struct ci13xxx_req - usb request representation
* @req: request structure for gadget drivers
@@ -72,10 +78,7 @@ struct ci13xxx_qh {
struct ci13xxx_req {
struct usb_request req;
struct list_head queue;
- struct ci13xxx_td *ptr;
- dma_addr_t dma;
- struct ci13xxx_td *zptr;
- dma_addr_t zdma;
+ struct list_head tds;
};
#ifdef CONFIG_USB_CHIPIDEA_UDC