]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/blobdiff - drivers/usb/musb/tusb6010.c
usb: musb: tusb6010: Handle DMA TX completion in DMA callback as well
[mirror_ubuntu-bionic-kernel.git] / drivers / usb / musb / tusb6010.c
index 4253bfb2204371c6ee9cc226fa42a06ead3b025b..4eb640c54f2c1b0552ceaf8ab5e060d89f3bed7d 100644 (file)
@@ -881,26 +881,14 @@ static irqreturn_t tusb_musb_interrupt(int irq, void *__hci)
                                | TUSB_INT_SRC_ID_STATUS_CHNG))
                idle_timeout = tusb_otg_ints(musb, int_src, tbase);
 
-       /* TX dma callback must be handled here, RX dma callback is
-        * handled in tusb_omap_dma_cb.
+       /*
+        * Just clear the DMA interrupt if it comes as the completion for both
+        * TX and RX is handled by the DMA callback in tusb6010_omap
         */
        if ((int_src & TUSB_INT_SRC_TXRX_DMA_DONE)) {
                u32     dma_src = musb_readl(tbase, TUSB_DMA_INT_SRC);
-               u32     real_dma_src = musb_readl(tbase, TUSB_DMA_INT_MASK);
 
                dev_dbg(musb->controller, "DMA IRQ %08x\n", dma_src);
-               real_dma_src = ~real_dma_src & dma_src;
-               if (tusb_dma_omap(musb) && real_dma_src) {
-                       int     tx_source = (real_dma_src & 0xffff);
-                       int     i;
-
-                       for (i = 1; i <= 15; i++) {
-                               if (tx_source & (1 << i)) {
-                                       dev_dbg(musb->controller, "completing ep%i %s\n", i, "tx");
-                                       musb_dma_completion(musb, i, 1);
-                               }
-                       }
-               }
                musb_writel(tbase, TUSB_DMA_INT_CLEAR, dma_src);
        }