Messages in this thread | | | From | Linus Walleij <> | Date | Mon, 18 May 2020 09:40:14 +0200 | Subject | Re: [PATCH 1/3] dt-bindings: pinctrl: Add bindings for mscc,ocelot-sgpio |
| |
On Wed, May 13, 2020 at 4:11 PM Lars Povlsen <lars.povlsen@microchip.com> wrote:
> This adds DT bindings for the Microsemi SGPIO controller, bindings > mscc,ocelot-sgpio and mscc,luton-sgpio. > > Reviewed-by: Alexandre Belloni <alexandre.belloni@bootlin.com> > Signed-off-by: Lars Povlsen <lars.povlsen@microchip.com>
> + 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
| |