diff mbox series

[01/10] dt-bindings: mfd: Add documentation for ad242x

Message ID 20191209183511.3576038-2-daniel@zonque.org (mailing list archive)
State Not Applicable, archived
Headers show
Series mfd: Add support for Analog Devices A2B transceiver | expand

Commit Message

Daniel Mack Dec. 9, 2019, 6:35 p.m. UTC
This patch adds documentation on the top-level MFD support for AD242x
devices. The bindings implemented by drivers for sub-devices of the
MFD are documented in other files in their respective subsystems.

The example in this file is referred to by other documents.

Signed-off-by: Daniel Mack <daniel@zonque.org>
---
 .../bindings/mfd/adi,ad242x-bus.yaml          |  29 +++
 .../bindings/mfd/adi,ad242x-master.yaml       | 235 ++++++++++++++++++
 .../bindings/mfd/adi,ad242x-slave.yaml        | 108 ++++++++
 3 files changed, 372 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/mfd/adi,ad242x-bus.yaml
 create mode 100644 Documentation/devicetree/bindings/mfd/adi,ad242x-master.yaml
 create mode 100644 Documentation/devicetree/bindings/mfd/adi,ad242x-slave.yaml

Comments

Rob Herring Dec. 19, 2019, 7:29 p.m. UTC | #1
On Mon, Dec 09, 2019 at 07:35:01PM +0100, Daniel Mack wrote:
> This patch adds documentation on the top-level MFD support for AD242x
> devices. The bindings implemented by drivers for sub-devices of the
> MFD are documented in other files in their respective subsystems.
> 
> The example in this file is referred to by other documents.
> 
> Signed-off-by: Daniel Mack <daniel@zonque.org>
> ---
>  .../bindings/mfd/adi,ad242x-bus.yaml          |  29 +++
>  .../bindings/mfd/adi,ad242x-master.yaml       | 235 ++++++++++++++++++
>  .../bindings/mfd/adi,ad242x-slave.yaml        | 108 ++++++++
>  3 files changed, 372 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/mfd/adi,ad242x-bus.yaml
>  create mode 100644 Documentation/devicetree/bindings/mfd/adi,ad242x-master.yaml
>  create mode 100644 Documentation/devicetree/bindings/mfd/adi,ad242x-slave.yaml
> 
> diff --git a/Documentation/devicetree/bindings/mfd/adi,ad242x-bus.yaml b/Documentation/devicetree/bindings/mfd/adi,ad242x-bus.yaml
> new file mode 100644
> index 000000000000..89ca8d009bb9
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/mfd/adi,ad242x-bus.yaml
> @@ -0,0 +1,29 @@
> +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: "http://devicetree.org/schemas/mfd/adi,ad242x-bus.yaml#"
> +$schema: "http://devicetree.org/meta-schemas/core.yaml#"
> +
> +title: Analog Devices AD242x A²B bus node
> +
> +maintainers:
> +  - Daniel Mack <daniel@zonque.org>
> +
> +description: |
> +  AD242x slave nodes represent the secondary I²C address a master node
> +  transceiver exposes on the bus.
> +
> +properties:
> +  compatible:
> +    enum:
> +      - adi,ad2428w-bus

Where is this in the example?

Is A2B a standard thing? If so, then shouldn't some of this be split 
into a A2B binding and then AD242x specific binding?

