From: Giuseppe GORGOGLIONE When the driver is used for a Mentor Inventra device with static FIFO and static endpoint configuration from HW the is_shared_fifo flag is erroneously not enforced as true for endpoint 0. This makes ep0_txstate() to always print "odd;..." message and return without sending data in TX FIFO, because data send requests are queued to endpoints[0].ep_out list and not to to endpoints[0].ep_in where ep0_txstate() expects to find them (yes that's right!). Tested on STMicroelectronics Cartesio STA2062, an ARM based SoC which is integrating two Mentor Inventra devices, one with static FIFOs and static endpoint configuration from HW, and one with dynamic FIFOs and dynamic endpoint configuration from tables. Only the first device was hitting the bug. Reference kernel version 2.6.28.4 Signed-off-by: Giuseppe GORGOGLIONE <giuseppe.gorgoglione@xxxxxx> --- --- drivers/usb/musb/musb_core.c.orig 2009-02-06 22:47:45.000000000 +0100 +++ drivers/usb/musb/musb_core.c 2009-02-09 11:08:07.000000000 +0100 @@ -1402,6 +1402,7 @@ static int __init musb_core_init(u16 mus /* configure ep0 */ musb->endpoints[0].max_packet_sz_tx = MUSB_EP0_FIFOSIZE; musb->endpoints[0].max_packet_sz_rx = MUSB_EP0_FIFOSIZE; + musb->endpoints[0].is_shared_fifo = true; /* discover endpoint configuration */ musb->nr_endpoints = 1; -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html