1# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/mfd/cirrus,lochnagar.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Cirrus Logic Lochnagar Audio Development Board
8
9maintainers:
10  - patches@opensource.cirrus.com
11
12description: |
13  Lochnagar is an evaluation and development board for Cirrus Logic
14  Smart CODEC and Amp devices. It allows the connection of most Cirrus
15  Logic devices on mini-cards, as well as allowing connection of
16  various application processor systems to provide a full evaluation
17  platform.  Audio system topology, clocking and power can all be
18  controlled through the Lochnagar, allowing the device under test
19  to be used in a variety of possible use cases.
20
21  Also see these documents for generic binding information:
22    [1] GPIO : ../gpio/gpio.txt
23
24  And these for relevant defines:
25    [2] include/dt-bindings/pinctrl/lochnagar.h
26    [3] include/dt-bindings/clock/lochnagar.h
27
28  And these documents for the required sub-node binding details:
29    [4] Clock: ../clock/cirrus,lochnagar.yaml
30    [5] Pinctrl: ../pinctrl/cirrus,lochnagar.yaml
31    [6] Sound: ../sound/cirrus,lochnagar.yaml
32    [7] Hardware Monitor: ../hwmon/cirrus,lochnagar.yaml
33
34allOf:
35  - if:
36      properties:
37        compatible:
38          enum:
39            - cirrus,lochnagar2
40    then:
41      properties:
42        lochnagar-hwmon:
43          type: object
44          $ref: /schemas/hwmon/cirrus,lochnagar.yaml#
45
46        lochnagar-sc:
47          type: object
48          $ref: /schemas/sound/cirrus,lochnagar.yaml#
49
50properties:
51  compatible:
52    enum:
53      - cirrus,lochnagar1
54      - cirrus,lochnagar2
55
56  reg:
57    const: 0x22
58
59  reset-gpios:
60    maxItems: 1
61
62  present-gpios:
63    description: |
64      Host present line, indicating the presence of a
65      host system, see [1]. This can be omitted if the present line is
66      tied in hardware.
67    maxItems: 1
68
69  lochnagar-clk:
70    type: object
71    $ref: /schemas/clock/cirrus,lochnagar.yaml#
72
73  lochnagar-pmic32k:
74    type: object
75    $ref: /schemas/clock/fixed-clock.yaml#
76    properties:
77      clock-frequency:
78        const: 32768
79
80  lochnagar-clk12m:
81    type: object
82    $ref: /schemas/clock/fixed-clock.yaml#
83    properties:
84      clock-frequency:
85        const: 12288000
86
87  lochnagar-clk11m:
88    type: object
89    $ref: /schemas/clock/fixed-clock.yaml#
90    properties:
91      clock-frequency:
92        const: 11298600
93
94  lochnagar-clk24m:
95    type: object
96    $ref: /schemas/clock/fixed-clock.yaml#
97    properties:
98      clock-frequency:
99        const: 24576000
100
101  lochnagar-clk22m:
102    type: object
103    $ref: /schemas/clock/fixed-clock.yaml#
104    properties:
105      clock-frequency:
106        const: 22579200
107
108  lochnagar-clk8m:
109    type: object
110    $ref: /schemas/clock/fixed-clock.yaml#
111    properties:
112      clock-frequency:
113        const: 8192000
114
115  lochnagar-usb24m:
116    type: object
117    $ref: /schemas/clock/fixed-clock.yaml#
118    properties:
119      clock-frequency:
120        const: 24576000
121
122  lochnagar-usb12m:
123    type: object
124    $ref: /schemas/clock/fixed-clock.yaml#
125    properties:
126      clock-frequency:
127        const: 12288000
128
129  pinctrl:
130    type: object
131    $ref: /schemas/pinctrl/cirrus,lochnagar.yaml#
132
133  lochnagar-hwmon:
134    type: object
135    $ref: /schemas/hwmon/cirrus,lochnagar.yaml#
136
137  lochnagar-sc:
138    type: object
139    $ref: /schemas/sound/cirrus,lochnagar.yaml#
140
141  VDDCORE:
142    description:
143      Initialisation data for the VDDCORE regulator, which supplies the
144      CODECs digital core if not being provided by an internal regulator.
145    type: object
146    $ref: /schemas/regulator/regulator.yaml#
147    unevaluatedProperties: false
148    properties:
149      compatible:
150        enum:
151          - cirrus,lochnagar2-vddcore
152
153      SYSVDD-supply:
154        description:
155          Primary power supply for the Lochnagar.
156    required:
157      - compatible
158
159  MICVDD:
160    description:
161      Initialisation data for the MICVDD regulator, which supplies the
162      CODECs MICVDD.
163    type: object
164    $ref: /schemas/regulator/regulator.yaml#
165    unevaluatedProperties: false
166    properties:
167      compatible:
168        enum:
169          - cirrus,lochnagar2-micvdd
170
171      SYSVDD-supply:
172        description:
173          Primary power supply for the Lochnagar.
174    required:
175      - compatible
176
177  MIC1VDD:
178    description:
179      Initialisation data for the MIC1VDD supplies.
180    type: object
181    $ref: /schemas/regulator/regulator.yaml#
182    unevaluatedProperties: false
183    properties:
184      compatible:
185        enum:
186          - cirrus,lochnagar2-mic1vdd
187
188      cirrus,micbias-input:
189        description:
190          A property selecting which of the CODEC minicard micbias outputs
191          should be used.
192        $ref: /schemas/types.yaml#/definitions/uint32
193        minimum: 1
194        maximum: 4
195
196      MICBIAS1-supply:
197        description:
198          Regulator supplies for the MIC1VDD outputs, supplying the digital
199          microphones, normally supplied from the attached CODEC.
200    required:
201      - compatible
202
203  MIC2VDD:
204    description:
205      Initialisation data for the MIC2VDD supplies.
206    type: object
207    $ref: /schemas/regulator/regulator.yaml#
208    unevaluatedProperties: false
209    properties:
210      compatible:
211        enum:
212          - cirrus,lochnagar2-mic2vdd
213
214      cirrus,micbias-input:
215        description:
216          A property selecting which of the CODEC minicard micbias outputs
217          should be used.
218        $ref: /schemas/types.yaml#/definitions/uint32
219        minimum: 1
220        maximum: 4
221
222      MICBIAS2-supply:
223        description:
224          Regulator supplies for the MIC2VDD outputs, supplying the digital
225          microphones, normally supplied from the attached CODEC.
226    required:
227      - compatible
228
229  VDD1V8:
230    description:
231      Recommended fixed regulator for the VDD1V8 regulator, which supplies
232      the CODECs analog and 1.8V digital supplies.
233    type: object
234    $ref: /schemas/regulator/regulator.yaml#
235    unevaluatedProperties: false
236    properties:
237      compatible:
238        enum:
239          - regulator-fixed
240
241      regulator-min-microvolt:
242        const: 1800000
243
244      regulator-max-microvolt:
245        const: 1800000
246
247      vin-supply:
248        description:
249          Should be set to same supply as SYSVDD
250    required:
251      - compatible
252      - regulator-min-microvolt
253      - regulator-max-microvolt
254      - regulator-boot-on
255      - regulator-always-on
256      - vin-supply
257
258required:
259  - compatible
260  - reg
261  - reset-gpios
262  - lochnagar-clk
263  - pinctrl
264
265additionalProperties: false
266
267examples:
268  - |
269    #include <dt-bindings/clock/lochnagar.h>
270    #include <dt-bindings/pinctrl/lochnagar.h>
271    i2c@e0004000 {
272        #address-cells = <1>;
273        #size-cells = <0>;
274        reg = <0xe0004000 0x1000>;
275
276        lochnagar: lochnagar@22 {
277            compatible = "cirrus,lochnagar2";
278            reg = <0x22>;
279
280            reset-gpios = <&gpio0 55 0>;
281            present-gpios = <&gpio0 60 0>;
282
283            lochnagarclk: lochnagar-clk {
284                compatible = "cirrus,lochnagar2-clk";
285
286                #clock-cells = <1>;
287                clocks = <&clkaudio>, <&clkpmic>;
288                clock-names = "ln-gf-mclk2", "ln-pmic-32k";
289
290                assigned-clocks = <&lochnagarclk LOCHNAGAR_CDC_MCLK1>,
291                                  <&lochnagarclk LOCHNAGAR_CDC_MCLK2>;
292                assigned-clock-parents = <&clkaudio>, <&clkpmic>;
293            };
294
295            clkpmic: lochnagar-pmic32k {
296                compatible = "fixed-clock";
297                #clock-cells = <0>;
298                clock-frequency = <32768>;
299            };
300
301            pinctrl {
302                compatible = "cirrus,lochnagar-pinctrl";
303
304                gpio-controller;
305                #gpio-cells = <2>;
306                gpio-ranges = <&lochnagar 0 0 LOCHNAGAR2_PIN_NUM_GPIOS>;
307
308                pinctrl-names = "default";
309                pinctrl-0 = <&pinsettings>;
310
311                pinsettings: pin-settings {
312                    ap2aif-pins {
313                        input-enable;
314                        groups = "gf-aif1";
315                        function = "codec-aif3";
316                    };
317                    codec2aif-pins {
318                        output-enable;
319                        groups = "codec-aif3";
320                        function = "gf-aif1";
321                    };
322                };
323            };
324
325            lochnagar-sc {
326                compatible = "cirrus,lochnagar2-soundcard";
327
328                #sound-dai-cells = <1>;
329
330                clocks = <&lochnagarclk LOCHNAGAR_SOUNDCARD_MCLK>;
331                clock-names = "mclk";
332            };
333
334            lochnagar-hwmon {
335                compatible = "cirrus,lochnagar2-hwmon";
336            };
337
338            MIC1VDD {
339                compatible = "cirrus,lochnagar2-mic1vdd";
340
341                cirrus,micbias-input = <3>;
342            };
343
344            MICVDD {
345                compatible = "cirrus,lochnagar2-micvdd";
346
347                SYSVDD-supply = <&wallvdd>;
348
349                regulator-min-microvolt = <3300000>;
350                regulator-max-microvolt = <3300000>;
351            };
352
353            VDD1V8 {
354                compatible = "regulator-fixed";
355
356                regulator-name = "VDD1V8";
357                regulator-min-microvolt = <1800000>;
358                regulator-max-microvolt = <1800000>;
359                regulator-boot-on;
360                regulator-always-on;
361
362                vin-supply = <&wallvdd>;
363            };
364        };
365    };
366