All of lore.kernel.org
 help / color / mirror / Atom feed
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 v7 07/10] i2c: of-prober: Add simple helpers for regulator support
Date: Fri, 13 Sep 2024 13:46:26 +0300	[thread overview]
Message-ID: <ZuQYAu9tBN0wrNfo@smile.fi.intel.com> (raw)
In-Reply-To: <20240911072751.365361-8-wenst@chromium.org>

On Wed, Sep 11, 2024 at 03:27:45PM +0800, Chen-Yu Tsai wrote:
> Add helpers to do regulator management for the I2C OF component prober.
> Components that the prober intends to probe likely require their
> regulator supplies be enabled, and GPIOs be toggled to enable them or
> bring them out of reset before they will respond to probe attempts.
> GPIOs will be handled in the next patch.
> 
> The assumption is that the same class of components to be probed are
> always connected in the same fashion with the same regulator supply
> and GPIO. The names may vary due to binding differences, but the
> physical layout does not change.
> 
> This set of helpers supports at most one regulator supply. The user
> must specify the node from which the supply is retrieved. The supply
> name and the amount of time to wait after the supply is enabled are
> also given by the user.

...

> +static int i2c_of_probe_simple_get_supply(struct device *dev, struct device_node *node,
> +					  struct i2c_of_probe_simple_ctx *ctx)
> +{
> +	const char *supply_name;
> +	struct regulator *supply;
> +
> +	/*
> +	 * It's entirely possible for the component's device node to not have regulator
> +	 * supplies. While it does not make sense from a hardware perspective, the
> +	 * supplies could be always on or otherwise not modeled in the device tree, but
> +	 * the device would still work.
> +	 */

I would reformat as

	/*
	 * It's entirely possible for the component's device node to not have the
	 * regulator supplies. While it does not make sense from a hardware perspective,
	 * the supplies could be always on or otherwise not modeled in the device tree,
	 * but the device would still work.
	 */

> +	supply_name = ctx->opts->supply_name;
> +	if (!supply_name)
> +		return 0;
> +
> +	supply = of_regulator_get_optional(dev, node, supply_name);
> +	if (IS_ERR(supply)) {
> +		return dev_err_probe(dev, PTR_ERR(supply),
> +				     "Failed to get regulator supply \"%s\" from %pOF\n",
> +				     supply_name, node);
> +	}
> +
> +	ctx->supply = supply;
> +
> +	return 0;
> +}

...

> +int i2c_of_probe_simple_get_res(struct device *dev, struct device_node *bus_node, void *data)
> +{
> +	struct i2c_of_probe_simple_ctx *ctx = data;
> +	struct device_node *node;
> +	const char *compat;
> +	int ret;
> +
> +	dev_dbg(dev, "Requesting resources for components under I2C bus %pOF\n", bus_node);
> +
> +	if (!ctx || !ctx->opts)
> +		return -EINVAL;
> +
> +	compat = ctx->opts->res_node_compatible;
> +	if (!compat)
> +		return -EINVAL;

> +	node = of_get_compatible_child(bus_node, compat);

	__free(of_node_put) ?

> +	if (!node)
> +		return dev_err_probe(dev, -ENODEV, "No device compatible with \"%s\" found\n",
> +				     compat);
> +
> +	ret = i2c_of_probe_simple_get_supply(dev, node, ctx);
> +	if (ret)
> +		goto out_put_node;
> +
> +	return 0;
> +
> +out_put_node:
> +	of_node_put(node);
> +	return ret;
> +}

...

> + * @post_power_on_delay_ms: Delay in ms after regulators are powered on. Passed to msleep().

No need to duplicate the units as it's obvious from the variable name and msleep().

 * @post_power_on_delay_ms: Delay after regulators are powered on. Passed to msleep().

-- 
With Best Regards,
Andy Shevchenko



  reply	other threads:[~2024-09-13 10:46 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-09-11  7:27 [PATCH v7 00/10] platform/chrome: Introduce DT hardware prober Chen-Yu Tsai
2024-09-11  7:27 ` [PATCH v7 01/10] of: dynamic: Add of_changeset_update_prop_string Chen-Yu Tsai
2024-09-11  7:27 ` [PATCH v7 02/10] of: base: Add for_each_child_of_node_with_prefix() Chen-Yu Tsai
2024-09-12 20:31   ` Rob Herring (Arm)
2024-09-11  7:27 ` [PATCH v7 03/10] regulator: Split up _regulator_get() Chen-Yu Tsai
2024-09-13 10:27   ` Andy Shevchenko
2024-09-11  7:27 ` [PATCH v7 04/10] regulator: Add of_regulator_get_optional() for pure DT regulator lookup Chen-Yu Tsai
2024-09-11  7:27 ` [PATCH v7 05/10] i2c: core: Remove extra space in Makefile Chen-Yu Tsai
2024-09-13 14:59   ` Andi Shyti
2024-09-11  7:27 ` [PATCH v7 06/10] i2c: Introduce OF component probe function Chen-Yu Tsai
2024-09-13 10:25   ` Andy Shevchenko
2024-09-15 10:44     ` Chen-Yu Tsai
2024-09-16 10:36       ` Andy Shevchenko
2024-09-16 10:55         ` Jonathan Cameron
2024-09-16 14:59         ` Chen-Yu Tsai
2024-09-16 15:22           ` Andy Shevchenko
2024-09-13 23:43   ` Doug Anderson
2024-09-15 11:32     ` Chen-Yu Tsai
2024-09-16 14:15       ` Doug Anderson
2024-09-16 14:31         ` Chen-Yu Tsai
2024-09-16 10:13     ` Andy Shevchenko
2024-09-15 10:09   ` Andrey Skvortsov
2024-09-11  7:27 ` [PATCH v7 07/10] i2c: of-prober: Add simple helpers for regulator support Chen-Yu Tsai
2024-09-13 10:46   ` Andy Shevchenko [this message]
2024-09-13 15:36   ` kernel test robot
2024-09-13 23:43   ` Doug Anderson
2024-09-11  7:27 ` [PATCH v7 08/10] i2c: of-prober: Add GPIO support to simple helpers Chen-Yu Tsai
2024-09-13 10:52   ` Andy Shevchenko
2024-09-13 23:43   ` Doug Anderson
2024-09-17 12:41     ` Chen-Yu Tsai
2024-09-23 19:11       ` Doug Anderson
2024-09-15  9:46   ` Andrey Skvortsov
2024-09-11  7:27 ` [PATCH v7 09/10] platform/chrome: Introduce device tree hardware prober Chen-Yu Tsai
2024-09-13 14:24   ` kernel test robot
2024-09-13 15:36   ` kernel test robot
2024-09-13 23:43   ` Doug Anderson
2024-09-16 14:58     ` Chen-Yu Tsai
2024-09-16 15:23       ` Andy Shevchenko
2024-09-11  7:27 ` [PATCH v7 10/10] arm64: dts: mediatek: mt8173-elm-hana: Mark touchscreens and trackpads as fail Chen-Yu Tsai
2024-09-13 18:08 ` (subset) [PATCH v7 00/10] platform/chrome: Introduce DT hardware prober Mark Brown

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=ZuQYAu9tBN0wrNfo@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.