From 6158751cd9d36979ca8dfcf6fc4ed6dae8c9ebea Mon Sep 17 00:00:00 2001 From: William Wu Date: Tue, 30 Mar 2021 10:18:38 +0800 Subject: [PATCH] usb: dwc3: gadget: disable suspend event by default The DWC3 suspend event is used for special usb gadgets which support usb auto suspend, such as UVC. So disable the suspend event by default, and enable it depends on the uwk_en flag. This can avoid printing redundant log continuously in some case like this: [47.526109] dwc3 fcc00000.dwc3: device suspend [47.527118] dwc3 fcc00000.dwc3: device suspend [47.528200] dwc3 fcc00000.dwc3: device suspend [47.529110] dwc3 fcc00000.dwc3: device suspend [47.530120] dwc3 fcc00000.dwc3: device suspend Change-Id: I1945eba68d4bb1639d9c3ace66a8caea023371cc Signed-off-by: William Wu --- drivers/usb/dwc3/gadget.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c index bf8d854e93bf..df0aeae53b02 100644 --- a/drivers/usb/dwc3/gadget.c +++ b/drivers/usb/dwc3/gadget.c @@ -2167,12 +2167,14 @@ void dwc3_gadget_enable_irq(struct dwc3 *dwc) DWC3_DEVTEN_WKUPEVTEN | DWC3_DEVTEN_CONNECTDONEEN | DWC3_DEVTEN_USBRSTEN | - DWC3_DEVTEN_DISCONNEVTEN | - DWC3_DEVTEN_EOPFEN); + DWC3_DEVTEN_DISCONNEVTEN); if (dwc->revision < DWC3_REVISION_250A) reg |= DWC3_DEVTEN_ULSTCNGEN; + if (dwc->uwk_en) + reg |= DWC3_DEVTEN_EOPFEN; + dwc3_writel(dwc->regs, DWC3_DEVTEN, reg); } @@ -3474,7 +3476,7 @@ static void dwc3_gadget_interrupt(struct dwc3 *dwc, dwc3_gadget_conndone_interrupt(dwc); break; case DWC3_DEVICE_EVENT_WAKEUP: - dev_info(dwc->dev, "device wakeup\n"); + dev_dbg(dwc->dev, "device wakeup\n"); dwc3_gadget_wakeup_interrupt(dwc, event->event_info); break; case DWC3_DEVICE_EVENT_HIBER_REQ: @@ -3494,7 +3496,7 @@ static void dwc3_gadget_interrupt(struct dwc3 *dwc, * Ignore suspend event until the gadget enters into * USB_STATE_CONFIGURED state. */ - dev_info(dwc->dev, "device suspend\n"); + dev_dbg(dwc->dev, "device suspend\n"); if (dwc->gadget.state >= USB_STATE_CONFIGURED) dwc3_gadget_suspend_interrupt(dwc, event->event_info);