All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] usb: dwc3: Add support to reset usb ULPI phy
@ 2022-02-23 15:06 Michal Simek
  2022-02-23 17:31 ` Marek Vasut
  2022-03-03  8:47 ` Bin Meng
  0 siblings, 2 replies; 6+ messages in thread
From: Michal Simek @ 2022-02-23 15:06 UTC (permalink / raw)
  To: u-boot, git
  Cc: T Karthik Reddy, Angus Ainslie, Kunihiko Hayashi, Marek Vasut,
	Michael Walle, Priyanka Jain, Simon Glass

From: T Karthik Reddy <t.karthik.reddy@xilinx.com>

When usb PHY initialization is done, the PHY need to be reset.

Signed-off-by: T Karthik Reddy <t.karthik.reddy@xilinx.com>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
---

 drivers/usb/dwc3/Kconfig        |  2 +-
 drivers/usb/dwc3/dwc3-generic.c | 28 ++++++++++++++++++++++++++++
 2 files changed, 29 insertions(+), 1 deletion(-)

diff --git a/drivers/usb/dwc3/Kconfig b/drivers/usb/dwc3/Kconfig
index 62aa65bf0cd2..685bda3729e5 100644
--- a/drivers/usb/dwc3/Kconfig
+++ b/drivers/usb/dwc3/Kconfig
@@ -25,7 +25,7 @@ config USB_DWC3_OMAP
 
 config USB_DWC3_GENERIC
 	bool "Generic implementation of a DWC3 wrapper (aka dwc3 glue)"
-	depends on DM_USB && USB_DWC3 && MISC
+	depends on DM_USB && USB_DWC3 && MISC && DM_GPIO
 	help
 	  Select this for Xilinx ZynqMP and similar Platforms.
 	  This wrapper supports Host and Peripheral operation modes.
diff --git a/drivers/usb/dwc3/dwc3-generic.c b/drivers/usb/dwc3/dwc3-generic.c
index b1e019b5b91a..17d35a6dc60c 100644
--- a/drivers/usb/dwc3/dwc3-generic.c
+++ b/drivers/usb/dwc3/dwc3-generic.c
@@ -25,6 +25,7 @@
 #include <reset.h>
 #include <clk.h>
 #include <usb/xhci.h>
