Re: [PATCH v2 1/2] dt-bindings: gpio: Add Axiado SGPIO controller

From: Krzysztof Kozlowski

Date: Wed Jul 29 2026 - 04:16:27 EST


On 29/07/2026 09:02, Petar Stepanovic wrote:
> +description: |
> + The Axiado SGPIO controller provides a serial GPIO expansion interface
> + that multiplexes multiple GPIO signals over a small set of physical lines.
> +
> + The controller operates as a shift-based interface, where output values
> + are serialized on a data output line and input values are sampled from a
> + data input line in synchronization with a shift clock. A latch signal is
> + used to update output states after each transfer cycle.
> +
> + The interface uses data output (DOUT), data input (DIN), shift clock
> + (SCLK), and latch signal (LATCH).
> +
> + Each SGPIO position provides one fixed-direction input GPIO and one
> + fixed-direction output GPIO. Input GPIOs support edge-triggered
> + interrupts.
> +
> + GPIOs are organized in banks of 32 signals, with registers controlling
> + output values, input sampling, and interrupt status. The number of GPIO
> + lines depends on the hardware variant.
> +
> + The controller detects changes on input GPIOs. Interrupt events are
> + aggregated and signaled through a single interrupt line to the parent
> + interrupt controller.
> +
> + Register access is performed over the APB bus. The SGPIO shift clock is
> + derived from the APB clock using a programmable divider.
> +
> +properties:
> + compatible:
> + enum:
> + - axiado,ax3000-sgpio
> + - axiado,ax3005-sgpio
> +
> + reg:
> + maxItems: 1
> +
> + clocks:
> + description:
> + APB clock used for register access and SGPIO shift clock generation
> + maxItems: 1
> +
> + bus-frequency:
> + description: SGPIO shift clock frequency in Hz
> + minimum: 1

Such property is not allowed. Why you cannot calculate it automatically?

> +
> + gpio-controller: true
> +
> + '#gpio-cells':
> + const: 2
> +
> + interrupt-controller: true
> +
> + '#interrupt-cells':
> + const: 2
> +
> + interrupts:
> + maxItems: 1
> +
> + ngpios:
> + description:
> + Number of SGPIO positions. Each position provides one input GPIO and
> + one output GPIO.
> + enum: [128, 512]
> +
> +allOf:
> + - if:
> + properties:
> + compatible:
> + const: axiado,ax3000-sgpio
> + then:
> + properties:
> + ngpios:
> + const: 128

else what? 3005 has 512? Then these are implied by compatible, no?

> +
> +required:
> + - compatible
> + - reg
> + - clocks
> + - bus-frequency
> + - gpio-controller
> + - '#gpio-cells'
> + - interrupt-controller
> + - '#interrupt-cells'
> + - interrupts
> + - ngpios
> +
> +additionalProperties: false
> +
> +examples:
> + - |
> + #include <dt-bindings/interrupt-controller/irq.h>
> +
> + sgpio@a000 {

git grep sgpio@

No results (except well known poor coding style platform). I already
commented on this.

> + compatible = "axiado,ax3005-sgpio";
> + reg = <0xa000 0x800>;
> + clocks = <&apb_clk>;
> + bus-frequency = <1000000>;
> + gpio-controller;
Best regards,
Krzysztof