USB: dwc_otg_310: hcd: modify reboot or shutdown painc

When reboot or shutdown, hcd clean urbs and disable host interrupts. But
there may pending interrupts, so clean them.

Change-Id: Ide34aab5857a790a0912fb56ebe18d43ba228cf0
Signed-off-by: Feng Mingli <fml@rock-chips.com>
Signed-off-by: Yunzhi Li <lyz@rock-chips.com>
This commit is contained in:
Feng Mingli
2015-07-29 14:11:42 +08:00
committed by Yunzhi Li
parent 90d6c10e8d
commit 34987d9cf3
2 changed files with 5 additions and 3 deletions

View File

@@ -2395,6 +2395,8 @@ void dwc_otg_disable_host_interrupts(dwc_otg_core_if_t *core_if)
intr_mask.b.nptxfempty = 1;
DWC_MODIFY_REG32(&global_regs->gintmsk, intr_mask.d32, 0);
/* Clear pending interrupts */
DWC_WRITE_REG32(&global_regs->gintsts, intr_mask.d32);
}
/**

View File

@@ -480,9 +480,6 @@ void dwc_otg_hcd_stop(dwc_otg_hcd_t *hcd)
pldata = hcd->core_if->otg_dev->pldata;
DWC_DEBUGPL(DBG_HCD, "DWC OTG HCD STOP\n");
/* Turn off all host-specific interrupts. */
dwc_otg_disable_host_interrupts(hcd->core_if);
/*
* Set status flags for the hub driver.
*/
@@ -495,6 +492,9 @@ void dwc_otg_hcd_stop(dwc_otg_hcd_t *hcd)
* and the QH lists (via ..._hcd_endpoint_disable).
*/
DWC_SPINLOCK_IRQSAVE(hcd->lock, &flags);
/* Turn off all host-specific interrupts. */
dwc_otg_disable_host_interrupts(hcd->core_if);
kill_all_urbs(hcd);
DWC_SPINUNLOCK_IRQRESTORE(hcd->lock, flags);