Linux 6.7-rc7
[linux-modified.git] / Documentation / devicetree / bindings / sound / wlf,wm8994.yaml
1 # SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
2 %YAML 1.2
3 ---
4 $id: http://devicetree.org/schemas/sound/wlf,wm8994.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
6
7 title: Wolfson WM1811/WM8994/WM8958 audio codecs
8
9 maintainers:
10   - Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
11   - patches@opensource.cirrus.com
12
13 description: |
14   These devices support both I2C and SPI (configured with pin strapping on the
15   board).
16
17   Pins on the device (for linking into audio routes):
18   IN1LN, IN1LP, IN2LN, IN2LP:VXRN, IN1RN, IN1RP, IN2RN, IN2RP:VXRP, SPKOUTLP,
19   SPKOUTLN, SPKOUTRP, SPKOUTRN, HPOUT1L, HPOUT1R, HPOUT2P, HPOUT2N, LINEOUT1P,
20   LINEOUT1N, LINEOUT2P, LINEOUT2N.
21
22 properties:
23   compatible:
24     enum:
25       - wlf,wm1811
26       - wlf,wm8994
27       - wlf,wm8958
28
29   reg:
30     maxItems: 1
31
32   clocks:
33     minItems: 1
34     maxItems: 2
35
36   clock-names:
37     minItems: 1
38     items:
39       - const: MCLK1
40       - const: MCLK2
41
42   gpio-controller: true
43
44   '#gpio-cells':
45     const: 2
46
47   interrupts:
48     maxItems: 1
49
50   interrupt-controller: true
51
52   '#interrupt-cells':
53     const: 2
54     description:
55       The first cell is the IRQ number. The second cell is the flags, encoded
56       as the trigger masks.
57
58   AVDD1-supply: true
59   AVDD2-supply: true
60   CPVDD-supply: true
61   DBVDD-supply: true
62   DBVDD1-supply: true
63   DBVDD2-supply: true
64   DBVDD3-supply: true
65   DCVDD-supply: true
66   LDO1VDD-supply: true
67   LDO2VDD-supply: true
68   SPKVDD1-supply: true
69   SPKVDD2-supply: true
70
71   '#sound-dai-cells':
72     const: 0
73
74   wlf,gpio-cfg:
75     $ref: /schemas/types.yaml#/definitions/uint32-array
76     maxItems: 11
77     description:
78       A list of GPIO configuration register values. If absent, no configuration
79       of these registers is performed. If any value is over 0xffff then the
80       register will be left as default. If present 11 values must be supplied.
81
82   wlf,micbias-cfg:
83     $ref: /schemas/types.yaml#/definitions/uint32-array
84     maxItems: 2
85     description:
86       Two MICBIAS register values for WM1811 or WM8958.  If absent the register
87       defaults will be used.
88
89   wlf,ldo1ena-gpios:
90     maxItems: 1
91     description:
92       Control of LDO1ENA input to device.
93
94   wlf,ldo2ena-gpios:
95     maxItems: 1
96     description:
97       Control of LDO2ENA input to device.
98
99   wlf,lineout1-se:
100     type: boolean
101     description:
102       LINEOUT1 is in single ended mode.
103
104   wlf,lineout2-se:
105     type: boolean
106     description:
107       INEOUT2 is in single ended mode.
108
109   wlf,lineout1-feedback:
110     type: boolean
111     description:
112       LINEOUT1 has common mode feedback connected.
113
114   wlf,lineout2-feedback:
115     type: boolean
116     description:
117       LINEOUT2 has common mode feedback connected.
118
119   wlf,ldoena-always-driven:
120     type: boolean
121     description:
122       LDOENA is always driven.
123
124   wlf,spkmode-pu:
125     type: boolean
126     description:
127       Enable the internal pull-up resistor on the SPKMODE pin.
128
129   wlf,csnaddr-pd:
130     type: boolean
131     description:
132       Enable the internal pull-down resistor on the CS/ADDR pin.
133
134 required:
135   - compatible
136   - reg
137   - AVDD2-supply
138   - CPVDD-supply
139   - SPKVDD1-supply
140   - SPKVDD2-supply
141
142 allOf:
143   - $ref: dai-common.yaml#
144   - if:
145       properties:
146         compatible:
147           enum:
148             - wlf,wm1811
149             - wlf,wm8958
150     then:
151       properties:
152         DBVDD-supply: false
153         LDO2VDD-supply: false
154       required:
155         - DBVDD1-supply
156         - DBVDD2-supply
157         - DBVDD3-supply
158     else:
159       properties:
160         DBVDD1-supply: false
161         DBVDD2-supply: false
162         DBVDD3-supply: false
163       required:
164         - DBVDD-supply
165
166 unevaluatedProperties: false
167
168 examples:
169   - |
170     #include <dt-bindings/gpio/gpio.h>
171
172     i2c {
173         #address-cells = <1>;
174         #size-cells = <0>;
175
176         audio-codec@1a {
177             compatible = "wlf,wm1811";
178             reg = <0x1a>;
179             clocks = <&i2s0 0>;
180             clock-names = "MCLK1";
181
182             AVDD2-supply = <&main_dc_reg>;
183             CPVDD-supply = <&main_dc_reg>;
184             DBVDD1-supply = <&main_dc_reg>;
185             DBVDD2-supply = <&main_dc_reg>;
186             DBVDD3-supply = <&main_dc_reg>;
187             LDO1VDD-supply = <&main_dc_reg>;
188             SPKVDD1-supply = <&main_dc_reg>;
189             SPKVDD2-supply = <&main_dc_reg>;
190
191             wlf,ldo1ena-gpios = <&gpb0 0 GPIO_ACTIVE_HIGH>;
192             wlf,ldo2ena-gpios = <&gpb0 1 GPIO_ACTIVE_HIGH>;
193         };
194     };