Linux GPIO subsystem development
 help / color / mirror / Atom feed
From: Conor Dooley <conor@kernel.org>
To: Changhuang Liang <changhuang.liang@starfivetech.com>
Cc: Linus Walleij <linusw@kernel.org>, Rob Herring <robh@kernel.org>,
	Krzysztof Kozlowski <krzk+dt@kernel.org>,
	Conor Dooley <conor+dt@kernel.org>,
	Emil Renner Berthing <kernel@esmil.dk>,
	Paul Walmsley <pjw@kernel.org>, Albert Ou <aou@eecs.berkeley.edu>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Alexandre Ghiti <alex@ghiti.fr>,
	Philipp Zabel <p.zabel@pengutronix.de>,
	Bartosz Golaszewski <brgl@kernel.org>,
	linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org,
	devicetree@vger.kernel.org, linux-riscv@lists.infradead.org,
	Lianfeng Ouyang <lianfeng.ouyang@starfivetech.com>
Subject: Re: [PATCH v2 03/22] pinctrl: pinctrl-generic: Make the "function" property optional
Date: Thu, 14 May 2026 19:46:59 +0100	[thread overview]
Message-ID: <20260514-operation-remix-9f9fcf9a6102@spud> (raw)
In-Reply-To: <20260514111218.94519-4-changhuang.liang@starfivetech.com>

