[PATCH] usb: core: hub power off when over-current detected

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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


[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux