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