[-- Attachment #1: Type: text/plain, Size: 3019 bytes --]

On Thu, May 14, 2026 at 04:11:59AM -0700, Changhuang Liang wrote:
> Some pinctrl subnodes only need to configure pin properties (e.g.,
> power-source, bias, drive strength) without assigning any mux function.
> 
> Currently, the driver requires a valid "function" property for all
> pinctrl subnodes. This forces the addition of dummy or redundant
> "function" entries when only pin configuration is needed.
> 
> Example use case:
> gpios-configs {
>     config {
>         pins = <0 1 2 3>;
>         power-source = <0>;
>     };
> };
> 
> Make the "function" property optional. If it is missing, skip adding
> the mux map and only process the pin configuration.

I looked through the series though and all controllers appear
to have pins and functions, is it the case that gpio is the default for
these pins, so you are omitting the functions property when you are
using the pin in gpio mode? Saying that the functions property is
"redudant" makes it seem like this might be the case?

I've got some feedback here, but I can't really provide it without
knowing the answer to that question.

Cheers,
Conor.

> 
> Signed-off-by: Changhuang Liang <changhuang.liang@starfivetech.com>
> ---
>  drivers/pinctrl/pinctrl-generic.c | 37 ++++++++++++++++++++++---------
>  1 file changed, 27 insertions(+), 10 deletions(-)
> 
> diff --git a/drivers/pinctrl/pinctrl-generic.c b/drivers/pinctrl/pinctrl-generic.c
> index efb39c6a6703..c7dd0924aa0e 100644
> --- a/drivers/pinctrl/pinctrl-generic.c
> +++ b/drivers/pinctrl/pinctrl-generic.c
> @@ -62,19 +62,36 @@ static int pinctrl_generic_pins_function_dt_subnode_to_map(struct pinctrl_dev *p
>  
>  		pins[i] = pin;
>  
> -		ret = of_property_read_string(np, "function", &functions[i]);
> -		if (ret)
> -			return ret;
> +		if (functions) {
> +			ret = of_property_read_string(np, "function", &functions[i]);
> +			if (ret < 0) {
> +				/* EINVAL = missing, which is fine since it's optional */
> +				if (ret != -EINVAL) {
> +					dev_err(dev, "%pOF: could not parse property function\n",
> +						np);
> +					return ret;
> +				}
> +
> +				devm_kfree(dev, functions);
> +				functions = NULL;
> +
> +				/* Continue parsing all pins */
> +				continue;
> +			}
> +		}
>  	}
>  
> -	ret = pinctrl_utils_reserve_map(pctldev, maps, num_reserved_maps, num_maps, reserve);
> -	if (ret)
> -		return ret;
> +	if (functions) {
> +		ret = pinctrl_utils_reserve_map(pctldev, maps, num_reserved_maps,
> +						num_maps, reserve);
> +		if (ret)
> +			return ret;
>  
> -	ret = pinctrl_utils_add_map_mux(pctldev, maps, num_reserved_maps, num_maps, group_name,
> -					parent->name);
> -	if (ret < 0)
> -		return ret;
> +		ret = pinctrl_utils_add_map_mux(pctldev, maps, num_reserved_maps,
> +						num_maps, group_name, parent->name);
> +		if (ret < 0)
> +			return ret;
> +	}
>  
>  	ret = pinctrl_generic_add_group(pctldev, group_name, pins, npins, functions);
>  	if (ret < 0)
> -- 
> 2.25.1
> 

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

  reply	other threads:[~2026-05-14 18:47 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-05-14 11:11 [PATCH v2 00/22] Add basic pinctrl drivers for JHB100 SoC Changhuang Liang
2026-05-14 11:11 ` [PATCH v2 01/22] dt-bindings: pincfg-node: Add property 'input-debounce-nanoseconds' Changhuang Liang
2026-05-14 18:35   ` Conor Dooley
2026-05-14 11:11 ` [PATCH v2 02/22] pinctrl: pinconf-generic: " Changhuang Liang
2026-05-14 11:11 ` [PATCH v2 03/22] pinctrl: pinctrl-generic: Make the "function" property optional Changhuang Liang
2026-05-14 18:46   ` Conor Dooley [this message]
2026-05-14 11:12 ` [PATCH v2 04/22] dt-bindings: pinctrl: Add starfive,jhb100-sys0-pinctrl Changhuang Liang
2026-05-14 18:52   ` Conor Dooley
2026-05-14 11:12 ` [PATCH v2 05/22] pinctrl: starfive: Add StarFive JHB100 sys0 controller driver Changhuang Liang
2026-05-14 11:12 ` [PATCH v2 06/22] dt-bindings: pinctrl: Add starfive,jhb100-sys0h-pinctrl Changhuang Liang
2026-05-14 13:17   ` Rob Herring (Arm)
2026-05-14 11:12 ` [PATCH v2 07/22] pinctrl: starfive: Add StarFive JHB100 sys0h controller driver Changhuang Liang
2026-05-14 11:12 ` [PATCH v2 08/22] dt-bindings: pinctrl: Add starfive,jhb100-sys1-pinctrl Changhuang Liang
2026-05-14 11:12 ` [PATCH v2 09/22] pinctrl: starfive: Add StarFive JHB100 sys1 controller driver Changhuang Liang
2026-05-14 11:12 ` [PATCH v2 10/22] dt-bindings: pinctrl: Add starfive,jhb100-sys2-pinctrl Changhuang Liang
2026-05-14 13:17   ` Rob Herring (Arm)
2026-05-14 11:12 ` [PATCH v2 11/22] pinctrl: starfive: Add StarFive JHB100 sys2 controller driver Changhuang Liang
2026-05-14 11:12 ` [PATCH v2 12/22] dt-bindings: pinctrl: Add starfive,jhb100-per0-pinctrl Changhuang Liang
2026-05-14 13:17   ` Rob Herring (Arm)
2026-05-14 11:12 ` [PATCH v2 13/22] pinctrl: starfive: Add StarFive JHB100 per0 controller driver Changhuang Liang
2026-05-14 11:12 ` [PATCH v2 14/22] dt-bindings: pinctrl: Add starfive,jhb100-per1-pinctrl Changhuang Liang
2026-05-14 13:17   ` Rob Herring (Arm)
2026-05-14 11:12 ` [PATCH v2 15/22] pinctrl: starfive: Add StarFive JHB100 per1 controller driver Changhuang Liang
2026-05-14 11:12 ` [PATCH v2 16/22] dt-bindings: pinctrl: Add starfive,jhb100-per2-pinctrl Changhuang Liang
2026-05-14 11:12 ` [PATCH v2 17/22] pinctrl: starfive: Add StarFive JHB100 per2 controller driver Changhuang Liang
2026-05-14 11:12 ` [PATCH v2 18/22] dt-bindings: pinctrl: Add starfive,jhb100-per2pok-pinctrl Changhuang Liang
2026-05-14 13:17   ` Rob Herring (Arm)
2026-05-14 11:12 ` [PATCH v2 19/22] pinctrl: starfive: Add StarFive JHB100 per2pok controller driver Changhuang Liang
2026-05-14 11:12 ` [PATCH v2 20/22] dt-bindings: pinctrl: Add starfive,jhb100-per3-pinctrl Changhuang Liang
2026-05-14 13:17   ` Rob Herring (Arm)
2026-05-14 11:12 ` [PATCH v2 21/22] pinctrl: starfive: Add StarFive JHB100 per3 controller driver Changhuang Liang
2026-05-14 11:12 ` [PATCH v2 22/22] riscv: dts: starfive: jhb100: Add pinctrl nodes Changhuang Liang

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=20260514-operation-remix-9f9fcf9a6102@spud \
    --to=conor@kernel.org \
    --cc=alex@ghiti.fr \
    --cc=aou@eecs.berkeley.edu \
    --cc=brgl@kernel.org \
    --cc=changhuang.liang@starfivetech.com \
    --cc=conor+dt@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=kernel@esmil.dk \
    --cc=krzk+dt@kernel.org \
    --cc=lianfeng.ouyang@starfivetech.com \
    --cc=linusw@kernel.org \
    --cc=linux-gpio@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-riscv@lists.infradead.org \
    --cc=p.zabel@pengutronix.de \
    --cc=palmer@dabbelt.com \
    --cc=pjw@kernel.org \
    --cc=robh@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