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 Device Tree Bindings
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          maxItems: 2
93          items:
94            - description: RX DMA Channel
95            - description: TX DMA Channel
96          description:
97            Some controllers cannot receive but can only transmit
98            data. In such a case, the RX DMA channel is to be omitted.
99
100        dma-names:
101          oneOf:
102            - items:
103                - const: rx
104                - const: tx
105            - const: tx
106          description:
107            Some controllers cannot receive but can only transmit
108            data. In such a case, the RX name is to be omitted.
109
110    else:
111      properties:
112        dmas:
113          items:
114            - description: RX DMA Channel
115            - description: TX DMA Channel
116
117        dma-names:
118          items:
119            - const: rx
120            - const: tx
121
122required:
123  - "#sound-dai-cells"
124  - compatible
125  - reg
126  - interrupts
127  - clocks
128  - clock-names
129  - dmas
130  - dma-names
131
132additionalProperties: false
133
134examples:
135  - |
136    i2s0: i2s@1c22400 {
137        #sound-dai-cells = <0>;
138        compatible = "allwinner,sun4i-a10-i2s";
139        reg = <0x01c22400 0x400>;
140        interrupts = <0 16 4>;
141        clocks = <&apb0_gates 3>, <&i2s0_clk>;
142        clock-names = "apb", "mod";
143        dmas = <&dma 0 3>, <&dma 0 3>;
144        dma-names = "rx", "tx";
145    };
146
147...
148