usb: chipidea: udc: add multiple td support to hardware_{en,de}queue
authorMichael Grzeschik <m.grzeschik@pengutronix.de>
Thu, 13 Jun 2013 14:59:54 +0000 (17:59 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 17 Jun 2013 20:45:47 +0000 (13:45 -0700)
commit2e270412968d961ecde347343ffa67dfe39f6c95
tree43381431f6c6f19c594dccf4433a23cecd86be39
parentcc9e6c495b0a37cc4f7003e470bcbb15ea760377
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>
drivers/usb/chipidea/ci.h
drivers/usb/chipidea/core.c
drivers/usb/chipidea/udc.c