Re: [PATCH v3 1/4] dt-bindings: connector: Add fsl,aud-io-slot binding
From: Frank Li
Date: Tue Nov 03 2026 - 22:35:19 EST
On Wed, Nov 04, 2026 at 10:13:30AM +0800, Chancel Liu wrote:
> >> +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?
forget it. I confused with msi-map.
Frank
>
> Regards,
> Chancel Liu
>