+#include <asm/gpio.h>
 
 struct dwc3_glue_data {
 	struct clk_bulk		clks;
@@ -42,6 +43,7 @@ struct dwc3_generic_priv {
 	void *base;
 	struct dwc3 dwc3;
 	struct phy_bulk phys;
+	struct gpio_desc ulpi_reset;
 };
 
 struct dwc3_generic_host_priv {
@@ -77,6 +79,26 @@ static int dwc3_generic_probe(struct udevice *dev,
 	if (rc && rc != -ENOTSUPP)
 		return rc;
 
+	if (device_is_compatible(dev->parent, "xlnx,zynqmp-dwc3")) {
+		rc = gpio_request_by_name(dev->parent, "reset-gpios", 0,
+					  &priv->ulpi_reset, GPIOD_ACTIVE_LOW);
+		if (rc != -EBUSY && rc)
+			return rc;
+
+		/* Toggle ulpi to reset the phy. */
+		rc = dm_gpio_set_value(&priv->ulpi_reset, 1);
+		if (rc)
+			return rc;
+
+		mdelay(5);
+
+		rc = dm_gpio_set_value(&priv->ulpi_reset, 0);
+		if (rc)
+			return rc;
+
+		mdelay(5);
+	}
+
 	if (device_is_compatible(dev->parent, "rockchip,rk3399-dwc3"))
 		reset_deassert_bulk(&glue->resets);
 
@@ -98,6 +120,12 @@ static int dwc3_generic_remove(struct udevice *dev,
 {
 	struct dwc3 *dwc3 = &priv->dwc3;
 
+	if (device_is_compatible(dev->parent, "xlnx,zynqmp-dwc3")) {
+		struct gpio_desc *ulpi_reset = &priv->ulpi_reset;
+
+		dm_gpio_free(ulpi_reset->dev, ulpi_reset);
+	}
+
 	dwc3_remove(dwc3);
 	dwc3_shutdown_phy(dev, &priv->phys);
 	unmap_physmem(dwc3->regs, MAP_NOCACHE);
-- 
2.35.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH] usb: dwc3: Add support to reset usb ULPI phy
  2022-02-23 15:06 [PATCH] usb: dwc3: Add support to reset usb ULPI phy Michal Simek
@ 2022-02-23 17:31 ` Marek Vasut
  2022-03-03  8:47 ` Bin Meng
  1 sibling, 0 replies; 6+ messages in thread
From: Marek Vasut @ 2022-02-23 17:31 UTC (permalink / raw)
  To: Michal Simek, u-boot, git
  Cc: T Karthik Reddy, Angus Ainslie, Kunihiko Hayashi, Michael Walle,
	Priyanka Jain, Simon Glass, Bin Meng

On 2/23/22 16:06, Michal Simek wrote:
> From: T Karthik Reddy <t.karthik.reddy@xilinx.com>
> 
> When usb PHY initialization is done, the PHY need to be reset.
> 
> Signed-off-by: T Karthik Reddy <t.karthik.reddy@xilinx.com>
> Signed-off-by: Michal Simek <michal.simek@xilinx.com>
> ---
> 
>   drivers/usb/dwc3/Kconfig        |  2 +-
>   drivers/usb/dwc3/dwc3-generic.c | 28 ++++++++++++++++++++++++++++
>   2 files changed, 29 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/usb/dwc3/Kconfig b/drivers/usb/dwc3/Kconfig
> index 62aa65bf0cd2..685bda3729e5 100644
> --- a/drivers/usb/dwc3/Kconfig
> +++ b/drivers/usb/dwc3/Kconfig
> @@ -25,7 +25,7 @@ config USB_DWC3_OMAP
>   
>   config USB_DWC3_GENERIC
>   	bool "Generic implementation of a DWC3 wrapper (aka dwc3 glue)"
> -	depends on DM_USB && USB_DWC3 && MISC
> +	depends on DM_USB && USB_DWC3 && MISC && DM_GPIO
>   	help
>   	  Select this for Xilinx ZynqMP and similar Platforms.
>   	  This wrapper supports Host and Peripheral operation modes.
> diff --git a/drivers/usb/dwc3/dwc3-generic.c b/drivers/usb/dwc3/dwc3-generic.c
> index b1e019b5b91a..17d35a6dc60c 100644
> --- a/drivers/usb/dwc3/dwc3-generic.c
> +++ b/drivers/usb/dwc3/dwc3-generic.c
> @@ -25,6 +25,7 @@
>   #include <reset.h>
>   #include <clk.h>
>   #include <usb/xhci.h>
> +#include <asm/gpio.h>
>   
>   struct dwc3_glue_data {
>   	struct clk_bulk		clks;
> @@ -42,6 +43,7 @@ struct dwc3_generic_priv {
>   	void *base;
>   	struct dwc3 dwc3;
>   	struct phy_bulk phys;
> +	struct gpio_desc ulpi_reset;
>   };
>   
>   struct dwc3_generic_host_priv {
> @@ -77,6 +79,26 @@ static int dwc3_generic_probe(struct udevice *dev,
>   	if (rc && rc != -ENOTSUPP)
>   		return rc;
>   
> +	if (device_is_compatible(dev->parent, "xlnx,zynqmp-dwc3")) {
> +		rc = gpio_request_by_name(dev->parent, "reset-gpios", 0,
> +					  &priv->ulpi_reset, GPIOD_ACTIVE_LOW);
> +		if (rc != -EBUSY && rc)
> +			return rc;
> +
> +		/* Toggle ulpi to reset the phy. */
> +		rc = dm_gpio_set_value(&priv->ulpi_reset, 1);
> +		if (rc)
> +			return rc;
> +
> +		mdelay(5);
> +
> +		rc = dm_gpio_set_value(&priv->ulpi_reset, 0);
> +		if (rc)
> +			return rc;
> +
> +		mdelay(5);
> +	}
> +
>   	if (device_is_compatible(dev->parent, "rockchip,rk3399-dwc3"))
>   		reset_deassert_bulk(&glue->resets);
>   
> @@ -98,6 +120,12 @@ static int dwc3_generic_remove(struct udevice *dev,
>   {
>   	struct dwc3 *dwc3 = &priv->dwc3;
>   
> +	if (device_is_compatible(dev->parent, "xlnx,zynqmp-dwc3")) {
> +		struct gpio_desc *ulpi_reset = &priv->ulpi_reset;
> +
> +		dm_gpio_free(ulpi_reset->dev, ulpi_reset);
> +	}
> +
>   	dwc3_remove(dwc3);
>   	dwc3_shutdown_phy(dev, &priv->phys);
>   	unmap_physmem(dwc3->regs, MAP_NOCACHE);

CC Bin please.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] usb: dwc3: Add support to reset usb ULPI phy
  2022-02-23 15:06 [PATCH] usb: dwc3: Add support to reset usb ULPI phy Michal Simek
  2022-02-23 17:31 ` Marek Vasut
@ 2022-03-03  8:47 ` Bin Meng
  2022-03-04 11:35   ` T Karthik Reddy
  1 sibling, 1 reply; 6+ messages in thread
From: Bin Meng @ 2022-03-03  8:47 UTC (permalink / raw)
  To: Michal Simek
  Cc: U-Boot Mailing List, git, T Karthik Reddy, Angus Ainslie,
	Kunihiko Hayashi, Marek Vasut, Michael Walle, Priyanka Jain,
	Simon Glass

On Wed, Feb 23, 2022 at 11:07 PM Michal Simek <michal.simek@xilinx.com> wrote:
>
> From: T Karthik Reddy <t.karthik.reddy@xilinx.com>
>
> When usb PHY initialization is done, the PHY need to be reset.
>
> Signed-off-by: T Karthik Reddy <t.karthik.reddy@xilinx.com>
> Signed-off-by: Michal Simek <michal.simek@xilinx.com>
> ---
>
>  drivers/usb/dwc3/Kconfig        |  2 +-
>  drivers/usb/dwc3/dwc3-generic.c | 28 ++++++++++++++++++++++++++++
>  2 files changed, 29 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/usb/dwc3/Kconfig b/drivers/usb/dwc3/Kconfig
> index 62aa65bf0cd2..685bda3729e5 100644
> --- a/drivers/usb/dwc3/Kconfig
> +++ b/drivers/usb/dwc3/Kconfig
> @@ -25,7 +25,7 @@ config USB_DWC3_OMAP
>
>  config USB_DWC3_GENERIC
>         bool "Generic implementation of a DWC3 wrapper (aka dwc3 glue)"
> -       depends on DM_USB && USB_DWC3 && MISC
> +       depends on DM_USB && USB_DWC3 && MISC && DM_GPIO
>         help
>           Select this for Xilinx ZynqMP and similar Platforms.
>           This wrapper supports Host and Peripheral operation modes.
> diff --git a/drivers/usb/dwc3/dwc3-generic.c b/drivers/usb/dwc3/dwc3-generic.c
> index b1e019b5b91a..17d35a6dc60c 100644
> --- a/drivers/usb/dwc3/dwc3-generic.c
> +++ b/drivers/usb/dwc3/dwc3-generic.c
> @@ -25,6 +25,7 @@
>  #include <reset.h>
>  #include <clk.h>
>  #include <usb/xhci.h>
> +#include <asm/gpio.h>
>
>  struct dwc3_glue_data {
>         struct clk_bulk         clks;
> @@ -42,6 +43,7 @@ struct dwc3_generic_priv {
>         void *base;
>         struct dwc3 dwc3;
>         struct phy_bulk phys;
> +       struct gpio_desc ulpi_reset;
>  };
>
>  struct dwc3_generic_host_priv {
> @@ -77,6 +79,26 @@ static int dwc3_generic_probe(struct udevice *dev,
>         if (rc && rc != -ENOTSUPP)
>                 return rc;
>
> +       if (device_is_compatible(dev->parent, "xlnx,zynqmp-dwc3")) {
> +               rc = gpio_request_by_name(dev->parent, "reset-gpios", 0,
> +                                         &priv->ulpi_reset, GPIOD_ACTIVE_LOW);
> +               if (rc != -EBUSY && rc)
> +                       return rc;

What happens if rc == -EBUSY?

> +
> +               /* Toggle ulpi to reset the phy. */
> +               rc = dm_gpio_set_value(&priv->ulpi_reset, 1);
> +               if (rc)
> +                       return rc;
> +
> +               mdelay(5);
> +
> +               rc = dm_gpio_set_value(&priv->ulpi_reset, 0);
> +               if (rc)
> +                       return rc;
> +
> +               mdelay(5);
> +       }
> +
>         if (device_is_compatible(dev->parent, "rockchip,rk3399-dwc3"))
>                 reset_deassert_bulk(&glue->resets);
>
> @@ -98,6 +120,12 @@ static int dwc3_generic_remove(struct udevice *dev,
>  {
>         struct dwc3 *dwc3 = &priv->dwc3;
>
> +       if (device_is_compatible(dev->parent, "xlnx,zynqmp-dwc3")) {
> +               struct gpio_desc *ulpi_reset = &priv->ulpi_reset;
> +
> +               dm_gpio_free(ulpi_reset->dev, ulpi_reset);
> +       }
> +
>         dwc3_remove(dwc3);
>         dwc3_shutdown_phy(dev, &priv->phys);
>         unmap_physmem(dwc3->regs, MAP_NOCACHE);
>

Regards,
Bin

^ permalink raw reply	[flat|nested] 6+ messages in thread

* RE: [PATCH] usb: dwc3: Add support to reset usb ULPI phy
  2022-03-03  8:47 ` Bin Meng
@ 2022-03-04 11:35   ` T Karthik Reddy
  2022-03-04 14:45     ` Bin Meng
  0 siblings, 1 reply; 6+ messages in thread
From: T Karthik Reddy @ 2022-03-04 11:35 UTC (permalink / raw)
  To: Bin Meng, Michal Simek
  Cc: U-Boot Mailing List, git, Angus Ainslie, Kunihiko Hayashi,
	Marek Vasut, Michael Walle, Priyanka Jain, Simon Glass,
	Ashok Reddy Soma

Hi Bin Meng,

> -----Original Message-----
> From: Bin Meng <bmeng.cn@gmail.com>
> Sent: Thursday, March 3, 2022 2:18 PM
> To: Michal Simek <michals@xilinx.com>
> Cc: U-Boot Mailing List <u-boot@lists.denx.de>; git <git@xilinx.com>; T
> Karthik Reddy <tkarthik@xilinx.com>; Angus Ainslie <angus@akkea.ca>;
> Kunihiko Hayashi <hayashi.kunihiko@socionext.com>; Marek Vasut
> <marex@denx.de>; Michael Walle <michael@walle.cc>; Priyanka Jain
> <priyanka.jain@nxp.com>; Simon Glass <sjg@chromium.org>
> Subject: Re: [PATCH] usb: dwc3: Add support to reset usb ULPI phy
> 
> On Wed, Feb 23, 2022 at 11:07 PM Michal Simek <michal.simek@xilinx.com>
> wrote:
> >
> > From: T Karthik Reddy <t.karthik.reddy@xilinx.com>
> >
> > When usb PHY initialization is done, the PHY need to be reset.
> >
> > Signed-off-by: T Karthik Reddy <t.karthik.reddy@xilinx.com>
> > Signed-off-by: Michal Simek <michal.simek@xilinx.com>
> > ---
> >
> >  drivers/usb/dwc3/Kconfig        |  2 +-
> >  drivers/usb/dwc3/dwc3-generic.c | 28
> ++++++++++++++++++++++++++++
> >  2 files changed, 29 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/usb/dwc3/Kconfig b/drivers/usb/dwc3/Kconfig index
> > 62aa65bf0cd2..685bda3729e5 100644
> > --- a/drivers/usb/dwc3/Kconfig
> > +++ b/drivers/usb/dwc3/Kconfig
> > @@ -25,7 +25,7 @@ config USB_DWC3_OMAP
> >
> >  config USB_DWC3_GENERIC
> >         bool "Generic implementation of a DWC3 wrapper (aka dwc3 glue)"
> > -       depends on DM_USB && USB_DWC3 && MISC
> > +       depends on DM_USB && USB_DWC3 && MISC && DM_GPIO
> >         help
> >           Select this for Xilinx ZynqMP and similar Platforms.
> >           This wrapper supports Host and Peripheral operation modes.
> > diff --git a/drivers/usb/dwc3/dwc3-generic.c
> > b/drivers/usb/dwc3/dwc3-generic.c index b1e019b5b91a..17d35a6dc60c
> > 100644
> > --- a/drivers/usb/dwc3/dwc3-generic.c
> > +++ b/drivers/usb/dwc3/dwc3-generic.c
> > @@ -25,6 +25,7 @@
> >  #include <reset.h>
> >  #include <clk.h>
> >  #include <usb/xhci.h>
> > +#include <asm/gpio.h>
> >
> >  struct dwc3_glue_data {
> >         struct clk_bulk         clks;
> > @@ -42,6 +43,7 @@ struct dwc3_generic_priv {
> >         void *base;
> >         struct dwc3 dwc3;
> >         struct phy_bulk phys;
> > +       struct gpio_desc ulpi_reset;
> >  };
> >
> >  struct dwc3_generic_host_priv {
> > @@ -77,6 +79,26 @@ static int dwc3_generic_probe(struct udevice *dev,
> >         if (rc && rc != -ENOTSUPP)
> >                 return rc;
> >
> > +       if (device_is_compatible(dev->parent, "xlnx,zynqmp-dwc3")) {
> > +               rc = gpio_request_by_name(dev->parent, "reset-gpios", 0,
> > +                                         &priv->ulpi_reset, GPIOD_ACTIVE_LOW);
> > +               if (rc != -EBUSY && rc)
> > +                       return rc;
> 
> What happens if rc == -EBUSY?

Every time we do usb reset, gpio is requested again and returns EBUSY.
We want to avoid returning probe with error, if rc == -EBUSY.

Thanks
T Karthik

> 
> > +
> > +               /* Toggle ulpi to reset the phy. */
> > +               rc = dm_gpio_set_value(&priv->ulpi_reset, 1);
> > +               if (rc)
> > +                       return rc;
> > +
> > +               mdelay(5);
> > +
> > +               rc = dm_gpio_set_value(&priv->ulpi_reset, 0);
> > +               if (rc)
> > +                       return rc;
> > +
> > +               mdelay(5);
> > +       }
> > +
> >         if (device_is_compatible(dev->parent, "rockchip,rk3399-dwc3"))
> >                 reset_deassert_bulk(&glue->resets);
> >
> > @@ -98,6 +120,12 @@ static int dwc3_generic_remove(struct udevice
> > *dev,  {
> >         struct dwc3 *dwc3 = &priv->dwc3;
> >
> > +       if (device_is_compatible(dev->parent, "xlnx,zynqmp-dwc3")) {
> > +               struct gpio_desc *ulpi_reset = &priv->ulpi_reset;
> > +
> > +               dm_gpio_free(ulpi_reset->dev, ulpi_reset);
> > +       }
> > +
> >         dwc3_remove(dwc3);
> >         dwc3_shutdown_phy(dev, &priv->phys);
> >         unmap_physmem(dwc3->regs, MAP_NOCACHE);
> >
> 
> Regards,
> Bin

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] usb: dwc3: Add support to reset usb ULPI phy
  2022-03-04 11:35   ` T Karthik Reddy
@ 2022-03-04 14:45     ` Bin Meng
  2022-03-04 15:10       ` Michal Simek
  0 siblings, 1 reply; 6+ messages in thread
From: Bin Meng @ 2022-03-04 14:45 UTC (permalink / raw)
  To: T Karthik Reddy
  Cc: Michal Simek, U-Boot Mailing List, git, Angus Ainslie,
	Kunihiko Hayashi, Marek Vasut, Michael Walle, Priyanka Jain,
	Simon Glass, Ashok Reddy Soma

On Fri, Mar 4, 2022 at 7:36 PM T Karthik Reddy <tkarthik@xilinx.com> wrote:
>
> Hi Bin Meng,
>
> > -----Original Message-----
> > From: Bin Meng <bmeng.cn@gmail.com>
> > Sent: Thursday, March 3, 2022 2:18 PM
> > To: Michal Simek <michals@xilinx.com>
> > Cc: U-Boot Mailing List <u-boot@lists.denx.de>; git <git@xilinx.com>; T
> > Karthik Reddy <tkarthik@xilinx.com>; Angus Ainslie <angus@akkea.ca>;
> > Kunihiko Hayashi <hayashi.kunihiko@socionext.com>; Marek Vasut
> > <marex@denx.de>; Michael Walle <michael@walle.cc>; Priyanka Jain
> > <priyanka.jain@nxp.com>; Simon Glass <sjg@chromium.org>
> > Subject: Re: [PATCH] usb: dwc3: Add support to reset usb ULPI phy
> >
> > On Wed, Feb 23, 2022 at 11:07 PM Michal Simek <michal.simek@xilinx.com>
> > wrote:
> > >
> > > From: T Karthik Reddy <t.karthik.reddy@xilinx.com>
> > >
> > > When usb PHY initialization is done, the PHY need to be reset.
> > >
> > > Signed-off-by: T Karthik Reddy <t.karthik.reddy@xilinx.com>
> > > Signed-off-by: Michal Simek <michal.simek@xilinx.com>
> > > ---
> > >
> > >  drivers/usb/dwc3/Kconfig        |  2 +-
> > >  drivers/usb/dwc3/dwc3-generic.c | 28
> > ++++++++++++++++++++++++++++
> > >  2 files changed, 29 insertions(+), 1 deletion(-)
> > >
> > > diff --git a/drivers/usb/dwc3/Kconfig b/drivers/usb/dwc3/Kconfig index
> > > 62aa65bf0cd2..685bda3729e5 100644
> > > --- a/drivers/usb/dwc3/Kconfig
> > > +++ b/drivers/usb/dwc3/Kconfig
> > > @@ -25,7 +25,7 @@ config USB_DWC3_OMAP
> > >
> > >  config USB_DWC3_GENERIC
> > >         bool "Generic implementation of a DWC3 wrapper (aka dwc3 glue)"
> > > -       depends on DM_USB && USB_DWC3 && MISC
> > > +       depends on DM_USB && USB_DWC3 && MISC && DM_GPIO
> > >         help
> > >           Select this for Xilinx ZynqMP and similar Platforms.
> > >           This wrapper supports Host and Peripheral operation modes.
> > > diff --git a/drivers/usb/dwc3/dwc3-generic.c
> > > b/drivers/usb/dwc3/dwc3-generic.c index b1e019b5b91a..17d35a6dc60c
> > > 100644
> > > --- a/drivers/usb/dwc3/dwc3-generic.c
> > > +++ b/drivers/usb/dwc3/dwc3-generic.c
> > > @@ -25,6 +25,7 @@
> > >  #include <reset.h>
> > >  #include <clk.h>
> > >  #include <usb/xhci.h>
> > > +#include <asm/gpio.h>
> > >
> > >  struct dwc3_glue_data {
> > >         struct clk_bulk         clks;
> > > @@ -42,6 +43,7 @@ struct dwc3_generic_priv {
> > >         void *base;
> > >         struct dwc3 dwc3;
> > >         struct phy_bulk phys;
> > > +       struct gpio_desc ulpi_reset;
> > >  };
> > >
> > >  struct dwc3_generic_host_priv {
> > > @@ -77,6 +79,26 @@ static int dwc3_generic_probe(struct udevice *dev,
> > >         if (rc && rc != -ENOTSUPP)
> > >                 return rc;
> > >
> > > +       if (device_is_compatible(dev->parent, "xlnx,zynqmp-dwc3")) {
> > > +               rc = gpio_request_by_name(dev->parent, "reset-gpios", 0,
> > > +                                         &priv->ulpi_reset, GPIOD_ACTIVE_LOW);
> > > +               if (rc != -EBUSY && rc)
> > > +                       return rc;
> >
> > What happens if rc == -EBUSY?
>
> Every time we do usb reset, gpio is requested again and returns EBUSY.
> We want to avoid returning probe with error, if rc == -EBUSY.
>

What about the very first time it returns EBUSY?

Regards,
Bin

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] usb: dwc3: Add support to reset usb ULPI phy
  2022-03-04 14:45     ` Bin Meng
@ 2022-03-04 15:10       ` Michal Simek
  0 siblings, 0 replies; 6+ messages in thread
From: Michal Simek @ 2022-03-04 15:10 UTC (permalink / raw)
  To: Bin Meng, T Karthik Reddy
  Cc: U-Boot Mailing List, git, Angus Ainslie, Kunihiko Hayashi,
	Marek Vasut, Michael Walle, Priyanka Jain, Simon Glass,
	Ashok Reddy Soma



On 3/4/22 15:45, Bin Meng wrote:
> On Fri, Mar 4, 2022 at 7:36 PM T Karthik Reddy <tkarthik@xilinx.com> wrote:
>>
>> Hi Bin Meng,
>>
>>> -----Original Message-----
>>> From: Bin Meng <bmeng.cn@gmail.com>
>>> Sent: Thursday, March 3, 2022 2:18 PM
>>> To: Michal Simek <michals@xilinx.com>
>>> Cc: U-Boot Mailing List <u-boot@lists.denx.de>; git <git@xilinx.com>; T
>>> Karthik Reddy <tkarthik@xilinx.com>; Angus Ainslie <angus@akkea.ca>;
>>> Kunihiko Hayashi <hayashi.kunihiko@socionext.com>; Marek Vasut
>>> <marex@denx.de>; Michael Walle <michael@walle.cc>; Priyanka Jain
>>> <priyanka.jain@nxp.com>; Simon Glass <sjg@chromium.org>
>>> Subject: Re: [PATCH] usb: dwc3: Add support to reset usb ULPI phy
>>>
>>> On Wed, Feb 23, 2022 at 11:07 PM Michal Simek <michal.simek@xilinx.com>
>>> wrote:
>>>>
>>>> From: T Karthik Reddy <t.karthik.reddy@xilinx.com>
>>>>
>>>> When usb PHY initialization is done, the PHY need to be reset.
>>>>
>>>> Signed-off-by: T Karthik Reddy <t.karthik.reddy@xilinx.com>
>>>> Signed-off-by: Michal Simek <michal.simek@xilinx.com>
>>>> ---
>>>>
>>>>   drivers/usb/dwc3/Kconfig        |  2 +-
>>>>   drivers/usb/dwc3/dwc3-generic.c | 28
>>> ++++++++++++++++++++++++++++
>>>>   2 files changed, 29 insertions(+), 1 deletion(-)
>>>>
>>>> diff --git a/drivers/usb/dwc3/Kconfig b/drivers/usb/dwc3/Kconfig index
>>>> 62aa65bf0cd2..685bda3729e5 100644
>>>> --- a/drivers/usb/dwc3/Kconfig
>>>> +++ b/drivers/usb/dwc3/Kconfig
>>>> @@ -25,7 +25,7 @@ config USB_DWC3_OMAP
>>>>
>>>>   config USB_DWC3_GENERIC
>>>>          bool "Generic implementation of a DWC3 wrapper (aka dwc3 glue)"
>>>> -       depends on DM_USB && USB_DWC3 && MISC
>>>> +       depends on DM_USB && USB_DWC3 && MISC && DM_GPIO
>>>>          help
>>>>            Select this for Xilinx ZynqMP and similar Platforms.
>>>>            This wrapper supports Host and Peripheral operation modes.
>>>> diff --git a/drivers/usb/dwc3/dwc3-generic.c
>>>> b/drivers/usb/dwc3/dwc3-generic.c index b1e019b5b91a..17d35a6dc60c
>>>> 100644
>>>> --- a/drivers/usb/dwc3/dwc3-generic.c
>>>> +++ b/drivers/usb/dwc3/dwc3-generic.c
>>>> @@ -25,6 +25,7 @@
>>>>   #include <reset.h>
>>>>   #include <clk.h>
>>>>   #include <usb/xhci.h>
>>>> +#include <asm/gpio.h>
>>>>
>>>>   struct dwc3_glue_data {
>>>>          struct clk_bulk         clks;
>>>> @@ -42,6 +43,7 @@ struct dwc3_generic_priv {
>>>>          void *base;
>>>>          struct dwc3 dwc3;
>>>>          struct phy_bulk phys;
>>>> +       struct gpio_desc ulpi_reset;
>>>>   };
>>>>
>>>>   struct dwc3_generic_host_priv {
>>>> @@ -77,6 +79,26 @@ static int dwc3_generic_probe(struct udevice *dev,
>>>>          if (rc && rc != -ENOTSUPP)
>>>>                  return rc;
>>>>
>>>> +       if (device_is_compatible(dev->parent, "xlnx,zynqmp-dwc3")) {
>>>> +               rc = gpio_request_by_name(dev->parent, "reset-gpios", 0,
>>>> +                                         &priv->ulpi_reset, GPIOD_ACTIVE_LOW);
>>>> +               if (rc != -EBUSY && rc)
>>>> +                       return rc;
>>>
>>> What happens if rc == -EBUSY?
>>
>> Every time we do usb reset, gpio is requested again and returns EBUSY.
>> We want to avoid returning probe with error, if rc == -EBUSY.
>>
> 
> What about the very first time it returns EBUSY?

Was chatting with Karthik. We have free gpio in remove function that this stayed 
there and we forget to remove it. It is not needed when you free gpio.

I sent v2 already.

Thanks,
Michal

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2022-03-04 15:10 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-02-23 15:06 [PATCH] usb: dwc3: Add support to reset usb ULPI phy Michal Simek
2022-02-23 17:31 ` Marek Vasut
2022-03-03  8:47 ` Bin Meng
2022-03-04 11:35   ` T Karthik Reddy
2022-03-04 14:45     ` Bin Meng
2022-03-04 15:10       ` Michal Simek

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.