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
23*ce09d1a6STobias Schramm      - items:
24*ce09d1a6STobias Schramm          - const: allwinner,sun8i-v3-i2s
25*ce09d1a6STobias Schramm          - const: allwinner,sun8i-h3-i2s
260a0ca8e9SMaxime Ripard      - const: allwinner,sun50i-a64-codec-i2s
270a0ca8e9SMaxime Ripard      - items:
280a0ca8e9SMaxime Ripard          - const: allwinner,sun50i-a64-i2s
290a0ca8e9SMaxime Ripard          - const: allwinner,sun8i-h3-i2s
30e84f44baSJernej Skrabec      - const: allwinner,sun50i-h6-i2s
310a0ca8e9SMaxime Ripard
320a0ca8e9SMaxime Ripard  reg:
330a0ca8e9SMaxime Ripard    maxItems: 1
340a0ca8e9SMaxime Ripard
350a0ca8e9SMaxime Ripard  interrupts:
360a0ca8e9SMaxime Ripard    maxItems: 1
370a0ca8e9SMaxime Ripard
380a0ca8e9SMaxime Ripard  clocks:
390a0ca8e9SMaxime Ripard    items:
400a0ca8e9SMaxime Ripard      - description: Bus Clock
410a0ca8e9SMaxime Ripard      - description: Module Clock
420a0ca8e9SMaxime Ripard
430a0ca8e9SMaxime Ripard  clock-names:
440a0ca8e9SMaxime Ripard    items:
450a0ca8e9SMaxime Ripard      - const: apb
460a0ca8e9SMaxime Ripard      - const: mod
470a0ca8e9SMaxime Ripard
480a0ca8e9SMaxime Ripard  # Even though it only applies to subschemas under the conditionals,
490a0ca8e9SMaxime Ripard  # not listing them here will trigger a warning because of the
500a0ca8e9SMaxime Ripard  # additionalsProperties set to false.
51eb5b1284SMaxime Ripard  dmas: true
52eb5b1284SMaxime Ripard  dma-names: true
530a0ca8e9SMaxime Ripard  resets:
540a0ca8e9SMaxime Ripard    maxItems: 1
550a0ca8e9SMaxime Ripard
560a0ca8e9SMaxime RipardallOf:
570a0ca8e9SMaxime Ripard  - if:
580a0ca8e9SMaxime Ripard      properties:
590a0ca8e9SMaxime Ripard        compatible:
600a0ca8e9SMaxime Ripard          contains:
610a0ca8e9SMaxime Ripard            enum:
620a0ca8e9SMaxime Ripard              - allwinner,sun6i-a31-i2s
630a0ca8e9SMaxime Ripard              - allwinner,sun8i-a83t-i2s
640a0ca8e9SMaxime Ripard              - allwinner,sun8i-h3-i2s
650a0ca8e9SMaxime Ripard              - allwinner,sun50i-a64-codec-i2s
66e84f44baSJernej Skrabec              - allwinner,sun50i-h6-i2s
670a0ca8e9SMaxime Ripard
680a0ca8e9SMaxime Ripard    then:
690a0ca8e9SMaxime Ripard      required:
700a0ca8e9SMaxime Ripard        - resets
710a0ca8e9SMaxime Ripard
72eb5b1284SMaxime Ripard  - if:
73eb5b1284SMaxime Ripard      properties:
74eb5b1284SMaxime Ripard        compatible:
75eb5b1284SMaxime Ripard          contains:
760bc1bf24SClément Péron            enum:
770bc1bf24SClément Péron              - allwinner,sun8i-a83t-i2s
780bc1bf24SClément Péron              - allwinner,sun8i-h3-i2s
79eb5b1284SMaxime Ripard
80eb5b1284SMaxime Ripard    then:
81eb5b1284SMaxime Ripard      properties:
82eb5b1284SMaxime Ripard        dmas:
83eb5b1284SMaxime Ripard          minItems: 1
84eb5b1284SMaxime Ripard          maxItems: 2
85eb5b1284SMaxime Ripard          items:
86eb5b1284SMaxime Ripard            - description: RX DMA Channel
87eb5b1284SMaxime Ripard            - description: TX DMA Channel
88eb5b1284SMaxime Ripard          description:
89eb5b1284SMaxime Ripard            Some controllers cannot receive but can only transmit
90eb5b1284SMaxime Ripard            data. In such a case, the RX DMA channel is to be omitted.
91eb5b1284SMaxime Ripard
92eb5b1284SMaxime Ripard        dma-names:
93eb5b1284SMaxime Ripard          oneOf:
94eb5b1284SMaxime Ripard            - items:
95eb5b1284SMaxime Ripard                - const: rx
96eb5b1284SMaxime Ripard                - const: tx
97eb5b1284SMaxime Ripard            - const: tx
98eb5b1284SMaxime Ripard          description:
99eb5b1284SMaxime Ripard            Some controllers cannot receive but can only transmit
100eb5b1284SMaxime Ripard            data. In such a case, the RX name is to be omitted.
101eb5b1284SMaxime Ripard
102eb5b1284SMaxime Ripard    else:
103eb5b1284SMaxime Ripard      properties:
104eb5b1284SMaxime Ripard        dmas:
105eb5b1284SMaxime Ripard          items:
106eb5b1284SMaxime Ripard            - description: RX DMA Channel
107eb5b1284SMaxime Ripard            - description: TX DMA Channel
108eb5b1284SMaxime Ripard
109eb5b1284SMaxime Ripard        dma-names:
110eb5b1284SMaxime Ripard          items:
111eb5b1284SMaxime Ripard            - const: rx
112eb5b1284SMaxime Ripard            - const: tx
113eb5b1284SMaxime Ripard
1140a0ca8e9SMaxime Ripardrequired:
1150a0ca8e9SMaxime Ripard  - "#sound-dai-cells"
1160a0ca8e9SMaxime Ripard  - compatible
1170a0ca8e9SMaxime Ripard  - reg
1180a0ca8e9SMaxime Ripard  - interrupts
1190a0ca8e9SMaxime Ripard  - clocks
1200a0ca8e9SMaxime Ripard  - clock-names
1210a0ca8e9SMaxime Ripard  - dmas
1220a0ca8e9SMaxime Ripard  - dma-names
1230a0ca8e9SMaxime Ripard
1240a0ca8e9SMaxime RipardadditionalProperties: false
1250a0ca8e9SMaxime Ripard
1260a0ca8e9SMaxime Ripardexamples:
1270a0ca8e9SMaxime Ripard  - |
1280a0ca8e9SMaxime Ripard    i2s0: i2s@1c22400 {
1290a0ca8e9SMaxime Ripard        #sound-dai-cells = <0>;
1300a0ca8e9SMaxime Ripard        compatible = "allwinner,sun4i-a10-i2s";
1310a0ca8e9SMaxime Ripard        reg = <0x01c22400 0x400>;
1320a0ca8e9SMaxime Ripard        interrupts = <0 16 4>;
1330a0ca8e9SMaxime Ripard        clocks = <&apb0_gates 3>, <&i2s0_clk>;
1340a0ca8e9SMaxime Ripard        clock-names = "apb", "mod";
1350a0ca8e9SMaxime Ripard        dmas = <&dma 0 3>, <&dma 0 3>;
1360a0ca8e9SMaxime Ripard        dma-names = "rx", "tx";
1370a0ca8e9SMaxime Ripard    };
1380a0ca8e9SMaxime Ripard
1390a0ca8e9SMaxime Ripard...
140