Re: [PATCH v3 1/4] dt-bindings: connector: Add fsl,aud-io-slot binding

From: Chancel Liu

Date: Tue Nov 03 2026 - 21:14:40 EST


>> +properties:
>> + compatible:
>> + oneOf:
>> + - items:
>> + - enum:
>> + - fsl,imx952-evk-aud-io
>> + - const: fsl,imx95-19x19-evk-aud-io
>> + - const: fsl,imx95-19x19-evk-aud-io
>> +
>> + gpio-controller: true
>
> I remember Rob said needn't gpio-controller if gpio-map exist
>

gpio-controller is really confusing in such nexus node. However if
remove this property, dt_binding_check reports:
linux-next/Documentation/devicetree/bindings/connector/fsl,aud-io-slot.yaml:
properties: 'gpio-controller' is a dependency of '#gpio-cells'
from schema $id: http://devicetree.org/meta-schemas/gpios.yaml#

Based on Rob's explanation:
https://lore.kernel.org/all/20260918192012.GA1465432-robh@xxxxxxxxxx/
that a controller property and its corresponding map are mutually
exclusive, I think interrupt-controller should be dropped as well.

>> +
>> + '#gpio-cells':
>> + const: 2
>> +
>> + gpio-map:
>> + minItems: 1
>> + maxItems: 3
>> +
>> + gpio-map-mask:
>> + items:
>> + - const: 0xf
>> + - const: 0x0
>> +
>> + gpio-map-pass-thru:
>> + items:
>> + - const: 0x0
>> + - const: 0x1
>
> I think you should pass thru whole u32 0xffffffff in case GPIO add
> new flags in future.
>

I found this was also been clarified by Rob:
https://lore.kernel.org/all/20260918192012.GA1465432-robh@xxxxxxxxxx/
Okay. I will use 0xffffffff to match the GPIO index exactly and to pass
through the entire GPIO flags cell.

>> +
>> + '#clock-cells':
>> + const: 1
>> +
>> + clock-map:
>> + minItems: 1
>> + maxItems: 2
>> +
>> + '#address-cells':
>> + const: 0
>
> There are not child node, why need #address-cells?
>

Otherwise:
Documentation/devicetree/bindings/connector/fsl,aud-io-slot.example.dts:20.19-32.11:
Warning (interrupt_map): /example-0/connector: Missing '#address-cells'
in interrupt-map provider

>> +
>> + interrupt-controller: true
>> +
>> + '#interrupt-cells':
>> + const: 2
>> +
>> + interrupt-map:
>> + minItems: 1
>> + maxItems: 2
>> +
>> + interrupt-map-mask:
>> + items:
>> + - const: 0xf
>> + - const: 0x0
>> +
>> +allOf:
>> + - $ref: /schemas/gpio/gpio-nexus-node.yaml#
>> + - $ref: /schemas/clock/clock-nexus-node.yaml#
>> +
>> +required:
>> + - compatible
>> + - gpio-controller
>> + - '#gpio-cells'
>> + - gpio-map
>> + - gpio-map-mask
>> + - gpio-map-pass-thru
>> +
>> +additionalProperties: false
>> +
>> +examples:
>> + - |
>> + #include <dt-bindings/interrupt-controller/irq.h>
>> +
>> + connector {
>> + compatible = "fsl,imx95-19x19-evk-aud-io";
>> + gpio-controller;
>> + #gpio-cells = <2>;
>> + gpio-map = <0 0 &gpio1 8 1>;
>> + gpio-map-mask = <0xf 0x0>;
>> + gpio-map-pass-thru = <0x0 0x1>;
>> + #clock-cells = <1>;
>> + clock-map = <0 &clk 1>;
>> + #address-cells = <0>;
>> + interrupt-controller;
>> + #interrupt-cells = <2>;
>> + interrupt-map-mask = <0xf 0x0>;
>> + interrupt-map = <0 0 &gpio2 27 IRQ_TYPE_LEVEL_LOW>;
> ^ missed count?

Sorry I don't understand what you mean by "missed count". With
#interrupt-cells = <2>, I understand the two cells before &gpio2 to be
the child interrupt specifier, while the two cells after it are the
parent interrupt specifier. Could you please clarify which cell is missing?

Regards,
Chancel Liu