1# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/sound/snps,designware-i2s.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: DesignWare I2S controller
8
9maintainers:
10  - Jose Abreu <joabreu@synopsys.com>
11
12properties:
13  compatible:
14    oneOf:
15      - items:
16          - const: canaan,k210-i2s
17          - const: snps,designware-i2s
18      - enum:
19          - snps,designware-i2s
20          - starfive,jh7110-i2stx0
21          - starfive,jh7110-i2stx1
22          - starfive,jh7110-i2srx
23
24  reg:
25    maxItems: 1
26
27  interrupts:
28    description: |
29      The interrupt line number for the I2S controller. Add this
30      parameter if the I2S controller that you are using does not
31      support DMA.
32    maxItems: 1
33
34  clocks:
35    items:
36      - description: Sampling rate reference clock
37      - description: APB clock
38      - description: Audio master clock
39      - description: Inner audio master clock source
40      - description: External audio master clock source
41      - description: Bit clock
42      - description: Left/right channel clock
43      - description: External bit clock
44      - description: External left/right channel clock
45    minItems: 1
46
47  clock-names:
48    items:
49      - const: i2sclk
50      - const: apb
51      - const: mclk
52      - const: mclk_inner
53      - const: mclk_ext
54      - const: bclk
55      - const: lrck
56      - const: bclk_ext
57      - const: lrck_ext
58    minItems: 1
59
60  resets:
61    items:
62      - description: Optional controller resets
63      - description: controller reset of Sampling rate
64    minItems: 1
65
66  dmas:
67    items:
68      - description: TX DMA Channel
69      - description: RX DMA Channel
70    minItems: 1
71
72  dma-names:
73    items:
74      - const: tx
75      - const: rx
76    minItems: 1
77
78  starfive,syscon:
79    $ref: /schemas/types.yaml#/definitions/phandle-array
80    items:
81      - items:
82          - description: phandle to System Register Controller sys_syscon node.
83          - description: I2S-rx enabled control offset of SYS_SYSCONSAIF__SYSCFG register.
84          - description: I2S-rx enabled control mask
85    description:
86      The phandle to System Register Controller syscon node and the I2S-rx(ADC)
87      enabled control offset and mask of SYS_SYSCONSAIF__SYSCFG register.
88
89allOf:
90  - $ref: dai-common.yaml#
91  - if:
92      properties:
93        compatible:
94          contains:
95            const: canaan,k210-i2s
96    then:
97      properties:
98        "#sound-dai-cells":
99          const: 1
100    else:
101      properties:
102        "#sound-dai-cells":
103          const: 0
104  - if:
105      properties:
106        compatible:
107          contains:
108            const: snps,designware-i2s
109    then:
110      properties:
111        clocks:
112          maxItems: 1
113        clock-names:
114          maxItems: 1
115        resets:
116          maxItems: 1
117    else:
118      properties:
119        resets:
120          minItems: 2
121          maxItems: 2
122  - if:
123      properties:
124        compatible:
125          contains:
126            const: starfive,jh7110-i2stx0
127    then:
128      properties:
129        clocks:
130          minItems: 5
131          maxItems: 5
132        clock-names:
133          minItems: 5
134          maxItems: 5
135      required:
136        - resets
137  - if:
138      properties:
139        compatible:
140          contains:
141            const: starfive,jh7110-i2stx1
142    then:
143      properties:
144        clocks:
145          minItems: 9
146          maxItems: 9
147        clock-names:
148          minItems: 9
149          maxItems: 9
150      required:
151        - resets
152  - if:
153      properties:
154        compatible:
155          contains:
156            const: starfive,jh7110-i2srx
157    then:
158      properties:
159        clocks:
160          minItems: 9
161          maxItems: 9
162        clock-names:
163          minItems: 9
164          maxItems: 9
165      required:
166        - resets
167        - starfive,syscon
168    else:
169      properties:
170        starfive,syscon: false
171
172required:
173  - compatible
174  - reg
175  - clocks
176  - clock-names
177
178oneOf:
179  - required:
180      - dmas
181      - dma-names
182  - required:
183      - interrupts
184
185unevaluatedProperties: false
186
187examples:
188  - |
189    soc_i2s: i2s@7ff90000 {
190      compatible = "snps,designware-i2s";
191      reg = <0x7ff90000 0x1000>;
192      clocks = <&scpi_i2sclk 0>;
193      clock-names = "i2sclk";
194      #sound-dai-cells = <0>;
195      dmas = <&dma0 5>;
196      dma-names = "tx";
197    };
198