1# SPDX-License-Identifier: (GPL-2.0+ OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/sound/allwinner,sun4i-a10-i2s.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Allwinner A10 I2S Controller
8
9maintainers:
10  - Chen-Yu Tsai <wens@csie.org>
11  - Maxime Ripard <mripard@kernel.org>
12
13properties:
14  "#sound-dai-cells":
15    const: 0
16
17  compatible:
18    oneOf:
19      - const: allwinner,sun4i-a10-i2s
20      - const: allwinner,sun6i-a31-i2s
21      - const: allwinner,sun8i-a83t-i2s
22      - const: allwinner,sun8i-h3-i2s
23      - items:
24          - const: allwinner,sun8i-r40-i2s
25          - const: allwinner,sun8i-h3-i2s
26      - items:
27          - const: allwinner,sun8i-v3-i2s
28          - const: allwinner,sun8i-h3-i2s
29      - const: allwinner,sun50i-a64-codec-i2s
30      - items:
31          - const: allwinner,sun50i-a64-i2s
32          - const: allwinner,sun8i-h3-i2s
33      - const: allwinner,sun50i-h6-i2s
34      - const: allwinner,sun50i-r329-i2s
35      - items:
36          - const: allwinner,sun20i-d1-i2s
37          - const: allwinner,sun50i-r329-i2s
38
39  reg:
40    maxItems: 1
41
42  interrupts:
43    maxItems: 1
44
45  clocks:
46    items:
47      - description: Bus Clock
48      - description: Module Clock
49
50  clock-names:
51    items:
52      - const: apb
53      - const: mod
54
55  # Even though it only applies to subschemas under the conditionals,
56  # not listing them here will trigger a warning because of the
57  # additionalsProperties set to false.
58  dmas: true
59  dma-names: true
60  resets:
61    maxItems: 1
62
63allOf:
64  - if:
65      properties:
66        compatible:
67          contains:
68            enum:
69              - allwinner,sun6i-a31-i2s
70              - allwinner,sun8i-a83t-i2s
71              - allwinner,sun8i-h3-i2s
72              - allwinner,sun50i-a64-codec-i2s
73              - allwinner,sun50i-h6-i2s
74              - allwinner,sun50i-r329-i2s
75
76    then:
77      required:
78        - resets
79
80  - if:
81      properties:
82        compatible:
83          contains:
84            enum:
85              - allwinner,sun8i-a83t-i2s
86              - allwinner,sun8i-h3-i2s
87
88    then:
89      properties:
90        dmas:
91          minItems: 1
92          items:
93            - description: RX DMA Channel
94            - description: TX DMA Channel
95          description:
96            Some controllers cannot receive but can only transmit
97            data. In such a case, the RX DMA channel is to be omitted.
98
99        dma-names:
100          oneOf:
101            - items:
102                - const: rx
103                - const: tx
104            - const: tx
105          description:
106            Some controllers cannot receive but can only transmit
107            data. In such a case, the RX name is to be omitted.
108
109    else:
110      properties:
111        dmas:
112          items:
113            - description: RX DMA Channel
114            - description: TX DMA Channel
115
116        dma-names:
117          items:
118            - const: rx
119            - const: tx
120
121required:
122  - "#sound-dai-cells"
123  - compatible
124  - reg
125  - interrupts
126  - clocks
127  - clock-names
128  - dmas
129  - dma-names
130
131additionalProperties: false
132
133examples:
134  - |
135    i2s0: i2s@1c22400 {
136        #sound-dai-cells = <0>;
137        compatible = "allwinner,sun4i-a10-i2s";
138        reg = <0x01c22400 0x400>;
139        interrupts = <0 16 4>;
140        clocks = <&apb0_gates 3>, <&i2s0_clk>;
141        clock-names = "apb", "mod";
142        dmas = <&dma 0 3>, <&dma 0 3>;
143        dma-names = "rx", "tx";
144    };
145
146...
147