From b33c8e4b63bf56485bd395199004b1768b4ee135 Mon Sep 17 00:00:00 2001 From: William Wu Date: Fri, 13 Apr 2018 17:22:54 +0800 Subject: [PATCH] usb: dwc_otg_310: hcd: assign reg address to hc_regs In dwc_otg_hcd_endpoint_disable(), the hc_regs is initialized to NULL, but never assign a host channel reg address to it, so the chdis operation can't be handled for ever. This patch gets a host channenl reg address for hc_regs via qh->channel->hc_num. Change-Id: I5917df1975000876d28868ed51e218489ed3d209 Signed-off-by: William Wu --- drivers/usb/dwc_otg_310/dwc_otg_hcd.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/usb/dwc_otg_310/dwc_otg_hcd.c b/drivers/usb/dwc_otg_310/dwc_otg_hcd.c index b4db2e44342a..ea65d18e707f 100644 --- a/drivers/usb/dwc_otg_310/dwc_otg_hcd.c +++ b/drivers/usb/dwc_otg_310/dwc_otg_hcd.c @@ -658,6 +658,9 @@ int dwc_otg_hcd_endpoint_disable(dwc_otg_hcd_t *hcd, void *ep_handle, DWC_SPINLOCK_IRQSAVE(hcd->lock, &flags); } + if (qh->channel) + hc_regs = hcd->core_if->host_if->hc_regs[qh->channel->hc_num]; + if (!DWC_CIRCLEQ_EMPTY(&qh->qtd_list) && hc_regs) { hcchar.d32 = DWC_READ_REG32(&hc_regs->hcchar); if (hcchar.b.chen) {