diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c index 889dbabc7c2d..e95144870210 100644 --- a/drivers/usb/dwc3/core.c +++ b/drivers/usb/dwc3/core.c @@ -1004,6 +1004,17 @@ static void dwc3_check_params(struct dwc3 *dwc) dwc->imod_interval = 0; } + /* + * Workaround for STAR 9000961433 which affects only version + * 3.00a of the DWC_usb3 core. This prevents the controller + * interrupt from being masked while handling events. IMOD + * allows us to work around this issue. Enable it for the + * affected version. + */ + if (!dwc->imod_interval && + (dwc->revision == DWC3_REVISION_300A)) + dwc->imod_interval = 1; + /* Check the maximum_speed parameter */ switch (dwc->maximum_speed) { case USB_SPEED_LOW: