From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
To: Chen-Yu Tsai <wenst@chromium.org>
Cc: Rob Herring <robh@kernel.org>,
Saravana Kannan <saravanak@google.com>,
Matthias Brugger <matthias.bgg@gmail.com>,
AngeloGioacchino Del Regno
<angelogioacchino.delregno@collabora.com>,
Wolfram Sang <wsa@kernel.org>, Benson Leung <bleung@chromium.org>,
Tzung-Bi Shih <tzungbi@kernel.org>,
Mark Brown <broonie@kernel.org>,
Liam Girdwood <lgirdwood@gmail.com>,
chrome-platform@lists.linux.dev, devicetree@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
linux-mediatek@lists.infradead.org, linux-kernel@vger.kernel.org,
Douglas Anderson <dianders@chromium.org>,
Johan Hovold <johan@kernel.org>, Jiri Kosina <jikos@kernel.org>,
linux-i2c@vger.kernel.org
Subject: Re: [PATCH v4 4/6] i2c: of-prober: Add GPIO and regulator support
Date: Wed, 14 Aug 2024 16:53:01 +0300 [thread overview]
Message-ID: <Zry2vbJ-BT4mI0eO@smile.fi.intel.com> (raw)
In-Reply-To: <CAGXv+5E+D8oXr7nh67HEPermJYoRp+Xf+oqSefOiUoCpyoKYUQ@mail.gmail.com>
On Wed, Aug 14, 2024 at 07:34:00PM +0800, Chen-Yu Tsai wrote:
> On Tue, Aug 13, 2024 at 7:41 PM Andy Shevchenko
> <andriy.shevchenko@linux.intel.com> wrote:
> > On Thu, Aug 08, 2024 at 05:59:27PM +0800, Chen-Yu Tsai wrote:
...
> > > This adds GPIO and regulator management to the I2C OF component prober.
> > Can this be two patches?
>
> You mean one for GPIOs and one for regulators right? Sure.
Yes.
...
> > > +#define RESOURCE_MAX 8
> >
> > Badly (broadly) named constant. Is it not the same that defines arguments in
> > the OF phandle lookup? Can you use that instead?
>
> I'm not sure what you are referring to. This is how many unique instances
> of a given resource (GPIOs or regulators) the prober will track.
>
> MAX_TRACKED_RESOURCES maybe?
Better, but still ambiguous. We have a namespace approach, something like
I2C_PROBER_... I have checked the existing constant and it's not what you
want, so forget about that part, only name of the definition is questionable.
...
> > > +#define REGULATOR_SUFFIX "-supply"
> >
> > Name is bad, also move '-' to the code, it's not part of the suffix, it's a
> > separator AFAICT.
>
> OF_REGULATOR_SUPPLY_SUFFIX then?
>
> Also, "supply" is not a valid property. It is always "X-supply".
> Having the '-' directly in the string makes things simpler, albeit
> making the name slightly off.
Let's use proper SUFFIX and separator separately.
#define I2C_PROBER_..._SUFFIX "supply"
(or alike)
...
> > > + p = strstr(prop->name, REGULATOR_SUFFIX);
> >
> > strstr()?! Are you sure it will have no side effects on some interesting names?
> >
> > > + if (!p)
> > > + return 0;
> >
> > > + if (strcmp(p, REGULATOR_SUFFIX))
> > > + return 0;
> >
> > Ah, you do it this way...
> >
> > What about
>
> About? (feels like an unfinished comment)
Yes, sorry for that. Since you found a better alternative, no need to finish
this part :-)
> Looking around, it seems I could just rename and export "is_supply_name()"
> from drivers/regulator/of_regulator.c .
Even better!
Something similar most likely can be done with GPIO (if not, we are always open
to the ideas how to deduplicate the code).
...
> > > +#define GPIO_SUFFIX "-gpio"
> >
> > Bad define name, and why not "gpios"?
>
> "-gpio" in strstr() would match against both "foo-gpio" and "foo-gpios".
> More like laziness.
And opens can of worms with whatever ending of the property name.
Again, let's have something that GPIO library provides for everybody.
...
> > > + ret = of_parse_phandle_with_args_map(node, prop->name, "gpio", 0, &phargs);
> > > + if (ret)
> > > + return ret;
(1)
> > > + gpiod = fwnode_gpiod_get_index(fwnode, con_id, 0, GPIOD_ASIS, "i2c-of-prober");
> > > + if (IS_ERR(gpiod)) {
> > > + of_node_put(phargs.np);
> > > + return PTR_ERR(gpiod);
> > > + }
> >
> > Try not to mix fwnode and OF specifics. You may rely on fwnode for GPIO completely.
>
> Well, fwnode doesn't give a way to identify GPIOs without requesting them.
>
> Instead I think I could first request GPIOs exclusively, and if that fails
> try non-exclusive and see if that GPIO descriptor matches any known one.
> If not then something in the DT is broken and it should error out. Then
> the phandle parsing code could be dropped.
What I meant, the, e.g., (1) can be rewritten using fwnode API, but if you know
better way of doing things, then go for it.
> > > + if (data->gpiods_num == ARRAY_SIZE(data->gpiods)) {
> > > + of_node_put(phargs.np);
> > > + gpiod_put(gpiod);
> > > + return -ENOMEM;
> > > + }
...
> > > + for (int i = data->regulators_num; i >= 0; i--)
> > > + regulator_put(data->regulators[i]);
> >
> > Bulk regulators?
>
> Bulk regulators API uses its own data structure which is not just an
> array. So unlike gpiod_*_array() it can't be used in this case.
But it sounds like a bulk regulator case...
Whatever, it's Mark's area and he might suggest something better.
--
With Best Regards,
Andy Shevchenko
next prev parent reply other threads:[~2024-08-14 13:53 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-08-08 9:59 [PATCH v4 0/6] platform/chrome: Introduce DT hardware prober Chen-Yu Tsai
2024-08-08 9:59 ` [PATCH v4 1/6] of: dynamic: Add of_changeset_update_prop_string Chen-Yu Tsai
2024-08-13 11:11 ` Andy Shevchenko
2024-08-13 19:18 ` Rob Herring
2024-08-14 4:26 ` Chen-Yu Tsai
2024-08-08 9:59 ` [PATCH v4 2/6] regulator: Add regulator_of_get_optional() for pure DT regulator lookup Chen-Yu Tsai
2024-08-13 11:22 ` Andy Shevchenko
2024-08-08 9:59 ` [PATCH v4 3/6] i2c: Introduce OF component probe function Chen-Yu Tsai
2024-08-13 11:26 ` Andy Shevchenko
2024-08-15 9:55 ` Chen-Yu Tsai
2024-08-08 9:59 ` [PATCH v4 4/6] i2c: of-prober: Add GPIO and regulator support Chen-Yu Tsai
2024-08-13 11:41 ` Andy Shevchenko
2024-08-14 11:34 ` Chen-Yu Tsai
2024-08-14 13:53 ` Andy Shevchenko [this message]
2024-08-21 9:44 ` Chen-Yu Tsai
2024-08-08 9:59 ` [PATCH v4 5/6] platform/chrome: Introduce device tree hardware prober Chen-Yu Tsai
2024-08-09 8:55 ` kernel test robot
2024-08-13 11:46 ` Andy Shevchenko
2024-08-14 10:10 ` Chen-Yu Tsai
2024-08-14 13:41 ` Andy Shevchenko
2024-08-08 9:59 ` [PATCH v4 6/6] arm64: dts: mediatek: mt8173-elm-hana: Mark touchscreens and trackpads as fail Chen-Yu Tsai
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=Zry2vbJ-BT4mI0eO@smile.fi.intel.com \
--to=andriy.shevchenko@linux.intel.com \
--cc=angelogioacchino.delregno@collabora.com \
--cc=bleung@chromium.org \
--cc=broonie@kernel.org \
--cc=chrome-platform@lists.linux.dev \
--cc=devicetree@vger.kernel.org \
--cc=dianders@chromium.org \
--cc=jikos@kernel.org \
--cc=johan@kernel.org \
--cc=lgirdwood@gmail.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-i2c@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mediatek@lists.infradead.org \
--cc=matthias.bgg@gmail.com \
--cc=robh@kernel.org \
--cc=saravanak@google.com \
--cc=tzungbi@kernel.org \
--cc=wenst@chromium.org \
--cc=wsa@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 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.