All of lore.kernel.org
 help / color / mirror / Atom feed
From: Robert Hancock <robert.hancock@calian.com>
To: "sean.anderson@seco.com" <sean.anderson@seco.com>,
	"linux-usb@vger.kernel.org" <linux-usb@vger.kernel.org>
Cc: "manish.narani@xilinx.com" <manish.narani@xilinx.com>,
	"michal.simek@xilinx.com" <michal.simek@xilinx.com>,
	"piyush.mehta@xilinx.com" <piyush.mehta@xilinx.com>,
	"gregkh@linuxfoundation.org" <gregkh@linuxfoundation.org>,
	"balbi@kernel.org" <balbi@kernel.org>,
	"robh+dt@kernel.org" <robh+dt@kernel.org>,
	"devicetree@vger.kernel.org" <devicetree@vger.kernel.org>
Subject: Re: [PATCH v8 3/3] usb: dwc3: xilinx: Add ULPI PHY reset handling
Date: Thu, 27 Jan 2022 21:45:11 +0000	[thread overview]
Message-ID: <6aa43d6182286e197b3d8361f65747a3b657d490.camel@calian.com> (raw)
In-Reply-To: <a0505ff0-093b-eb67-98b0-b2c93a2771ab@seco.com>

On Thu, 2022-01-27 at 15:10 -0500, Sean Anderson wrote:
> Hi Rob,
> 
> On 1/26/22 6:40 PM, Robert Hancock wrote:
> > Hook up an optional GPIO-based reset for the connected USB ULPI PHY
> > device. This is typically already done by the first-stage boot loader,
> > however it can be more robust to ensure this reset is done prior to
> > loading the driver in Linux.
> > 
> > Based on a patch "usb: dwc3: xilinx: Add gpio-reset support" in the
> > Xilinx kernel tree by Piyush Mehta <piyush.mehta@xilinx.com>.
> > 
> > Signed-off-by: Robert Hancock <robert.hancock@calian.com>
> > ---
> >  drivers/usb/dwc3/dwc3-xilinx.c | 19 +++++++++++++++++++
> >  1 file changed, 19 insertions(+)
> > 
> > diff --git a/drivers/usb/dwc3/dwc3-xilinx.c b/drivers/usb/dwc3/dwc3-
> > xilinx.c
> > index a6f3a9b38789..1ee6011ada44 100644
> > --- a/drivers/usb/dwc3/dwc3-xilinx.c
> > +++ b/drivers/usb/dwc3/dwc3-xilinx.c
> > @@ -11,6 +11,7 @@
> >  #include <linux/slab.h>
> >  #include <linux/clk.h>
> >  #include <linux/of.h>
> > +#include <linux/gpio/consumer.h>
> >  #include <linux/platform_device.h>
> >  #include <linux/dma-mapping.h>
> >  #include <linux/of_platform.h>
> > @@ -101,6 +102,7 @@ static int dwc3_xlnx_init_zynqmp(struct dwc3_xlnx
> > *priv_data)
> >  	struct phy		*usb3_phy;
> >  	int			ret = 0;
> >  	u32			reg;
> > +	struct gpio_desc        *reset_gpio;
> >  
> >  	usb3_phy = devm_phy_optional_get(dev, "usb3-phy");
> >  	if (IS_ERR(usb3_phy)) {
> > @@ -110,6 +112,14 @@ static int dwc3_xlnx_init_zynqmp(struct dwc3_xlnx
> > *priv_data)
> >  		goto err;
> >  	}
> >  
> > +	reset_gpio = devm_gpiod_get_optional(dev, "reset", GPIOD_OUT_HIGH);
> > +	if (IS_ERR(reset_gpio)) {
> > +		ret = PTR_ERR(reset_gpio);
> > +		dev_err_probe(dev, ret,
> > +			      "Failed to get reset gpio\n");
> > +		goto err;
> > +	}
> > +
> >  	/*
> >  	 * The following core resets are not required unless a USB3 PHY
> >  	 * is used, and the subsequent register settings are not required
> > @@ -201,6 +211,15 @@ static int dwc3_xlnx_init_zynqmp(struct dwc3_xlnx
> > *priv_data)
> >  	}
> >  
> >  skip_usb3_phy:
> > +	/* ulpi reset via gpio-modepin or gpio-framework driver */
> > +	if (reset_gpio) {
> > +		/* Toggle ulpi to reset the phy. */
> > +		gpiod_set_value(reset_gpio, 0);
> > +		usleep_range(5000, 10000); /* delay */
> > +		gpiod_set_value(reset_gpio, 1);
> > +		usleep_range(5000, 10000); /* delay */
> > +	}
> > +
> >  	/*
> >  	 * This routes the USB DMA traffic to go through FPD path instead
> >  	 * of reaching DDR directly. This traffic routing is needed to
> > 
> 
> Do we need to have this in dwc3? Why not just use the usb-nop-xceiv driver
> (aka usb_phy_generic)?

I hadn't noticed that option. Just tried it out and it seems like it does
what's needed. So patches 2 and 3 can be dispensed with. Patch 1 is still
needed however, I may resubmit that as a standalone patch..

> 
> --Sean
-- 
Robert Hancock
Senior Hardware Designer, Calian Advanced Technologies
www.calian.com

  reply	other threads:[~2022-01-27 21:45 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-01-26 23:40 [PATCH v8 0/3] Xilinx ZynqMP USB fixes Robert Hancock
2022-01-26 23:40 ` [PATCH v8 1/3] usb: dwc3: xilinx: fix uninitialized return value Robert Hancock
2022-01-26 23:40 ` [PATCH v8 2/3] dt-bindings: usb: dwc3-xilinx: Added reset-gpios Robert Hancock
2022-02-02  0:58   ` Rob Herring
2022-01-26 23:40 ` [PATCH v8 3/3] usb: dwc3: xilinx: Add ULPI PHY reset handling Robert Hancock
2022-01-27 20:10   ` Sean Anderson
2022-01-27 21:45     ` Robert Hancock [this message]
2022-02-09 16:56   ` Piyush Mehta

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=6aa43d6182286e197b3d8361f65747a3b657d490.camel@calian.com \
    --to=robert.hancock@calian.com \
    --cc=balbi@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=manish.narani@xilinx.com \
    --cc=michal.simek@xilinx.com \
    --cc=piyush.mehta@xilinx.com \
    --cc=robh+dt@kernel.org \
    --cc=sean.anderson@seco.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.