Re: [PATCH v4 1/4] dt-bindings: gpio: spacemit: add support for K1 SoC
From: Yixun Lan
Date: Thu Feb 06 2025 - 08:33:51 EST
Hi Linus and DT maintainers:
On 10:18 Thu 06 Feb , Linus Walleij wrote:
> Hi Yixun,
>
> On Tue, Jan 28, 2025 at 5:03 PM Linus Walleij <linus.walleij@xxxxxxxxxx> wrote:
> > On Tue, Jan 28, 2025 at 4:17 AM Yixun Lan <dlan@xxxxxxxxxx> wrote:
> >
> > > [Rob]
> > > > If Linux can't handle 1 node for N gpio_chip's, then that's a Linux
> > > > problem. Maybe it can, IDK.
> > >
> > > I haven't seen somthing like this to register 1 node for multi gpio_chips..
> > > To gpio/pinctrl maintainer (Linus Walleij), do you have suggestion on this?
> >
> > For Linux we can call bgpio_init() three times and
> > devm_gpiochip_add_data() three times on the result and if we use the
> > approach with three cells (where the second is instance 0,1,2 and the
> > last one the offset 0..31) then it will work all just the same I guess?
> >
both bgpio_init() and devm_gpiochip_add_data() operate on per "struct gpio_chip" bias,
which mean they need to request three independent gpio chips..
> > foo-gpios <&gpio 2 7 GPIO_ACTIVE_LOW>;
if we model the dts as above, then "&gpio" will register itself as one sole "struct gpio_chip",
which mean one gpio chip combine three banks.. I've looked at the sunxi driver which
Samuel pointed, imply same example as this.
if taking "one gpio chip support multi banks" direction, then it will be reverted back as patch V1,
then, even the three gpio-cells model is unnecessary needed, as we can map gpio number
to the <bank, offset> array in the underlying gpio driver
the v4 patch is very similar to drivers/gpio/gpio-dwapb.c
If had to choose the direction between v1 and v4, I personally would favor the latter,
as from hw perspective, each gpio bank is quite indepedent - has its own io/irq registers,
merely has interleaved io memory space, one shared IRQ line.. also the patch v4 leverage
lots underlying generic gpio APIs, result in much simplified/clean code base..
> >
> > for offset 7 on block 2 for example.
> >
> > We need a custom xlate function I suppose.
> >
> > It just has not been done that way before, everybody just did
> > 2-cell GPIOs.
>
> does this approach work for you? I think it's the most diplomatic.
>
> I'm sorry about the hopeless back-and-forth with the bindings, also
> for contributing to the messy debate. I do want developers to feel
> encouraged to contribute and not get stuck in too long debates.
>
> Yours,
> Linus Walleij
--
Yixun Lan (dlan)
Gentoo Linux Developer
GPG Key ID AABEFD55