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: 20+ 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-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 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).