Re: [PATCH v2] pinctrl: renesas: r906g032: handle pin subgroups

Marek Vasut via U-Boot <[email protected]>
Newsgroups org.u-boot-project.lists.u-boot
Message-ID <[email protected]>
On 8/14/26 8:26 PM, Ralph Siemsen wrote:
> Add simple recursion support to the .set_state method. This makes it
> possible to use subgroups in the device tree, which in turn allows
> setting multiple pins with different bias/drive-strength properties.
> 
> Fixes: e4aea57fa773 ("pinctrl: renesas: add R906G032 driver")
> Signed-off-by: Ralph Siemsen <[email protected]>
> ---
> Changes in v2:
> - split out of the series "Renesas RZ/N1 additional drivers"
>    https://lore.kernel.org/u-boot/[email protected]/
> - fix typos in commit message
> - use device_foreach_child() to iterate child nodes
> - move recursion to top of function, ahead of the early return in the
>    case of no direct pinmux entries, instead of removing early return.
> - dev_err() in case of failure during recursion
> ---
>   drivers/pinctrl/renesas/pinctrl-rzn1.c | 13 +++++++++++++
>   1 file changed, 13 insertions(+)
> 
> diff --git a/drivers/pinctrl/renesas/pinctrl-rzn1.c b/drivers/pinctrl/renesas/pinctrl-rzn1.c
> index fdc43c8e714..6c8d40e9639 100644
> --- a/drivers/pinctrl/renesas/pinctrl-rzn1.c
> +++ b/drivers/pinctrl/renesas/pinctrl-rzn1.c
> @@ -298,11 +298,24 @@ static int rzn1_pinconf_set(struct rzn1_pinctrl_priv *priv, unsigned int pin,
>   static int rzn1_pinctrl_set_state(struct udevice *dev, struct udevice *config)
>   {
>   	struct rzn1_pinctrl_priv *priv = dev_get_priv(dev);
> +	struct udevice *child;
>   	int size;
>   	int ret;
>   	u32 val;
>   	u32 bias;
>   
> +	/*
> +	 * Handle subnodes recursively, so that pin groups work.
> +	 * Note that properties are *NOT* inherited from parent.
> +	 */
> +	device_foreach_child(child, config) {
> +		ret = rzn1_pinctrl_set_state(dev, child);
Can there really be infinite nested subgroups , or are there always only 
groups with subgroups and that is where it ends ? Linux 
Documentation/devicetree/bindings/pinctrl/renesas,rzn1-pinctrl.yaml 
makes it look like the later, so maybe the recursion is not necessary 
here, instead call device_foreach_child() { device_foreach_child() { .. 
} } to prevent the possibility of infinite recursion ?
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.