10a0ca8e9SMaxime Ripard# SPDX-License-Identifier: (GPL-2.0+ OR BSD-2-Clause)
20a0ca8e9SMaxime Ripard%YAML 1.2
30a0ca8e9SMaxime Ripard---
40a0ca8e9SMaxime Ripard$id: http://devicetree.org/schemas/sound/allwinner,sun4i-a10-i2s.yaml#
50a0ca8e9SMaxime Ripard$schema: http://devicetree.org/meta-schemas/core.yaml#
60a0ca8e9SMaxime Ripard
70a0ca8e9SMaxime Ripardtitle: Allwinner A10 I2S Controller Device Tree Bindings
80a0ca8e9SMaxime Ripard
90a0ca8e9SMaxime Ripardmaintainers:
100a0ca8e9SMaxime Ripard  - Chen-Yu Tsai <wens@csie.org>
115c7404bbSMaxime Ripard  - Maxime Ripard <mripard@kernel.org>
120a0ca8e9SMaxime Ripard
130a0ca8e9SMaxime Ripardproperties:
140a0ca8e9SMaxime Ripard  "#sound-dai-cells":
150a0ca8e9SMaxime Ripard    const: 0
160a0ca8e9SMaxime Ripard
170a0ca8e9SMaxime Ripard  compatible:
180a0ca8e9SMaxime Ripard    oneOf:
190a0ca8e9SMaxime Ripard      - const: allwinner,sun4i-a10-i2s
200a0ca8e9SMaxime Ripard      - const: allwinner,sun6i-a31-i2s
210a0ca8e9SMaxime Ripard      - const: allwinner,sun8i-a83t-i2s
220a0ca8e9SMaxime Ripard      - const: allwinner,sun8i-h3-i2s
230a0ca8e9SMaxime Ripard      - const: allwinner,sun50i-a64-codec-i2s
240a0ca8e9SMaxime Ripard      - items:
250a0ca8e9SMaxime Ripard          - const: allwinner,sun50i-a64-i2s
260a0ca8e9SMaxime Ripard          - const: allwinner,sun8i-h3-i2s
27e84f44baSJernej Skrabec      - const: allwinner,sun50i-h6-i2s
280a0ca8e9SMaxime Ripard
290a0ca8e9SMaxime Ripard  reg:
300a0ca8e9SMaxime Ripard    maxItems: 1
310a0ca8e9SMaxime Ripard
320a0ca8e9SMaxime Ripard  interrupts:
330a0ca8e9SMaxime Ripard    maxItems: 1
340a0ca8e9SMaxime Ripard
350a0ca8e9SMaxime Ripard  clocks:
360a0ca8e9SMaxime Ripard    items:
370a0ca8e9SMaxime Ripard      - description: Bus Clock
380a0ca8e9SMaxime Ripard      - description: Module Clock
390a0ca8e9SMaxime Ripard
400a0ca8e9SMaxime Ripard  clock-names:
410a0ca8e9SMaxime Ripard    items:
420a0ca8e9SMaxime Ripard      - const: apb
430a0ca8e9SMaxime Ripard      - const: mod
440a0ca8e9SMaxime Ripard
450a0ca8e9SMaxime Ripard  # Even though it only applies to subschemas under the conditionals,
460a0ca8e9SMaxime Ripard  # not listing them here will trigger a warning because of the
470a0ca8e9SMaxime Ripard  # additionalsProperties set to false.
48eb5b1284SMaxime Ripard  dmas: true
49eb5b1284SMaxime Ripard  dma-names: true
500a0ca8e9SMaxime Ripard  resets:
510a0ca8e9SMaxime Ripard    maxItems: 1
520a0ca8e9SMaxime Ripard
530a0ca8e9SMaxime RipardallOf:
540a0ca8e9SMaxime Ripard  - if:
550a0ca8e9SMaxime Ripard      properties:
560a0ca8e9SMaxime Ripard        compatible:
570a0ca8e9SMaxime Ripard          contains:
580a0ca8e9SMaxime Ripard            enum:
590a0ca8e9SMaxime Ripard              - allwinner,sun6i-a31-i2s
600a0ca8e9SMaxime Ripard              - allwinner,sun8i-a83t-i2s
610a0ca8e9SMaxime Ripard              - allwinner,sun8i-h3-i2s
620a0ca8e9SMaxime Ripard              - allwinner,sun50i-a64-codec-i2s
63e84f44baSJernej Skrabec              - allwinner,sun50i-h6-i2s
640a0ca8e9SMaxime Ripard
650a0ca8e9SMaxime Ripard    then:
660a0ca8e9SMaxime Ripard      required:
670a0ca8e9SMaxime Ripard        - resets
680a0ca8e9SMaxime Ripard
69eb5b1284SMaxime Ripard  - if:
70eb5b1284SMaxime Ripard      properties:
71eb5b1284SMaxime Ripard        compatible:
72eb5b1284SMaxime Ripard          contains:
73*0bc1bf24SClément Péron            enum:
74*0bc1bf24SClément Péron              - allwinner,sun8i-a83t-i2s
75*0bc1bf24SClément Péron              - allwinner,sun8i-h3-i2s
76eb5b1284SMaxime Ripard
77eb5b1284SMaxime Ripard    then:
78eb5b1284SMaxime Ripard      properties:
79eb5b1284SMaxime Ripard        dmas:
80eb5b1284SMaxime Ripard          minItems: 1
81eb5b1284SMaxime Ripard          maxItems: 2
82eb5b1284SMaxime Ripard          items:
83eb5b1284SMaxime Ripard            - description: RX DMA Channel
84eb5b1284SMaxime Ripard            - description: TX DMA Channel
85eb5b1284SMaxime Ripard          description:
86eb5b1284SMaxime Ripard            Some controllers cannot receive but can only transmit
87eb5b1284SMaxime Ripard            data. In such a case, the RX DMA channel is to be omitted.
88eb5b1284SMaxime Ripard
89eb5b1284SMaxime Ripard        dma-names:
90eb5b1284SMaxime Ripard          oneOf:
91eb5b1284SMaxime Ripard            - items:
92eb5b1284SMaxime Ripard                - const: rx
93eb5b1284SMaxime Ripard                - const: tx
94eb5b1284SMaxime Ripard            - const: tx
95eb5b1284SMaxime Ripard          description:
96eb5b1284SMaxime Ripard            Some controllers cannot receive but can only transmit
97eb5b1284SMaxime Ripard            data. In such a case, the RX name is to be omitted.
98eb5b1284SMaxime Ripard
99eb5b1284SMaxime Ripard    else:
100eb5b1284SMaxime Ripard      properties:
101eb5b1284SMaxime Ripard        dmas:
102eb5b1284SMaxime Ripard          items:
103eb5b1284SMaxime Ripard            - description: RX DMA Channel
104eb5b1284SMaxime Ripard            - description: TX DMA Channel
105eb5b1284SMaxime Ripard
106eb5b1284SMaxime Ripard        dma-names:
107eb5b1284SMaxime Ripard          items:
108eb5b1284SMaxime Ripard            - const: rx
109eb5b1284SMaxime Ripard            - const: tx
110eb5b1284SMaxime Ripard
1110a0ca8e9SMaxime Ripardrequired:
1120a0ca8e9SMaxime Ripard  - "#sound-dai-cells"
1130a0ca8e9SMaxime Ripard  - compatible
1140a0ca8e9SMaxime Ripard  - reg
1150a0ca8e9SMaxime Ripard  - interrupts
1160a0ca8e9SMaxime Ripard  - clocks
1170a0ca8e9SMaxime Ripard  - clock-names
1180a0ca8e9SMaxime Ripard  - dmas
1190a0ca8e9SMaxime Ripard  - dma-names
1200a0ca8e9SMaxime Ripard
1210a0ca8e9SMaxime RipardadditionalProperties: false
1220a0ca8e9SMaxime Ripard
1230a0ca8e9SMaxime Ripardexamples:
1240a0ca8e9SMaxime Ripard  - |
1250a0ca8e9SMaxime Ripard    i2s0: i2s@1c22400 {
1260a0ca8e9SMaxime Ripard        #sound-dai-cells = <0>;
1270a0ca8e9SMaxime Ripard        compatible = "allwinner,sun4i-a10-i2s";
1280a0ca8e9SMaxime Ripard        reg = <0x01c22400 0x400>;
1290a0ca8e9SMaxime Ripard        interrupts = <0 16 4>;
1300a0ca8e9SMaxime Ripard        clocks = <&apb0_gates 3>, <&i2s0_clk>;
1310a0ca8e9SMaxime Ripard        clock-names = "apb", "mod";
1320a0ca8e9SMaxime Ripard        dmas = <&dma 0 3>, <&dma 0 3>;
1330a0ca8e9SMaxime Ripard        dma-names = "rx", "tx";
1340a0ca8e9SMaxime Ripard    };
1350a0ca8e9SMaxime Ripard
1360a0ca8e9SMaxime Ripard...
137