[PATCH 1/3] dt-bindings: gpio: add Axiado SGPIO controller
Linus Walleij
linusw at kernel.org
Fri Apr 24 00:26:18 PDT 2026
Hi Petar,
thanks for your patch!
On Tue, Apr 14, 2026 at 3:49 PM Petar Stepanovic <pstepanovic at axiado.com> wrote:
> Add device tree binding for the Axiado SGPIO controller.
>
> The SGPIO controller provides a serialized interface for
> controlling multiple GPIO signals over a limited number of
> physical lines. It supports configurable data direction and
> interrupt handling.
>
> The binding describes the properties required to instantiate
> the controller and register it as a GPIO provider.
>
> Signed-off-by: Petar Stepanovic <pstepanovic at axiado.com>
(...)
> +description: |
> + The SGPIO controller provides a serialized interface for controlling
> + multiple GPIO signals over a limited number of physical lines.
> + It supports configurable data direction and interrupt handling.
This is pretty generic, can you write some details on how this happens?
> + '#gpio-cells':
> + const: 2
Are you sure you don't want to use 3 here instead and split the 128
GPIOs into 4 "banks" second cell being the bank number?
<&gpio 2 4>; ?
Maybe this also solves the 512 GPIO by grouping the GPIOs into
8 banks...?
> + '#interrupt-cells':
> + const: 2
Same there.
> + design-variant:
> + description: SGPIO design variant size in bits (e.g. 128 or 512).
> + enum: [128, 512]
> + $ref: /schemas/types.yaml#/definitions/uint32
Just use two different compatible strings and infer the variant from
that string instead.
> + ngpios:
> + description: The number of gpios this controller has.
> + $ref: /schemas/types.yaml#/definitions/uint32
Same here, certainly the 128 variant has 128 gpios and
the 512 has 512 GPIOs? Just use the compatible string
to infer this.
> + bus-frequency:
> + description: The SGPIO shift clock frequency in Hz.
> + $ref: /schemas/types.yaml#/definitions/uint32
Don't you want to use the clock bindings and a clk property
for this?
> + apb-frequency:
> + description: The APB bus frequency in Hz.
> + $ref: /schemas/types.yaml#/definitions/uint32
Dito.
> + dout-init:
> + description: Initial values for the dout registers.
> + $ref: /schemas/types.yaml#/definitions/uint32-array
> + minItems: 4
> + maxItems: 4
In:
Documentation/devicetree/bindings/gpio/nxp,pcf8575.yaml
you find:
lines-initial-states:
$ref: /schemas/types.yaml#/definitions/uint32
description:
Bitmask that specifies the initial state of each line.
When a bit is set to zero, the corresponding line will be initialized to
the input (pulled-up) state.
When the bit is set to one, the line will be initialized to the
low-level output state.
If the property is not specified all lines will be initialized to the
input state.
If this is what you want, use this standard binding instead.
Yours,
Linus Walleij
More information about the linux-arm-kernel
mailing list