UPSTREAM: usb: dwc2: Fixed SOF interrupt enabling/disabling
authorSevak Arakelyan <sevaka@synopsys.com>
Thu, 28 Apr 2016 03:20:53 +0000 (20:20 -0700)
committerHuang, Tao <huangtao@rock-chips.com>
Tue, 3 Jan 2017 10:48:35 +0000 (18:48 +0800)
In case of DDMA mode we don't need to get an SOF interrupt so disable
the unmasking of SOF interrupt in DDMA mode.

Change-Id: I8a58bf26e8c9493a39e3f8ba6da1204d13b52127
Signed-off-by: Sevak Arakelyan <sevaka@synopsys.com>
Signed-off-by: John Youn <johnyoun@synopsys.com>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Huang, Tao <huangtao@rock-chips.com>
(cherry picked from commit 907a444718b8f93956acac1c944d880c54ab900d)

drivers/usb/dwc2/hcd_queue.c

index 7f634fd771c7c8ab6930deadff194eb82a421b2a..b5c7793a2df2b1cdd7623f278d7faa161812de01 100644 (file)
@@ -1709,7 +1709,8 @@ void dwc2_hcd_qh_unlink(struct dwc2_hsotg *hsotg, struct dwc2_qh *qh)
 
        dwc2_deschedule_periodic(hsotg, qh);
        hsotg->periodic_qh_count--;
-       if (!hsotg->periodic_qh_count) {
+       if (!hsotg->periodic_qh_count &&
+           hsotg->core_params->dma_desc_enable <= 0) {
                intr_mask = dwc2_readl(hsotg->regs + GINTMSK);
                intr_mask &= ~GINTSTS_SOF;
                dwc2_writel(intr_mask, hsotg->regs + GINTMSK);