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

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

 



On 11/8/2012 9:35 PM, Alan Stern wrote:
On Thu, 8 Nov 2012, Pratyush Anand wrote:

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.

Can you give any examples?

SPEAr

Will modify as "There is atleast one controller (SPEAr), which..."


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)

Normally we test for root hubs by doing:

				if (!hdev->parent)

ok


You also might want to avoid turning off the power feature if it is
already off:

ok.


				if (!hdev->parent && (portstatus &
						USB_PORT_STAT_POWER))

+					clear_port_feature(hdev, i,
+						USB_PORT_FEAT_POWER);
  				clear_port_feature(hdev, i,
  					USB_PORT_FEAT_C_OVER_CURRENT);
  				msleep(100);	/* Cool down */

Alan Stern

.



--
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