USB: s3c-hsotg: Add initial detection and setup for dedicated FIFO mode
authorBen Dooks <ben-linux@fluff.org>
Mon, 19 Jul 2010 08:40:44 +0000 (09:40 +0100)
committerGreg Kroah-Hartman <gregkh@suse.de>
Tue, 10 Aug 2010 21:35:42 +0000 (14:35 -0700)
commit10aebc772a10c95e30dff0779cb0f879b8f1554f
tree79a0cee8dd9a3e9a61fc537f9571429ff5829866
parentb3864cedfb576e11d2f9274f14a24840d8b569c3
USB: s3c-hsotg: Add initial detection and setup for dedicated FIFO mode

Add support for the dedicated FIFO mode on newer SoCs such as the S5PV210
partly to improve support and to fix the bug where any non-EP0 IN endpoint
requires its own FIFO allocation.

To fix this, we ensure that any non-zero IN endpoint is given a TXFIFO
using the same allocation method as the periodic case (all our current
hardware has enough FIFOs and FIFO memory for a 1:1 mapping) and ensure
that the necessary transmission done interrupt is enabled.

The default settings from reset for the core point all EPs at FIFO0,
used for the control endpoint. However, the controller documentation
states that all IN endpoints _must_ have a unique FIFO to avoid any
contention during transmission.

Note, this leaves us with a large IN FIFO for EP0 (which re-uses the
old NPTXFIFO) for an endpoint which cannot shift more than a pair of
packets at a time... this is a waste, but it looks like we cannot
re-allocate space to the individual IN FIFOs as they are already
maxed out (to be confirmed).

Signed-off-by: Ben Dooks <ben-linux@fluff.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
arch/arm/plat-samsung/include/plat/regs-usb-hsotg.h
drivers/usb/gadget/s3c-hsotg.c