Re: [PATCH 2/2] usb: usb251xb: make power-up reset delay configurable in device tree

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

 



On Tue, Apr 26, 2022 at 12:34:13PM +0000, Daniels Umanovskis wrote:
> According to the datasheet, the hub should be operational 500us after
> the reset has been deasserted. Some individual circuits have been
> observed not to reset within the specified 500us and require a longer
> wait for subsequent configuration to succeed.
> 
> Signed-off-by: Daniels Umanovskis <du@xxxxxxxxxx>

LGTM.

Reviewed-by: Richard Leitner <richard.leitner@xxxxxxxxxxx>

> ---
>  drivers/usb/misc/usb251xb.c | 6 +++++-
>  1 file changed, 5 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/usb/misc/usb251xb.c b/drivers/usb/misc/usb251xb.c
> index 04c4e3fed094..e287e241ef96 100644
> --- a/drivers/usb/misc/usb251xb.c
> +++ b/drivers/usb/misc/usb251xb.c
> @@ -115,6 +115,7 @@ struct usb251xb {
>  	struct regulator *vdd;
>  	u8 skip_config;
>  	struct gpio_desc *gpio_reset;
> +	u32 reset_delay_us;
>  	u16 vendor_id;
>  	u16 product_id;
>  	u16 device_id;
> @@ -278,7 +279,7 @@ static void usb251xb_reset(struct usb251xb *hub)
>  	gpiod_set_value_cansleep(hub->gpio_reset, 0);
>  
>  	/* wait for hub recovery/stabilization */
> -	usleep_range(500, 750);	/* >=500us after RESET_N deasserted */
> +	fsleep(hub->reset_delay_us);
>  
>  	i2c_unlock_bus(hub->i2c->adapter, I2C_LOCK_SEGMENT);
>  }
> @@ -424,6 +425,9 @@ static int usb251xb_get_ofdata(struct usb251xb *hub,
>  		return err;
>  	}
>  
> +	if (of_property_read_u32(np, "reset-delay-us", &hub->reset_delay_us))
> +		hub->reset_delay_us = 500;
> +
>  	if (of_property_read_u16_array(np, "vendor-id", &hub->vendor_id, 1))
>  		hub->vendor_id = USB251XB_DEF_VENDOR_ID;
>  
> -- 
> 2.30.2
> 



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

  Powered by Linux