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 v5 05/10] gpiolib: Add gpio_property_name_length()
Date: Thu, 22 Aug 2024 17:36:51 +0300	[thread overview]
Message-ID: <ZsdNA2b9CDRrtno2@smile.fi.intel.com> (raw)
In-Reply-To: <20240822092006.3134096-6-wenst@chromium.org>

On Thu, Aug 22, 2024 at 05:19:58PM +0800, Chen-Yu Tsai wrote:
> The I2C device tree component prober needs to get and toggle GPIO lines
> for the components it intends to probe. These components may not use the
> same name for their GPIO lines, so the prober must go through the device
> tree, check each property to see it is a GPIO property, and get the GPIO
> line.
> 
> Instead of duplicating the GPIO suffixes, or exporting them to the
> prober to do pattern matching, simply add and export a new function that
> does the pattern matching and returns the length of the GPIO name. The
> caller can then use that to copy out the name if it needs to.

...

> +/**
> + * gpio_property_name_length - Returns the GPIO name length from a property name
> + * @str:	string to check

It's property name, so, I would name this 'propname'.

> + * This function checks if the given name matches the GPIO property patterns, and
> + * returns the length of the name of the GPIO. The pattern is "*-<GPIO suffix>"
> + * or just "<GPIO suffix>".
> + *
> + * Returns:
> + * The length of the string before '-' if it matches "*-<GPIO suffix>", or

What about "x-y-gpios"? It's unclear what will be the behaviour.

> + * 0 if no name part, just the suffix, or
> + * -EINVAL if the string doesn't match the pattern.
> + */
> +int gpio_property_name_length(const char *str)

gpio_get_... ?

> +{
> +	size_t len;
> +
> +	len = strlen(str);

If it has a thousands characters...?

> +	/* string need to be at minimum len(gpio) */
> +	if (len < 4)
> +		return -EINVAL;

Do we really need it here? See below as well.

> +	/* Check for no-name case: "gpio" / "gpios" */
> +	for (const char *const *p = gpio_suffixes; *p; p++)
> +		if (!strcmp(str, *p))
> +			return 0;

> +	for (size_t i = len - 4; i > 0; i--) {
> +		/* find right-most '-' and check if remainder matches suffix */
> +		if (str[i] != '-')
> +			continue;
> +
> +		for (const char *const *p = gpio_suffixes; *p; p++)
> +			if (!strcmp(str + i + 1, *p))
> +				return i;
> +
> +		return -EINVAL;
> +	}

This can be combined with the above

	for (const char *const *p = gpio_suffixes; *p; p++) {
		/*
		 * Find right-most '-' and check if remainder matches suffix.
		 * If no separator found, check for no-name cases.
		 */
		dash = strrchr(propname, '-');
		if (!strcmp(dash ? dash + 1 : propname, *p))
			return i;
	}

> +	return -EINVAL;
> +}

-- 
With Best Regards,
Andy Shevchenko



  reply	other threads:[~2024-08-22 14:37 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-08-22  9:19 [PATCH v5 00/10] platform/chrome: Introduce DT hardware prober Chen-Yu Tsai
2024-08-22  9:19 ` [PATCH v5 01/10] of: dynamic: Add of_changeset_update_prop_string Chen-Yu Tsai
2024-08-22 12:32   ` Rob Herring
2024-08-22  9:19 ` [PATCH v5 02/10] regulator: Move OF-specific regulator lookup code to of_regulator.c Chen-Yu Tsai
2024-08-22 13:47   ` Andy Shevchenko
2024-08-23  6:49     ` Chen-Yu Tsai
2024-08-23 13:43       ` Andy Shevchenko
2024-08-26  6:46         ` Chen-Yu Tsai
2024-08-26 12:06   ` kernel test robot
2024-08-26 12:06   ` kernel test robot
2024-08-26 13:19   ` kernel test robot
2024-08-22  9:19 ` [PATCH v5 03/10] regulator: Split up _regulator_get() Chen-Yu Tsai
2024-08-22 13:49   ` Andy Shevchenko
2024-08-23  6:54     ` Chen-Yu Tsai
2024-08-22  9:19 ` [PATCH v5 04/10] regulator: Do pure DT regulator lookup in of_regulator_bulk_get_all() Chen-Yu Tsai
2024-08-22 13:53   ` Andy Shevchenko
2024-08-23  7:05     ` Chen-Yu Tsai
2024-08-22  9:19 ` [PATCH v5 05/10] gpiolib: Add gpio_property_name_length() Chen-Yu Tsai
2024-08-22 14:36   ` Andy Shevchenko [this message]
2024-08-23  7:50     ` Chen-Yu Tsai
2024-08-23 13:46       ` Andy Shevchenko
2024-08-22  9:19 ` [PATCH v5 06/10] i2c: Introduce OF component probe function Chen-Yu Tsai
2024-08-22 14:01   ` Andy Shevchenko
2024-08-23  8:40     ` Chen-Yu Tsai
2024-08-23 13:52       ` Andy Shevchenko
2024-08-22  9:20 ` [PATCH v5 07/10] i2c: of-prober: Add regulator support Chen-Yu Tsai
2024-08-22 14:09   ` Andy Shevchenko
2024-08-23  9:35     ` Chen-Yu Tsai
2024-08-23 13:56       ` Andy Shevchenko
2024-08-22  9:20 ` [PATCH v5 08/10] i2c: of-prober: Add GPIO support Chen-Yu Tsai
2024-08-22 14:20   ` Andy Shevchenko
2024-08-23 10:32     ` Chen-Yu Tsai
2024-08-23 14:00       ` Andy Shevchenko
2024-08-26  7:21         ` Chen-Yu Tsai
2024-08-22  9:20 ` [PATCH v5 09/10] platform/chrome: Introduce device tree hardware prober Chen-Yu Tsai
2024-08-22  9:20 ` [PATCH v5 10/10] 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=ZsdNA2b9CDRrtno2@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.