Hello.
Felipe Balbi wrote:
As DaVinci DM646x has a dedicated CPPI DMA interrupt, replace cppi_completion()
(which has always been kind of layering violation) by a complete CPPI interrupt
handler.
Signed-off-by: Dmitry Krivoschekov <dkrivoschekov@xxxxxxxxxxxxx>
Signed-off-by: Sergei Shtylyov <sshtylyov@xxxxxxxxxxxxx>
---
The patch is against the recent DaVinci tree; untested...
drivers/usb/musb/cppi_dma.c | 33 ++++++++++++++++++++++++++++++---
drivers/usb/musb/cppi_dma.h | 7 +++++--
drivers/usb/musb/davinci.c | 14 ++++----------
3 files changed, 39 insertions(+), 15 deletions(-)
Index: linux-davinci/drivers/usb/musb/cppi_dma.c
===================================================================
--- linux-davinci.orig/drivers/usb/musb/cppi_dma.c
+++ linux-davinci/drivers/usb/musb/cppi_dma.c
@@ -1144,17 +1144,27 @@ static bool cppi_rx_scan(struct cppi *cp
return completed;
}
-void cppi_completion(struct musb *musb, u32 rx, u32 tx)
+irqreturn_t cppi_interrupt(int irq, void *dev_id)
static ??
No. Look better, it's called from davinci.c.
@@ -282,16 +283,9 @@ static irqreturn_t davinci_interrupt(int
/* CPPI interrupts share the same IRQ line, but have their own
* mask, state, "vector", and EOI registers.
*/
- if (is_cppi_enabled()) {
- u32 cppi_tx = musb_readl(tibase, DAVINCI_TXCPPI_MASKED_REG);
- u32 cppi_rx = musb_readl(tibase, DAVINCI_RXCPPI_MASKED_REG);
-
- if (cppi_tx || cppi_rx) {
- DBG(4, "CPPI IRQ t%x r%x\n", cppi_tx, cppi_rx);
- cppi_completion(musb, cppi_rx, cppi_tx);
- retval = IRQ_HANDLED;
- }
- }
+ cppi = container_of(musb->dma_controller, struct cppi, controller);
+ if (is_cppi_enabled() && musb->dma_controller && !cppi->irq)
+ retval = cppi_interrupt(irq, __hci);
Now that you call request_irq() during controller create, this should be
unnecessary.
Not all DaVincis have dedivated CPPI IRQ.
You should probably call musb_dma_completion() from your cppi_interrupt() though.
It's called from there, of course.
WBR, Sergei
--
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