When controller is suspended, registers mustn't be touched. This is not the case when 'power_down' is set to none. In this case, power saving routines are skipped. This fixes a case where gadget driver (f_acm) gets opened (cat /dev/ttyGS0) but the bus has been suspended by the host: - configfs-gadget gadget: acm ttyGS0 can't notify serial state, -11 Fixes: 7ababa926c66 ("usb: dwc2: gadget: prevent new request submission during suspend") Fixes: 88b02f2cb1e1 ("usb: dwc2: Add core state checking") Signed-off-by: Fabrice Gasnier <fabrice.gasnier@xxxxxx> --- drivers/usb/dwc2/gadget.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/usb/dwc2/gadget.c b/drivers/usb/dwc2/gadget.c index 92ed32e..45a8782 100644 --- a/drivers/usb/dwc2/gadget.c +++ b/drivers/usb/dwc2/gadget.c @@ -1375,7 +1375,8 @@ static int dwc2_hsotg_ep_queue(struct usb_ep *ep, struct usb_request *req, req->zero, req->short_not_ok); /* Prevent new request submission when controller is suspended */ - if (hs->lx_state != DWC2_L0) { + if (hs->params.power_down != DWC2_POWER_DOWN_PARAM_NONE && + hs->lx_state != DWC2_L0) { dev_dbg(hs->dev, "%s: submit request only in active state\n", __func__); return -EAGAIN; -- 2.7.4