1# SPDX-License-Identifier: GPL-2.0
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/sound/allwinner,sun4i-a10-codec.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Allwinner A10 Codec
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    enum:
19      - allwinner,sun4i-a10-codec
20      - allwinner,sun6i-a31-codec
21      - allwinner,sun7i-a20-codec
22      - allwinner,sun8i-a23-codec
23      - allwinner,sun8i-h3-codec
24      - allwinner,sun8i-v3s-codec
25
26  reg:
27    maxItems: 1
28
29  interrupts:
30    maxItems: 1
31
32  clocks:
33    items:
34      - description: Bus Clock
35      - description: Module Clock
36
37  clock-names:
38    items:
39      - const: apb
40      - const: codec
41
42  dmas:
43    items:
44      - description: RX DMA Channel
45      - description: TX DMA Channel
46
47  dma-names:
48    items:
49      - const: rx
50      - const: tx
51
52  resets:
53    maxItems: 1
54
55  allwinner,audio-routing:
56    description: |-
57      A list of the connections between audio components.  Each entry
58      is a pair of strings, the first being the connection's sink, the
59      second being the connection's source.
60    $ref: /schemas/types.yaml#/definitions/non-unique-string-array
61    minItems: 2
62    maxItems: 18
63    items:
64      enum:
65        # Audio Pins on the SoC
66        - HP
67        - HPCOM
68        - LINEIN
69        - LINEOUT
70        - MIC1
71        - MIC2
72        - MIC3
73
74        # Microphone Biases from the SoC
75        - HBIAS
76        - MBIAS
77
78        # Board Connectors
79        - Headphone
80        - Headset Mic
81        - Line In
82        - Line Out
83        - Mic
84        - Speaker
85
86  allwinner,codec-analog-controls:
87    $ref: /schemas/types.yaml#/definitions/phandle
88    description: Phandle to the codec analog controls in the PRCM
89
90  allwinner,pa-gpios:
91    maxItems: 1
92    description: GPIO to enable the external amplifier
93
94required:
95  - "#sound-dai-cells"
96  - compatible
97  - reg
98  - interrupts
99  - clocks
100  - clock-names
101  - dmas
102  - dma-names
103
104allOf:
105  - $ref: dai-common.yaml#
106  - if:
107      properties:
108        compatible:
109          enum:
110            - allwinner,sun6i-a31-codec
111            - allwinner,sun8i-a23-codec
112            - allwinner,sun8i-h3-codec
113            - allwinner,sun8i-v3s-codec
114
115    then:
116      if:
117        properties:
118          compatible:
119            const: allwinner,sun6i-a31-codec
120
121      then:
122        required:
123          - resets
124          - allwinner,audio-routing
125
126      else:
127        required:
128          - resets
129          - allwinner,audio-routing
130          - allwinner,codec-analog-controls
131
132  - if:
133      properties:
134        compatible:
135          enum:
136            - allwinner,sun6i-a31-codec
137
138    then:
139      properties:
140        allwinner,audio-routing:
141          items:
142            enum:
143              - HP
144              - HPCOM
145              - LINEIN
146              - LINEOUT
147              - MIC1
148              - MIC2
149              - MIC3
150              - HBIAS
151              - MBIAS
152              - Headphone
153              - Headset Mic
154              - Line In
155              - Line Out
156              - Mic
157              - Speaker
158
159  - if:
160      properties:
161        compatible:
162          enum:
163            - allwinner,sun8i-a23-codec
164
165    then:
166      properties:
167        allwinner,audio-routing:
168          items:
169            enum:
170              - HP
171              - HPCOM
172              - LINEIN
173              - MIC1
174              - MIC2
175              - HBIAS
176              - MBIAS
177              - Headphone
178              - Headset Mic
179              - Line In
180              - Line Out
181              - Mic
182              - Speaker
183
184  - if:
185      properties:
186        compatible:
187          enum:
188            - allwinner,sun8i-h3-codec
189
190    then:
191      properties:
192        allwinner,audio-routing:
193          items:
194            enum:
195              - HP
196              - HPCOM
197              - LINEIN
198              - LINEOUT
199              - MIC1
200              - MIC2
201              - HBIAS
202              - MBIAS
203              - Headphone
204              - Headset Mic
205              - Line In
206              - Line Out
207              - Mic
208              - Speaker
209
210  - if:
211      properties:
212        compatible:
213          enum:
214            - allwinner,sun8i-v3s-codec
215
216    then:
217      properties:
218        allwinner,audio-routing:
219          items:
220            enum:
221              - HP
222              - HPCOM
223              - MIC1
224              - HBIAS
225              - Headphone
226              - Headset Mic
227              - Line In
228              - Line Out
229              - Mic
230              - Speaker
231
232unevaluatedProperties: false
233
234examples:
235  - |
236    codec@1c22c00 {
237        #sound-dai-cells = <0>;
238        compatible = "allwinner,sun7i-a20-codec";
239        reg = <0x01c22c00 0x40>;
240        interrupts = <0 30 4>;
241        clocks = <&apb0_gates 0>, <&codec_clk>;
242        clock-names = "apb", "codec";
243        dmas = <&dma 0 19>, <&dma 0 19>;
244        dma-names = "rx", "tx";
245    };
246
247  - |
248    codec@1c22c00 {
249        #sound-dai-cells = <0>;
250        compatible = "allwinner,sun6i-a31-codec";
251        reg = <0x01c22c00 0x98>;
252        interrupts = <0 29 4>;
253        clocks = <&ccu 61>, <&ccu 135>;
254        clock-names = "apb", "codec";
255        resets = <&ccu 42>;
256        dmas = <&dma 15>, <&dma 15>;
257        dma-names = "rx", "tx";
258        allwinner,audio-routing =
259            "Headphone", "HP",
260            "Speaker", "LINEOUT",
261            "LINEIN", "Line In",
262            "MIC1", "MBIAS",
263            "MIC1", "Mic",
264            "MIC2", "HBIAS",
265            "MIC2", "Headset Mic";
266    };
267
268...
269