> +
> +  reg:
> +    maxItems: 1
> +    description: |
> +      The secondary I²C address of the master node
> +      (called 'BUS' in the datasheet)
> +
> +required:
> +  - compatible
> +  - reg
> diff --git a/Documentation/devicetree/bindings/mfd/adi,ad242x-master.yaml b/Documentation/devicetree/bindings/mfd/adi,ad242x-master.yaml
> new file mode 100644
> index 000000000000..649510575a79
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/mfd/adi,ad242x-master.yaml
> @@ -0,0 +1,235 @@
> +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: "http://devicetree.org/schemas/mfd/adi,ad242x-master.yaml#"
> +$schema: "http://devicetree.org/meta-schemas/core.yaml#"
> +
> +title: Analog Devices AD242x A²B master node transceiver
> +
> +maintainers:
> +  - Daniel Mack <daniel@zonque.org>
> +
> +description: |
> +  AD242x devices are A²B (Automotive Audio Bus) transceivers that are connected
> +  to each other in a daisy-chain. The payload transported on that bus includes
> +  multi-channel audio, I²C, GPIOs and others.
> +
> +  The datasheet is located here:
> +
> +    https://www.analog.com/media/en/technical-documentation/user-guides/AD242x_TRM_Rev1.1.pdf
> +
> +  The primary node in the chain is called the master node, and the nodes in the
> +  chain are called slave nodes. A master can address up to 15 slave nodes. The
> +  master node exposes two I²C addresses, one for accessing the registers on the
> +  node itself, and one for registers on one of the slave nodes.
> +
> +properties:
> +  compatible:
> +    enum:
> +      - adi,ad2428w-master
> +
> +  reg:
> +    maxItems: 1
> +    description: |
> +      The primary I²C address of the master node
> +      (called 'BASE' in the datasheet)
> +
> +  clocks:
> +    minItems: 1
> +
> +  clock-names:
> +    $ref: /schemas/types.yaml#/definitions/string-array
> +    const: sync
> +
> +  clock-frequency:
> +    $ref: '/schemas/types.yaml#/definitions/uint32'
> +    enum: [44100, 48000]
> +    description: |
> +      Specifies the clock frequency in Hz to configure on the given sync clock.
> +      If not specified, the clock is expected to already be configured to either
> +      44100 or 48000 Hz.
> +
> +  interrupts:
> +    maxItems: 1
> +
> +  adi,a2b-bus:
> +    $ref: '/schemas/types.yaml#/definitions/phandle'
> +    description: Specifies the bus handle node
> +
> +  adi,upstream-slot-size:
> +    description: The size for upstream slots
> +    allOf:
> +      - $ref: '/schemas/types.yaml#/definitions/uint32'
> +      - enum: [8, 12, 16, 20, 24, 28, 32]
> +
> +  adi,downstream-slot-size:
> +    description: The size for downstream slots
> +    allOf:
> +      - $ref: '/schemas/types.yaml#/definitions/uint32'
> +      - enum: [8, 12, 16, 20, 24, 28, 32]
> +
> +  adi,tdm-mode:
> +    description: The TDM mode to use
> +    allOf:
> +      - $ref: '/schemas/types.yaml#/definitions/uint32'
> +      - enum: [2, 4, 8, 12, 16, 20, 24, 32]
> +
> +  adi,tdm-slot-size:
> +    description: The TDM slot size to use
> +    allOf:
> +      - $ref: '/schemas/types.yaml#/definitions/uint32'
> +      - enum: [16, 32]
> +
> +  adi,alternate-upstream-slot-format:
> +    description: Selects the alternate format for upstream slots
> +    type: boolean
> +
> +  adi,alternate-downstream-slot-format:
> +    description: Selects the alternate format for downstream slots
> +    type: boolean
> +
> +  adi,invert-xcvr-b:
> +    description: Inverts the LVDS XCVR B data line
> +    type: boolean
> +
> +  adi,alternating-sync:
> +    description: Drives the SYNC pin for I²S operation
> +    type: boolean
> +
> +  adi,invert-sync:
> +    description: Invert the SYNC pin
> +    type: boolean
> +
> +  adi,early-sync:
> +    description: |
> +      Make the SYNC pin change one cycle before the first slot is transmitted
> +    type: boolean
> +
> +  adi,spread-a2b-clock:
> +    description: Enables spread spectrum mode for A²B bus clocks
> +    type: boolean
> +
> +  adi,spread-a2b-i2s-clock:
> +    description: Enables spread spectrum mode for both A²B and I²S clocks
> +    type: boolean
> +
> +  adi,spread-spectrum-high:
> +    description: Selects high spectrum spreading mode
> +    type: boolean
> +
> +required:
> +  - compatible
> +  - reg
> +  - clocks
> +  - clock-names
> +  - adi,a2b-bus
> +  - adi,upstream-slot-size
> +  - adi,downstream-slot-size
> +  - adi,tdm-mode
> +  - adi,tdm-slot-size
> +
> +examples:
> +  - |
> +    sync_clock: clock {
> +      compatible = "fixed-clock";
> +      #clock-cells = <0>;
> +      clock-frequency  = <48000>;
> +    };
> +
> +    i2c-bus {
> +      ad2428w-master@68 {
> +        reg = <0x68>;
> +        compatible = "adi,ad2428w-master";
> +        adi,a2b-bus = <&a2b_bus>;
> +        clocks = <&sync_clock>;
> +        clock-names = "sync";
> +
> +        adi,upstream-slot-size = <24>;
> +        adi,downstream-slot-size = <24>;
> +        adi,tdm-mode = <2>;
> +        adi,tdm-slot-size = <32>;
> +        adi,alternating-sync;
> +        adi,early-sync;
> +
> +        codec {
> +          compatible = "adi,ad2428w-codec";
> +          #sound-dai-cells = <1>;
> +        };
> +
> +        clock {
> +          compatible = "adi,ad2428w-clk";
> +          #clock-cells = <1>;
> +          clock-output-names = "master-clk1", "master-clk2";
> +        };
> +
> +        nodes {
> +          #address-cells = <1>;
> +          #size-cells = <0>;
> +
> +          node@0 {
> +            compatible = "adi,ad2428w-slave";
> +            reg = <0>;
> +
> +            adi,alternating-sync;
> +            adi,early-sync;
> +            adi,invert-sync;
> +            adi,tdm-mode = <8>;
> +            adi,tdm-slot-size = <32>;
> +
> +            downstream {
> +              rx-slots = <2 3 6 7 8 9>;
> +              #tx-slots = <4>;
> +              #forward-slots = <6>;
> +            };
> +
> +            upstream {
> +              rx-slots = <0 1 6 7 8 9>;
> +              #tx-slots = <4>;
> +              #forward-slots = <6>;
> +            };
> +
> +            a2bgpio: gpio {
> +              compatible = "adi,ad2428w-gpio";
> +              gpio-controller;
> +              #gpio-cells = <2>;
> +
> +              gpio-over-distance {
> +                #address-cells = <1>;
> +                #size-cells = <0>;
> +
> +                pin@0 {
> +                  reg = <0>;
> +                  adi,virtual-port-mask = <0x01>;
> +                };
> +              };
> +            };
> +
> +            i2c {
> +              compatible = "adi,ad2428w-i2c";
> +              clock-frequency = <400000>;
> +              #address-cells = <1>;
> +              #size-cells = <0>;
> +
> +              // I²C client devices located on the remote side
> +              eeprom-top@52 {
> +                reg = <0x52>;
> +                compatible = "atmel,24c02";
> +                read-only;
> +              };
> +            };
> +
> +            a2bclk: clock {
> +              compatible = "adi,ad2428w-clk";
> +              #clock-cells = <1>;
> +              clock-output-names = "node0-clk1", "node0-clk2";
> +            };
> +
> +            codec {
> +              compatible = "adi,ad2428w-codec";
> +              #sound-dai-cells = <1>;
> +              adi,pdm-highpass-filter;
> +            };
> +          };
> +        };
> +      };
> +    };
> diff --git a/Documentation/devicetree/bindings/mfd/adi,ad242x-slave.yaml b/Documentation/devicetree/bindings/mfd/adi,ad242x-slave.yaml
> new file mode 100644
> index 000000000000..3bea04dff267
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/mfd/adi,ad242x-slave.yaml
> @@ -0,0 +1,108 @@
> +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: "http://devicetree.org/schemas/mfd/adi,ad242x-slave.yaml#"
> +$schema: "http://devicetree.org/meta-schemas/core.yaml#"
> +
> +title: Analog Devices AD242x A²B slave node transceiver
> +
> +maintainers:
> +  - Daniel Mack <daniel@zonque.org>
> +
> +description: |
> +  AD242x slave nodes are connected to the master node through a daisy-chain.
> +  Modules of this type must be listed under the 'nodes' property of the master
> +  DT schema.
> +
> +properties:
> +  compatible:
> +    enum:
> +      - adi,ad2428w-slave
> +
> +  adi,tdm-mode:
> +    description: The TDM mode to use
> +    allOf:
> +      - $ref: '/schemas/types.yaml#/definitions/uint32'
> +      - enum: [2, 4, 8, 12, 16, 20, 24, 32]
> +
> +  adi,tdm-slot-size:
> +    description: The TDM slot size to use
> +    allOf:
> +      - $ref: '/schemas/types.yaml#/definitions/uint32'
> +      - enum: [16, 32]
> +
> +  adi,alternating-sync:
> +    description: Drives the SYNC pin for I²S operation
> +    type: boolean
> +
> +  adi,invert-sync:
> +    description: Invert the SYNC pin
> +    type: boolean
> +
> +  adi,early-sync:
> +    description: |
> +      Make the SYNC pin change one cycle before the first slot is transmitted
> +    type: boolean
> +
> +  adi,spread-a2b-clock:
> +    description: Enables spread spectrum mode for A²B bus clocks
> +    type: boolean
> +
> +  adi,spread-a2b-i2s-clock:
> +    description: Enables spread spectrum mode for both A²B and I²S clocks
> +    type: boolean
> +
> +  adi,spread-spectrum-high:
> +    description: Selects high spectrum spreading mode
> +    type: boolean
> +
> +  upstream:
> +    type: object
> +    properties:
> +      rx-slots:
> +        $ref: '/schemas/types.yaml#/definitions/uint32'
> +        description: |
> +          A bitmask that describes the slots that are received by the
> +          transceiver from the upstream (A) side and put into its TX output
> +          framebuffers. If not specified, an empty bitmask is assumed.
> +
> +      '#tx-slots':
> +        $ref: '/schemas/types.yaml#/definitions/uint32'
> +        description: |
> +          The number of slots this transceiver contributes to the upstream
> +          traffic from its RX input frame buffer
> +
> +      '#forward-slots':
> +        $ref: '/schemas/types.yaml#/definitions/uint32'
> +        description: |
> +          The number of slots this transceiver forwards from the upstream side
> +          to the downstream side.
> +
> +  downstream:
> +    type: object
> +    properties:
> +      rx-slots:
> +        $ref: '/schemas/types.yaml#/definitions/uint32'
> +        description: |
> +          A bitmask that describes the slots that are received by the
> +          transceiver from the downstream (B) side and put into its TX output
> +          framebuffers. If not specified, an empty bitmask is assumed.
> +
> +      '#tx-slots':
> +        $ref: '/schemas/types.yaml#/definitions/uint32'
> +        description: |
> +          The number of slots this transceiver contributes to the downstream
> +          traffic from its RX input frame buffer
> +
> +      '#forward-slots':
> +        $ref: '/schemas/types.yaml#/definitions/uint32'
> +        description: |
> +          The number of slots this transceiver forwards from the downstream side
> +          to the upstream side.
> +
> +required:
> +  - compatible
> +  - adi,tdm-mode
> +  - adi,tdm-slot-size
> +  - upstream
> +  - downstream
> -- 
> 2.23.0
>
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/mfd/adi,ad242x-bus.yaml b/Documentation/devicetree/bindings/mfd/adi,ad242x-bus.yaml
new file mode 100644
index 000000000000..89ca8d009bb9
--- /dev/null
+++ b/Documentation/devicetree/bindings/mfd/adi,ad242x-bus.yaml
@@ -0,0 +1,29 @@ 
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: "http://devicetree.org/schemas/mfd/adi,ad242x-bus.yaml#"
+$schema: "http://devicetree.org/meta-schemas/core.yaml#"
+
+title: Analog Devices AD242x A²B bus node
+
+maintainers:
+  - Daniel Mack <daniel@zonque.org>
+
+description: |
+  AD242x slave nodes represent the secondary I²C address a master node
+  transceiver exposes on the bus.
+
+properties:
+  compatible:
+    enum:
+      - adi,ad2428w-bus
+
+  reg:
+    maxItems: 1
+    description: |
+      The secondary I²C address of the master node
+      (called 'BUS' in the datasheet)
+
+required:
+  - compatible
+  - reg
diff --git a/Documentation/devicetree/bindings/mfd/adi,ad242x-master.yaml b/Documentation/devicetree/bindings/mfd/adi,ad242x-master.yaml
new file mode 100644
index 000000000000..649510575a79
--- /dev/null
+++ b/Documentation/devicetree/bindings/mfd/adi,ad242x-master.yaml
@@ -0,0 +1,235 @@ 
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: "http://devicetree.org/schemas/mfd/adi,ad242x-master.yaml#"
+$schema: "http://devicetree.org/meta-schemas/core.yaml#"
+
+title: Analog Devices AD242x A²B master node transceiver
+
+maintainers:
+  - Daniel Mack <daniel@zonque.org>
+
+description: |
+  AD242x devices are A²B (Automotive Audio Bus) transceivers that are connected
+  to each other in a daisy-chain. The payload transported on that bus includes
+  multi-channel audio, I²C, GPIOs and others.
+
+  The datasheet is located here:
+
+    https://www.analog.com/media/en/technical-documentation/user-guides/AD242x_TRM_Rev1.1.pdf
+
+  The primary node in the chain is called the master node, and the nodes in the
+  chain are called slave nodes. A master can address up to 15 slave nodes. The
+  master node exposes two I²C addresses, one for accessing the registers on the
+  node itself, and one for registers on one of the slave nodes.
+
+properties:
+  compatible:
+    enum:
+      - adi,ad2428w-master
+
+  reg:
+    maxItems: 1
+    description: |
+      The primary I²C address of the master node
+      (called 'BASE' in the datasheet)
+
+  clocks:
+    minItems: 1
+
+  clock-names:
+    $ref: /schemas/types.yaml#/definitions/string-array
+    const: sync
+
+  clock-frequency:
+    $ref: '/schemas/types.yaml#/definitions/uint32'
+    enum: [44100, 48000]
+    description: |
+      Specifies the clock frequency in Hz to configure on the given sync clock.
+      If not specified, the clock is expected to already be configured to either
+      44100 or 48000 Hz.
+
+  interrupts:
+    maxItems: 1
+
+  adi,a2b-bus:
+    $ref: '/schemas/types.yaml#/definitions/phandle'
+    description: Specifies the bus handle node
+
+  adi,upstream-slot-size:
+    description: The size for upstream slots
+    allOf:
+      - $ref: '/schemas/types.yaml#/definitions/uint32'
+      - enum: [8, 12, 16, 20, 24, 28, 32]
+
+  adi,downstream-slot-size:
+    description: The size for downstream slots
+    allOf:
+      - $ref: '/schemas/types.yaml#/definitions/uint32'
+      - enum: [8, 12, 16, 20, 24, 28, 32]
+
+  adi,tdm-mode:
+    description: The TDM mode to use
+    allOf:
+      - $ref: '/schemas/types.yaml#/definitions/uint32'
+      - enum: [2, 4, 8, 12, 16, 20, 24, 32]
+
+  adi,tdm-slot-size:
+    description: The TDM slot size to use
+    allOf:
+      - $ref: '/schemas/types.yaml#/definitions/uint32'
+      - enum: [16, 32]
+
+  adi,alternate-upstream-slot-format:
+    description: Selects the alternate format for upstream slots
+    type: boolean
+
+  adi,alternate-downstream-slot-format:
+    description: Selects the alternate format for downstream slots
+    type: boolean
+
+  adi,invert-xcvr-b:
+    description: Inverts the LVDS XCVR B data line
+    type: boolean
+
+  adi,alternating-sync:
+    description: Drives the SYNC pin for I²S operation
+    type: boolean
+
+  adi,invert-sync:
+    description: Invert the SYNC pin
+    type: boolean
+
+  adi,early-sync:
+    description: |
+      Make the SYNC pin change one cycle before the first slot is transmitted
+    type: boolean
+
+  adi,spread-a2b-clock:
+    description: Enables spread spectrum mode for A²B bus clocks
+    type: boolean
+
+  adi,spread-a2b-i2s-clock:
+    description: Enables spread spectrum mode for both A²B and I²S clocks
+    type: boolean
+
+  adi,spread-spectrum-high:
+    description: Selects high spectrum spreading mode
+    type: boolean
+
+required:
+  - compatible
+  - reg
+  - clocks
+  - clock-names
+  - adi,a2b-bus
+  - adi,upstream-slot-size
+  - adi,downstream-slot-size
+  - adi,tdm-mode
+  - adi,tdm-slot-size
+
+examples:
+  - |
+    sync_clock: clock {
+      compatible = "fixed-clock";
+      #clock-cells = <0>;
+      clock-frequency  = <48000>;
+    };
+
+    i2c-bus {
+      ad2428w-master@68 {
+        reg = <0x68>;
+        compatible = "adi,ad2428w-master";
+        adi,a2b-bus = <&a2b_bus>;
+        clocks = <&sync_clock>;
+        clock-names = "sync";
+
+        adi,upstream-slot-size = <24>;
+        adi,downstream-slot-size = <24>;
+        adi,tdm-mode = <2>;
+        adi,tdm-slot-size = <32>;
+        adi,alternating-sync;
+        adi,early-sync;
+
+        codec {
+          compatible = "adi,ad2428w-codec";
+          #sound-dai-cells = <1>;
+        };
+
+        clock {
+          compatible = "adi,ad2428w-clk";
+          #clock-cells = <1>;
+          clock-output-names = "master-clk1", "master-clk2";
+        };
+
+        nodes {
+          #address-cells = <1>;
+          #size-cells = <0>;
+
+          node@0 {
+            compatible = "adi,ad2428w-slave";
+            reg = <0>;
+
+            adi,alternating-sync;
+            adi,early-sync;
+            adi,invert-sync;
+            adi,tdm-mode = <8>;
+            adi,tdm-slot-size = <32>;
+
+            downstream {
+              rx-slots = <2 3 6 7 8 9>;
+              #tx-slots = <4>;
+              #forward-slots = <6>;
+            };
+
+            upstream {
+              rx-slots = <0 1 6 7 8 9>;
+              #tx-slots = <4>;
+              #forward-slots = <6>;
+            };
+
+            a2bgpio: gpio {
+              compatible = "adi,ad2428w-gpio";
+              gpio-controller;
+              #gpio-cells = <2>;
+
+              gpio-over-distance {
+                #address-cells = <1>;
+                #size-cells = <0>;
+
+                pin@0 {
+                  reg = <0>;
+                  adi,virtual-port-mask = <0x01>;
+                };
+              };
+            };
+
+            i2c {
+              compatible = "adi,ad2428w-i2c";
+              clock-frequency = <400000>;
+              #address-cells = <1>;
+              #size-cells = <0>;
+
+              // I²C client devices located on the remote side
+              eeprom-top@52 {
+                reg = <0x52>;
+                compatible = "atmel,24c02";
+                read-only;
+              };
+            };
+
+            a2bclk: clock {
+              compatible = "adi,ad2428w-clk";
+              #clock-cells = <1>;
+              clock-output-names = "node0-clk1", "node0-clk2";
+            };
+
+            codec {
+              compatible = "adi,ad2428w-codec";
+              #sound-dai-cells = <1>;
+              adi,pdm-highpass-filter;
+            };
+          };
+        };
+      };
+    };
diff --git a/Documentation/devicetree/bindings/mfd/adi,ad242x-slave.yaml b/Documentation/devicetree/bindings/mfd/adi,ad242x-slave.yaml
new file mode 100644
index 000000000000..3bea04dff267
--- /dev/null
+++ b/Documentation/devicetree/bindings/mfd/adi,ad242x-slave.yaml
@@ -0,0 +1,108 @@ 
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: "http://devicetree.org/schemas/mfd/adi,ad242x-slave.yaml#"
+$schema: "http://devicetree.org/meta-schemas/core.yaml#"
+
+title: Analog Devices AD242x A²B slave node transceiver
+
+maintainers:
+  - Daniel Mack <daniel@zonque.org>
+
+description: |
+  AD242x slave nodes are connected to the master node through a daisy-chain.
+  Modules of this type must be listed under the 'nodes' property of the master
+  DT schema.
+
+properties:
+  compatible:
+    enum:
+      - adi,ad2428w-slave
+
+  adi,tdm-mode:
+    description: The TDM mode to use
+    allOf:
+      - $ref: '/schemas/types.yaml#/definitions/uint32'
+      - enum: [2, 4, 8, 12, 16, 20, 24, 32]
+
+  adi,tdm-slot-size:
+    description: The TDM slot size to use
+    allOf:
+      - $ref: '/schemas/types.yaml#/definitions/uint32'
+      - enum: [16, 32]
+
+  adi,alternating-sync:
+    description: Drives the SYNC pin for I²S operation
+    type: boolean
+
+  adi,invert-sync:
+    description: Invert the SYNC pin
+    type: boolean
+
+  adi,early-sync:
+    description: |
+      Make the SYNC pin change one cycle before the first slot is transmitted
+    type: boolean
+
+  adi,spread-a2b-clock:
+    description: Enables spread spectrum mode for A²B bus clocks
+    type: boolean
+
+  adi,spread-a2b-i2s-clock:
+    description: Enables spread spectrum mode for both A²B and I²S clocks
+    type: boolean
+
+  adi,spread-spectrum-high:
+    description: Selects high spectrum spreading mode
+    type: boolean
+
+  upstream:
+    type: object
+    properties:
+      rx-slots:
+        $ref: '/schemas/types.yaml#/definitions/uint32'
+        description: |
+          A bitmask that describes the slots that are received by the
+          transceiver from the upstream (A) side and put into its TX output
+          framebuffers. If not specified, an empty bitmask is assumed.
+
+      '#tx-slots':
+        $ref: '/schemas/types.yaml#/definitions/uint32'
+        description: |
+          The number of slots this transceiver contributes to the upstream
+          traffic from its RX input frame buffer
+
+      '#forward-slots':
+        $ref: '/schemas/types.yaml#/definitions/uint32'
+        description: |
+          The number of slots this transceiver forwards from the upstream side
+          to the downstream side.
+
+  downstream:
+    type: object
+    properties:
+      rx-slots:
+        $ref: '/schemas/types.yaml#/definitions/uint32'
+        description: |
+          A bitmask that describes the slots that are received by the
+          transceiver from the downstream (B) side and put into its TX output
+          framebuffers. If not specified, an empty bitmask is assumed.
+
+      '#tx-slots':
+        $ref: '/schemas/types.yaml#/definitions/uint32'
+        description: |
+          The number of slots this transceiver contributes to the downstream
+          traffic from its RX input frame buffer
+
+      '#forward-slots':
+        $ref: '/schemas/types.yaml#/definitions/uint32'
+        description: |
+          The number of slots this transceiver forwards from the downstream side
+          to the upstream side.
+
+required:
+  - compatible
+  - adi,tdm-mode
+  - adi,tdm-slot-size
+  - upstream
+  - downstream