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

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

 



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?

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

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

				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