On Wed, May 13, 2020 at 4:11 PM Lars Povlsen <lars.povlsen@xxxxxxxxxxxxx> wrote: > This adds DT bindings for the Microsemi SGPIO controller, bindings > mscc,ocelot-sgpio and mscc,luton-sgpio. > > Reviewed-by: Alexandre Belloni <alexandre.belloni@xxxxxxxxxxx> > Signed-off-by: Lars Povlsen <lars.povlsen@xxxxxxxxxxxxx> > + microchip,sgpio-ports: > + description: This is a 32-bit bitmask, configuring whether a > + particular port in the controller is enabled or not. This allows > + unused ports to be removed from the bitstream and reduce latency. > + $ref: "/schemas/types.yaml#/definitions/uint32" I don't know about this. You are saying this pin controller can have up to 32 GPIO "ports" (also known as banks). Why can't you just represent each such port as a separate GPIO node: pinctrl@nnn { gpio@0 { .... }; gpio@1 { .... }; .... gpio@31 { .... }; }; Then if some of them are unused just set it to status = "disabled"; This also makes your Linux driver simpler because each GPIO port just becomes a set of 32bit registers and you can use select GPIO_GENERIC and bgpio_init() and save a whole slew of standard stock code. Yours, Linus Walleij