USB specs says that if an over-current is detected then a hub must switch off all affected port, wait to cool down and then switch on. There are few controllers, which does not follow it, and expects software to switch off the port power. This patch will add workaround for such controllers. I think it will not affect others, even if HW switch off the port power. Signed-off-by: Pratyush Anand <pratyush.anand@xxxxxx> --- drivers/usb/core/hub.c | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-) diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c index 1af04bd..6674344 100644 --- a/drivers/usb/core/hub.c +++ b/drivers/usb/core/hub.c @@ -4531,6 +4531,9 @@ static void hub_events(void) dev_dbg(hub_dev, "over-current change on port " "%d\n", i); + if (hdev == hdev->bus->root_hub) + clear_port_feature(hdev, i, + USB_PORT_FEAT_POWER); clear_port_feature(hdev, i, USB_PORT_FEAT_C_OVER_CURRENT); msleep(100); /* Cool down */ -- 1.7.5.4 -- 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