Merge tag 'hwlock-v6.1' of git://git.kernel.org/pub/scm/linux/kernel/git/remoteproc...
[platform/kernel/linux-starfive.git] / Documentation / devicetree / bindings / sound / allwinner,sun4i-a10-i2s.yaml
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
7 title: Allwinner A10 I2S Controller
8
9 maintainers:
10   - Chen-Yu Tsai <wens@csie.org>
11   - Maxime Ripard <mripard@kernel.org>
12
13 properties:
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
63 allOf:
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
121 required:
122   - "#sound-dai-cells"
123   - compatible
124   - reg
125   - interrupts
126   - clocks
127   - clock-names
128   - dmas
129   - dma-names
130
131 additionalProperties: false
132
133 examples:
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 ...