| Message ID | 20260929-rsk7203-properties-v3-1-02f84aeb8e47@gmail.com |
|---|---|
| State | New |
| Headers | show |
| Series | sh: mach-rsk: rsk7203: switch to using static device property, drop legacy gpio API | expand |
On Wed, 30 Sept 2026 at 06:58, Dmitry Torokhov <dmitry.torokhov@gmail.com> wrote: > The sh-pfc driver registers two separate gpiochip instances: one for > real GPIOs and another for function GPIOs. Since both share the same > parent platform device, gpiolib's fallback logic causes both chips to > share the same firmware node (fwnode). > > This causes ambiguity when using software nodes to describe GPIOs, as > gpiolib may apply hogs meant for one chip to the other if they share the > same node. > > Explicitly set gc->fwnode to ERR_PTR(-ENODEV) for the function GPIO > chip. This satisfies gpiolib's check for an existing fwnode and prevents > it from falling back to the parent device's node, while ensuring that no > actual properties or hogs are found on the function chip unless > explicitly assigned later. > > Assisted-by: LLM > Acked-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com> > Reviewed-by: Linus Walleij <linusw@kernel.org> > Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com> > --- a/drivers/pinctrl/renesas/gpio.c > +++ b/drivers/pinctrl/renesas/gpio.c > @@ -278,6 +278,12 @@ static int gpio_function_setup(struct sh_pfc_chip *chip) As this function is only used on SH: Acked-by: Geert Uytterhoeven <geert+renesas@glider.be> Gr{oetje,eeting}s, Geert
diff --git a/drivers/pinctrl/renesas/gpio.c b/drivers/pinctrl/renesas/gpio.c index 2293af642849..4e59dadb7364 100644 --- a/drivers/pinctrl/renesas/gpio.c +++ b/drivers/pinctrl/renesas/gpio.c @@ -278,6 +278,12 @@ static int gpio_function_setup(struct sh_pfc_chip *chip) gc->request = gpio_function_request; + /* + * Explicitly mask the parent's fwnode to prevent gpiolib from + * reusing it for function GPIOs. + */ + gc->fwnode = ERR_PTR(-ENODEV); + gc->label = pfc->info->name; gc->owner = THIS_MODULE; gc->base = pfc->nr_gpio_pins;