Re: [PATCH] gpio: of: make it possible to reference gpios probed in acpi in device tree

From: Markus Probst
Date: Fri Oct 03 2025 - 04:44:25 EST


On Fri, 2025-10-03 at 06:54 +0200, Mika Westerberg wrote:
> Hi,
>
> On Thu, Oct 02, 2025 at 09:58:05PM +0000, Markus Probst wrote:
> > sometimes it is necessary to use both acpi and device tree to
> > declare
> > devices. Not every gpio device driver which has an acpi_match_table
> > has
> > an of_match table (e.g. amd-pinctrl). Furthermore gpio is an device
> > which
> > can't be easily disabled in acpi and then redeclared in device
> > tree, as
> > it often gets used by other devices declared in acpi (e.g. via
> > GpioInt or
> > GpioIo). Thus a disable of acpi and migration to device tree is not
> > always
> > possible or very time consuming, while acpi by itself is very
> > limited and
> > not always sufficient. This won't affect most configurations, as
> > most of
> > the time either CONFIG_ACPI or CONFIG_OF gets enabled, not both.
>
> Can you provide a real example where this kind of mixup can happen?
In my specific usecase for the Synology DS923+, there are gpios for
powering the usb vbus on (powered down by default), also for powering
on sata disks. (defining a fixed-regulator for the usb vbus for
example)
> The
> ACPI ID PRP0001 specifically was added to allow using DT bindings in
> ACPI
> based systems.
Hmm, would requiring patching of the acpi tables. Not sure if it would
work with the fixed-regulator though, as it uses dev->of_node instead
of dev->fwnode. I will try to see if I can make it work this way.

>
> Regarding the patch, please spell gpio -> GPIO, acpi ACPI and so on.
>
> > Signed-off-by: Markus Probst <markus.probst@xxxxxxxxx>
> > ---
> >  drivers/gpio/gpiolib-of.c | 241 +++++++++++++++++++++++-----------
> > ----
> >  1 file changed, 145 insertions(+), 96 deletions(-)
> >
> > diff --git a/drivers/gpio/gpiolib-of.c b/drivers/gpio/gpiolib-of.c
> > index 37ab78243fab..c472b86148b3 100644
> > --- a/drivers/gpio/gpiolib-of.c
> > +++ b/drivers/gpio/gpiolib-of.c
> > @@ -18,6 +18,7 @@
> >  #include <linux/pinctrl/pinctrl.h>
> >  #include <linux/slab.h>
> >  #include <linux/string.h>
> > +#include <linux/acpi.h>
>
> I'm not really sure if this is good idea to be honest.