I believe I have found the root cause of this issue. Before commit 6d23ee9caa6790aea047f9aca7f3c03cb8d96eb6 |_dwc2_hcd_suspend() did not end up calling dwc2_enter_hibernation(), which was renamed to dwc2_enter_partial_power_down() in the same commit. _dwc2_hcd_suspend() skipped | ||dwc2_enter_partial_power_down() because of these lines:|| |if (!hsotg->params.hibernation){ goto skip_power_saving; } which now reads: ||if (!hsotg->params.power_down){ goto skip_power_saving; } The problem is, params.power_down does not default to 0 like params.hibernation did so |||dwc2_enter_partial_power_down() gets called|, the controller puts the port into partial power down, and doesn't correctly leave when a device is plugged in causing the port to be unusable. I've submitted a patch to the list to address this on rockchip devices: [PATCH] usb: dwc2: disable power_down on rockchip devices ||| |||| -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html