From ab5c1c8c79c52b3656a601645dd4856ad38881d7 Mon Sep 17 00:00:00 2001 From: Felipe Balbi Date: Thu, 19 Jul 2012 08:51:13 +0300 Subject: [PATCH] --- yaml --- r: 325956 b: refs/heads/master c: d9b33c605c398df1d42c694bda28fe8708754c64 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/usb/dwc3/ep0.c | 12 +++++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index a20d046b1c7a..d93fcf73cff3 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 35f75696649d43aee8031d81783322b0708805b5 +refs/heads/master: d9b33c605c398df1d42c694bda28fe8708754c64 diff --git a/trunk/drivers/usb/dwc3/ep0.c b/trunk/drivers/usb/dwc3/ep0.c index 962fb9b5465b..28bce9be30bc 100644 --- a/trunk/drivers/usb/dwc3/ep0.c +++ b/trunk/drivers/usb/dwc3/ep0.c @@ -155,13 +155,23 @@ static int __dwc3_gadget_ep0_queue(struct dwc3_ep *dep, dep->flags &= ~(DWC3_EP_PENDING_REQUEST | DWC3_EP0_DIR_IN); - } else if (dwc->delayed_status) { + + return 0; + } + + /* + * In case gadget driver asked us to delay the STATUS phase, + * handle it here. + */ + if (dwc->delayed_status) { dwc->delayed_status = false; if (dwc->ep0state == EP0_STATUS_PHASE) __dwc3_ep0_do_control_status(dwc, dwc->eps[1]); else dev_dbg(dwc->dev, "too early for delayed status\n"); + + return 0; } return 0;