USB: musb: Fix CPPI IRQs not being signaled
authorDaniel Glöckner <dg@emlix.com>
Tue, 17 Nov 2009 09:52:57 +0000 (15:22 +0530)
committerGreg Kroah-Hartman <gregkh@suse.de>
Tue, 1 Dec 2009 00:43:16 +0000 (16:43 -0800)
commit8d6499e5bde91ad05dea4f666bdfe79e65e7cf96
treefa199bba40a29c2f46970dca3f325354362630cd
parent5542bc2ac7b52c021fc9c7a96329955491b7e763
USB: musb: Fix CPPI IRQs not being signaled

On tx channel abort a cppi interrupt is generated for a short time by
setting the lowest bit of the TCPPICOMPPTR register. It is then reset
immediately by clearing the bit. When the interrupt handler is run,
it does not detect an interrupt in the TCPPIMSKSR or RCPPIMSKSR
registers and thus exits early without writing the TCPPIEOIR register.
It appears that this inhibits further cppi interrupts until the handler
is called by chance, f.ex. from davinci_interrupt().

By moving the unmasking of the interrupt below the writes to
TCPPICOMPPTR, no interrupt is generated and no write to TCPPIEOIR is
necessary.

Signed-off-by: Daniel Glöckner <dg@emlix.com>
Signed-off-by: Ajay Kumar Gupta <ajay.gupta@ti.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/usb/musb/cppi_dma.c