From: Matthias Kaehlcke <mka@chromium.org>
To: Alexander Stein <alexander.stein@ew.tq-group.com>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Rob Herring <robh+dt@kernel.org>,
Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>,
linux-usb@vger.kernel.org, devicetree@vger.kernel.org
Subject: Re: [PATCH v2 2/3] usb: misc: onboard_usb_hub: Add reset-gpio support
Date: Thu, 21 Jul 2022 13:25:39 -0700 [thread overview]
Message-ID: <Ytm2Q1gqbRggpqDK@google.com> (raw)
In-Reply-To: <2543198.Lt9SDvczpP@steina-w>
On Wed, Jul 20, 2022 at 09:15:12AM +0200, Alexander Stein wrote:
> Hi Matthias,
>
> Am Freitag, 15. Juli 2022, 21:44:12 CEST schrieb Matthias Kaehlcke:
> > On Fri, Jul 15, 2022 at 09:32:59AM +0200, Alexander Stein wrote:
> > > Despite default reset upon probe, release reset line after powering up
> > > the hub and assert reset again before powering down.
> > >
> > > Signed-off-by: Alexander Stein <alexander.stein@ew.tq-group.com>
> > > ---
> > > Changes in v2:
> > > * Use device specific sleep times, if present
> > > * Use fsleep instead of usleep_range
> > >
> > > drivers/usb/misc/onboard_usb_hub.c | 29 +++++++++++++++++++++++++++++
> > > drivers/usb/misc/onboard_usb_hub.h | 5 +++++
> > > 2 files changed, 34 insertions(+)
> > >
> > > diff --git a/drivers/usb/misc/onboard_usb_hub.c
> > > b/drivers/usb/misc/onboard_usb_hub.c index 6b9b949d17d3..1dd7f4767def
> > > 100644
> > > --- a/drivers/usb/misc/onboard_usb_hub.c
> > > +++ b/drivers/usb/misc/onboard_usb_hub.c
> > > @@ -7,6 +7,7 @@
> > >
> > > #include <linux/device.h>
> > > #include <linux/export.h>
> > >
> > > +#include <linux/gpio/consumer.h>
> > >
> > > #include <linux/init.h>
> > > #include <linux/kernel.h>
> > > #include <linux/list.h>
> > >
> > > @@ -38,6 +39,8 @@ struct usbdev_node {
> > >
> > > struct onboard_hub {
> > >
> > > struct regulator *vdd;
> > > struct device *dev;
> > >
> > > + const struct onboard_hub_devtype_data *devtype_data;
> >
> > This kind of device specific data is often call platform data, let's
> > call the struct 'onboard_hub_pdata' and the field 'pdata'?
>
> I took flexcan as a reference, but I do not mind using other names if that is
> preferred.
>
> > > + struct gpio_desc *reset_gpio;
> > >
> > > bool always_powered_in_suspend;
> > > bool is_powered_on;
> > > bool going_away;
> > >
> > > @@ -56,6 +59,11 @@ static int onboard_hub_power_on(struct onboard_hub
> > > *hub)
> > >
> > > return err;
> > >
> > > }
> > >
> > > + if (hub->devtype_data)
> >
> > Instead of these checks let's make sure all hubs have pdata. Actually your
> > onboard_hub_probe() already esnures that the field is assigned.
>
> For Realtek hubs (no platform data yet), of_id->data therefore hub-
> >devtype_data is NULL.
> But I agree that providing platformdata for all hubs seems reasonable to get
> rid of these checks.
>
> > > + fsleep(hub->devtype_data->power_stable_time);
> > > + if (hub->reset_gpio)
> > > + gpiod_set_value_cansleep(hub->reset_gpio, 0);
> >
> > I would have expected:
> >
> > if (hub->reset_gpio) {
> > fsleep(hub->devtype_data->power_stable_time);
> > gpiod_set_value_cansleep(hub->reset_gpio, 0);
> > }
> >
> > For the TUSB8041 the 'power_stable_time' (td2 in the datasheet) is "VDD and
> > VDD33 stable before de-assertion of GRSTz", so no delay without reset.
>
> Your suggestion only works if you control the reset line (GRSTz) by GPIO. If
> this line is controlled by hardware using RC circuits this waiting time still
> has to be respected when power is supplied.
> I prefer that the USB hub is properly reset once this function exits. Without
> waiting time the hardware controlled GRSTz might not yet be at a proper level.
Ok, in that case let's omit the check for 'hub->reset_gpio' and just do:
fsleep(hub->devtype_data->power_stable_time);
gpiod_set_value_cansleep(hub->reset_gpio, 0);
The point of adding the check was to skip the delay when no reset GPIO is
specified, but apparently that's not what we actually want.
next prev parent reply other threads:[~2022-07-21 20:25 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-07-15 7:32 [PATCH v2 1/3] dt-bindings: usb: Add binding for TI USB8041 hub controller Alexander Stein
2022-07-15 7:32 ` [PATCH v2 2/3] usb: misc: onboard_usb_hub: Add reset-gpio support Alexander Stein
2022-07-15 19:44 ` Matthias Kaehlcke
2022-07-20 7:15 ` Alexander Stein
2022-07-21 20:25 ` Matthias Kaehlcke [this message]
2022-07-15 7:33 ` [PATCH v2 3/3] usb: misc: onboard_usb_hub: Add TI USB8041 hub support Alexander Stein
2022-07-15 19:50 ` Matthias Kaehlcke
2022-07-20 7:18 ` Alexander Stein
2022-07-21 20:38 ` Matthias Kaehlcke
2022-07-15 8:17 ` [PATCH v2 1/3] dt-bindings: usb: Add binding for TI USB8041 hub controller Krzysztof Kozlowski
2022-07-20 6:58 ` Alexander Stein
2022-07-15 23:53 ` Matthias Kaehlcke
2022-07-20 6:57 ` Alexander Stein
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=Ytm2Q1gqbRggpqDK@google.com \
--to=mka@chromium.org \
--cc=alexander.stein@ew.tq-group.com \
--cc=devicetree@vger.kernel.org \
--cc=gregkh@linuxfoundation.org \
--cc=krzysztof.kozlowski+dt@linaro.org \
--cc=linux-usb@vger.kernel.org \
--cc=robh+dt@kernel.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).