Hi, > -----Original Message----- > From: Marek Vasut <ma...@denx.de> > Sent: Monday, October 7, 2024 5:39 PM > To: Abbarapu, Venkatesh <venkatesh.abbar...@amd.com>; u-boot@lists.denx.de > Cc: Simek, Michal <michal.si...@amd.com>; fabrice.gasn...@foss.st.com; git > (AMD-Xilinx) <g...@amd.com> > Subject: Re: [PATCH v5 1/7] usb: onboard-hub: Add reset-gpio support > > On 10/7/24 6:45 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.abbar...@amd.com> > > --- > > common/usb_onboard_hub.c | 49 > +++++++++++++++++++++++++++++++++++++++- > > 1 file changed, 48 insertions(+), 1 deletion(-) > > > > diff --git a/common/usb_onboard_hub.c b/common/usb_onboard_hub.c index > > 68a04ac041..4317e81ed8 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); > > + > > + /* property is optional, don't return error! */ > > + if (!hub->reset_gpio) > > + return 0; > > + > > + ret = dm_gpio_set_value(hub->reset_gpio, 1); > > + if (ret) > > + return ret; > > + > > + udelay(data->reset_us); > > + > > + ret = dm_gpio_set_value(hub->reset_gpio, 0); > > + if (ret) > > + return ret; > > + > > + udelay(data->power_on_delay_us); > > + > > + return 0; > > +} > > + > > static int usb_onboard_hub_probe(struct udevice *dev) > > { > > struct onboard_hub *hub = dev_get_priv(dev); @@ -30,7 +67,11 @@ > > static int usb_onboard_hub_probe(struct udevice *dev) > > if (ret) > > dev_err(dev, "can't enable vdd-supply: %d\n", ret); > > > > - return ret; > > + ret = usb_onboard_hub_reset(dev); > > return usb_onboard_hub_reset(dev); <Venkatesh> By adding the "return usb_onboard_hub_reset(dev);" we miss the code which does i2c initialization sequence which is part of [PATCH v4 4/7] usb: onboard-hub: Add i2c initialization for usb5744 hub of the series.
Thanks Venkatesh