On 2021/3/25 18:09, LeoLiu-oc wrote:
During polling phase after some device plug in type-c port, if polling timeout three times, link state will goto inactive. However this event not handle by the driver, which will cause device can't be recognized. To fix this issue, if port link state detected in inactive, record this event that will trigger a warm reset to bring device identified by driver.
The patch is scheduled to be submitted to the kernel mainline in 2021.
Signed-off-by: LeoLiu-oc LeoLiu-oc@zhaoxin.com
drivers/usb/core/hub.c | 5 +++++ 1 file changed, 5 insertions(+)
diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c index fa28f23a4a33..302caa1ea345 100644 --- a/drivers/usb/core/hub.c +++ b/drivers/usb/core/hub.c @@ -1135,6 +1135,11 @@ static void hub_activate(struct usb_hub *hub, enum hub_activation_type type) USB_SS_PORT_LS_POLLING)) need_debounce_delay = true;
+ /* Make sure a warm-reset request is handled by port_event */ + if (type == HUB_RESUME && + hub_port_warm_reset_required(hub, port1, portstatus)) + set_bit(port1, hub->event_bits);
Make sure only happens for Zhaoxin platform.
Thanks Hanjun