[PATCH v9 1/7] usb: onboard-hub: Add reset-gpio support

Marek Vasut marex at denx.de
Wed Nov 6 01:34:12 CET 2024


On 10/30/24 7:43 AM, Venkatesh Yadav Abbarapu wrote:
> As part of the reset, sets the direction of the pin to output before
> toggling the pin. Delay of millisecond is added in between low and
> high to meet the setup and hold time requirement of the reset.
> 
> Signed-off-by: Venkatesh Yadav Abbarapu <venkatesh.abbarapu at amd.com>
> Reviewed-by: Marek Vasut <marex at denx.de>
> ---
>   common/usb_onboard_hub.c | 42 +++++++++++++++++++++++++++++++++++++++-
>   1 file changed, 41 insertions(+), 1 deletion(-)
> 
> diff --git a/common/usb_onboard_hub.c b/common/usb_onboard_hub.c
> index 68a04ac041..4174575893 100644
> --- a/common/usb_onboard_hub.c
> +++ b/common/usb_onboard_hub.c
> @@ -7,14 +7,51 @@
>    * Mostly inspired by Linux kernel v6.1 onboard_usb_hub driver
>    */
>   
> +#include <asm/gpio.h>
>   #include <dm.h>
>   #include <dm/device_compat.h>
> +#include <linux/delay.h>
>   #include <power/regulator.h>
>   
>   struct onboard_hub {
>   	struct udevice *vdd;
> +	struct gpio_desc *reset_gpio;
>   };
>   
> +struct onboard_hub_data {
> +	unsigned long reset_us;
> +	unsigned long power_on_delay_us;
> +};
> +
> +int usb_onboard_hub_reset(struct udevice *dev)
> +{
> +	struct onboard_hub_data *data =
> +		(struct onboard_hub_data *)dev_get_driver_data(dev);
> +	struct onboard_hub *hub = dev_get_priv(dev);
> +	int ret;
> +
> +	hub->reset_gpio = devm_gpiod_get_optional(dev, "reset",
> +						  GPIOD_IS_OUT | GPIOD_ACTIVE_LOW);
Is the reset GPIO always active low or should this respect the GPIO 
flags in DT instead ?


More information about the U-Boot mailing list