summaryrefslogtreecommitdiff
path: root/drivers/usb
diff options
context:
space:
mode:
authorHemant Kumar <hemantk@codeaurora.org>2014-10-31 14:04:04 -0700
committerDavid Keitel <dkeitel@codeaurora.org>2016-03-22 11:06:41 -0700
commit4e32ea8f3b6aed0d9479355342deb63434fe2950 (patch)
tree011a4e1e4aaf3858379d8929b682630703ef969b /drivers/usb
parentb0b1bb59407262e425fcb5a95f7df72a156c99ab (diff)
usb: dwc3: Do not call WARN_ON_ONCE from interrupt context
Gadget driver calls WARN_ON_ONCE in some of the APIs which are called from interrupt context. This may lead to watchdog bark if repeated WARN_ON_ONCE condition occurs. Hence print error message and/or log it in debug buffer. CRs-Fixed: 747698 Change-Id: Ieecd6342135e7d2bad36c82a12958b78054150db Signed-off-by: Hemant Kumar <hemantk@codeaurora.org>
Diffstat (limited to 'drivers/usb')
-rw-r--r--drivers/usb/dwc3/ep0.c10
-rw-r--r--drivers/usb/dwc3/gadget.c10
2 files changed, 14 insertions, 6 deletions
diff --git a/drivers/usb/dwc3/ep0.c b/drivers/usb/dwc3/ep0.c
index 639537caa6b6..2cbc6d5343c3 100644
--- a/drivers/usb/dwc3/ep0.c
+++ b/drivers/usb/dwc3/ep0.c
@@ -1046,7 +1046,6 @@ static void __dwc3_ep0_do_control_data(struct dwc3 *dwc,
}
dbg_queue(dep->number, &req->request, ret);
- WARN_ON(ret < 0);
}
static int dwc3_ep0_start_control_status(struct dwc3_ep *dep)
@@ -1097,7 +1096,11 @@ static void dwc3_ep0_end_control_data(struct dwc3 *dwc, struct dwc3_ep *dep)
cmd |= DWC3_DEPCMD_PARAM(dep->resource_index);
memset(&params, 0, sizeof(params));
ret = dwc3_send_gadget_ep_cmd(dwc, dep->number, cmd, &params);
- WARN_ON_ONCE(ret);
+ if (ret) {
+ dev_dbg(dwc->dev, "%s: send ep cmd ENDTRANSFER failed",
+ dep->name);
+ dbg_event(dep->number, "EENDXFER", ret);
+ }
dep->resource_index = 0;
}
@@ -1148,7 +1151,8 @@ static void dwc3_ep0_xfernotready(struct dwc3 *dwc,
dwc->ep0state = EP0_STATUS_PHASE;
if (dwc->delayed_status) {
- WARN_ON_ONCE(event->endpoint_number != 1);
+ if (event->endpoint_number != 1)
+ dbg_event(epnum, "EEPNUM", event->status);
dwc3_trace(trace_dwc3_ep0, "Delayed Status");
return;
}
diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c
index d841f09ff378..46a0bfcf8f60 100644
--- a/drivers/usb/dwc3/gadget.c
+++ b/drivers/usb/dwc3/gadget.c
@@ -378,7 +378,6 @@ int dwc3_send_gadget_ep_cmd(struct dwc3 *dwc, unsigned ep,
"Command Timed Out");
dev_err(dwc->dev, "%s command timeout for %s\n",
dwc3_gadget_ep_cmd_string(cmd), dep->name);
- WARN_ON_ONCE(1);
return -ETIMEDOUT;
}
@@ -2135,7 +2134,8 @@ static int dwc3_cleanup_done_reqs(struct dwc3 *dwc, struct dwc3_ep *dep,
do {
req = next_request(&dep->req_queued);
if (!req) {
- WARN_ON_ONCE(1);
+ dev_err(dwc->dev, "%s: evt sts %x for no req queued",
+ dep->name, event->status);
return 1;
}
i = 0;
@@ -2449,7 +2449,11 @@ static void dwc3_clear_stall_all_ep(struct dwc3 *dwc)
memset(&params, 0, sizeof(params));
ret = dwc3_send_gadget_ep_cmd(dwc, dep->number,
DWC3_DEPCMD_CLEARSTALL, &params);
- WARN_ON_ONCE(ret);
+ if (ret) {
+ dev_dbg(dwc->dev, "%s; send ep cmd CLEARSTALL failed",
+ dep->name);
+ dbg_event(dep->number, "ECLRSTALL", ret);
+ }
}
}