Re: [PATCH 1/3] dt-bindings: gpio: add Axiado SGPIO controller

From: Linus Walleij

Date: Fri Apr 24 2026 - 03:27:12 EST


Hi Petar,

thanks for your patch!

On Tue, Apr 14, 2026 at 3:49 PM Petar Stepanovic <pstepanovic@xxxxxxxxxx> 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@xxxxxxxxxx>

(...)

> +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