From 34987d9cf309cd97eb324fb8d187c3b09ce1fcd6 Mon Sep 17 00:00:00 2001 From: Feng Mingli Date: Wed, 29 Jul 2015 14:11:42 +0800 Subject: [PATCH] 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 Signed-off-by: Yunzhi Li --- drivers/usb/dwc_otg_310/dwc_otg_cil.c | 2 ++ drivers/usb/dwc_otg_310/dwc_otg_hcd.c | 6 +++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/drivers/usb/dwc_otg_310/dwc_otg_cil.c b/drivers/usb/dwc_otg_310/dwc_otg_cil.c index dae6550634c1..411064697d37 100755 --- a/drivers/usb/dwc_otg_310/dwc_otg_cil.c +++ b/drivers/usb/dwc_otg_310/dwc_otg_cil.c @@ -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); } /** diff --git a/drivers/usb/dwc_otg_310/dwc_otg_hcd.c b/drivers/usb/dwc_otg_310/dwc_otg_hcd.c index 09881639192b..9df43cd1aba1 100755 --- a/drivers/usb/dwc_otg_310/dwc_otg_hcd.c +++ b/drivers/usb/dwc_otg_310/dwc_otg_hcd.c @@ -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); -- 2.34.1