blob: 7f9d8c7a635a6ffc1cb4ad3a7987929d28391488 [file] [log] [blame]
Tom Rini53633a82024-02-29 12:33:36 -05001# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/sound/cirrus,cs42l43.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Cirrus Logic CS42L43 Audio CODEC
8
9maintainers:
10 - patches@opensource.cirrus.com
11
12description: |
13 The CS42L43 is an audio CODEC with integrated MIPI SoundWire interface
14 (Version 1.2.1 compliant), I2C, SPI, and I2S/TDM interfaces designed
15 for portable applications. It provides a high dynamic range, stereo
16 DAC for headphone output, two integrated Class D amplifiers for
17 loudspeakers, and two ADCs for wired headset microphone input or
18 stereo line input. PDM inputs are provided for digital microphones.
19
20allOf:
21 - $ref: dai-common.yaml#
22
23properties:
24 compatible:
25 enum:
26 - cirrus,cs42l43
27
28 reg:
29 maxItems: 1
30
31 vdd-p-supply:
32 description:
33 Power supply for the high voltage interface.
34
35 vdd-a-supply:
36 description:
37 Power supply for internal analog circuits.
38
39 vdd-d-supply:
40 description:
41 Power supply for internal digital circuits. Can be internally supplied.
42
43 vdd-io-supply:
44 description:
45 Power supply for external interface and internal digital logic.
46
47 vdd-cp-supply:
48 description:
49 Power supply for the amplifier 3 and 4 charge pump.
50
51 vdd-amp-supply:
52 description:
53 Power supply for amplifier 1 and 2.
54
55 reset-gpios:
56 maxItems: 1
57
58 interrupt-controller: true
59
60 "#interrupt-cells":
61 const: 2
62
63 interrupts:
64 maxItems: 1
65
66 "#sound-dai-cells":
67 const: 1
68
69 clocks:
70 items:
71 - description: Synchronous audio clock provided on mclk_in.
72
73 clock-names:
74 const: mclk
75
76 cirrus,bias-low:
77 type: boolean
78 description:
79 Select a 1.8V headset micbias rather than 2.8V.
80
81 cirrus,bias-sense-microamp:
82 description:
83 Current at which the headset micbias sense clamp will engage, 0 to
84 disable.
85 enum: [ 0, 14, 24, 43, 52, 61, 71, 90, 99 ]
86 default: 14
87
88 cirrus,bias-ramp-ms:
89 description:
90 Time in milliseconds the hardware allows for the headset micbias to
91 ramp up.
92 enum: [ 10, 40, 90, 170 ]
93 default: 170
94
95 cirrus,detect-us:
96 description:
97 Time in microseconds the type detection will run for. Long values will
98 cause more audible effects, but give more accurate detection.
99 enum: [ 20, 100, 1000, 10000, 50000, 75000, 100000, 200000 ]
100 default: 1000
101
102 cirrus,button-automute:
103 type: boolean
104 description:
105 Enable the hardware automuting of decimator 1 when a headset button is
106 pressed.
107
108 cirrus,buttons-ohms:
109 description:
110 Impedance in Ohms for each headset button, these should be listed in
111 ascending order.
112 minItems: 1
113 maxItems: 6
114
115 cirrus,tip-debounce-ms:
116 description:
117 Software debounce on tip sense triggering in milliseconds.
118 default: 0
119
120 cirrus,tip-invert:
121 type: boolean
122 description:
123 Indicates tip detect polarity, inverted implies open-circuit whilst the
124 jack is inserted.
125
126 cirrus,tip-disable-pullup:
127 type: boolean
128 description:
129 Indicates if the internal pullup on the tip detect should be disabled.
130
131 cirrus,tip-fall-db-ms:
132 description:
133 Time in milliseconds a falling edge on the tip detect should be hardware
134 debounced for. Note the falling edge is considered after the invert.
135 enum: [ 0, 125, 250, 500, 750, 1000, 1250, 1500 ]
136 default: 500
137
138 cirrus,tip-rise-db-ms:
139 description:
140 Time in milliseconds a rising edge on the tip detect should be hardware
141 debounced for. Note the rising edge is considered after the invert.
142 enum: [ 0, 125, 250, 500, 750, 1000, 1250, 1500 ]
143 default: 500
144
145 cirrus,use-ring-sense:
146 type: boolean
147 description:
148 Indicates if the ring sense should be used.
149
150 cirrus,ring-invert:
151 type: boolean
152 description:
153 Indicates ring detect polarity, inverted implies open-circuit whilst the
154 jack is inserted.
155
156 cirrus,ring-disable-pullup:
157 type: boolean
158 description:
159 Indicates if the internal pullup on the ring detect should be disabled.
160
161 cirrus,ring-fall-db-ms:
162 description:
163 Time in milliseconds a falling edge on the ring detect should be hardware
164 debounced for. Note the falling edge is considered after the invert.
165 enum: [ 0, 125, 250, 500, 750, 1000, 1250, 1500 ]
166 default: 500
167
168 cirrus,ring-rise-db-ms:
169 description:
170 Time in milliseconds a rising edge on the ring detect should be hardware
171 debounced for. Note the rising edge is considered after the invert.
172 enum: [ 0, 125, 250, 500, 750, 1000, 1250, 1500 ]
173 default: 500
174
175 pinctrl:
176 type: object
177 $ref: /schemas/pinctrl/pinctrl.yaml#
178 additionalProperties: false
179
180 properties:
181 gpio-controller: true
182
183 "#gpio-cells":
184 const: 2
185
186 gpio-ranges:
187 items:
188 - description: A phandle to the CODEC pinctrl node
189 minimum: 0
190 - const: 0
191 - const: 0
192 - const: 3
193
194 patternProperties:
195 "-state$":
196 oneOf:
197 - $ref: "#/$defs/cirrus-cs42l43-state"
198 - patternProperties:
199 "-pins$":
200 $ref: "#/$defs/cirrus-cs42l43-state"
201 additionalProperties: false
202
203 spi:
204 type: object
205 $ref: /schemas/spi/spi-controller.yaml#
206 unevaluatedProperties: false
207
208$defs:
209 cirrus-cs42l43-state:
210 type: object
211
212 allOf:
213 - $ref: /schemas/pinctrl/pincfg-node.yaml#
214 - $ref: /schemas/pinctrl/pinmux-node.yaml#
215
216 oneOf:
217 - required: [ groups ]
218 - required: [ pins ]
219
220 additionalProperties: false
221
222 properties:
223 groups:
224 enum: [ gpio1, gpio2, gpio3, asp, pdmout2, pdmout1, i2c, spi ]
225
226 pins:
227 enum: [ gpio1, gpio2, gpio3,
228 asp_dout, asp_fsync, asp_bclk,
229 pdmout2_clk, pdmout2_data, pdmout1_clk, pdmout1_data,
230 i2c_sda, i2c_scl,
231 spi_miso, spi_sck, spi_ssb ]
232
233 function:
234 enum: [ gpio, spdif, irq, mic-shutter, spk-shutter ]
235
236 drive-strength:
237 description: Set drive strength in mA
238 enum: [ 1, 2, 4, 8, 9, 10, 12, 16 ]
239
240 input-debounce:
241 description: Set input debounce in uS
242 enum: [ 0, 85 ]
243
244required:
245 - compatible
246 - reg
247 - vdd-p-supply
248 - vdd-a-supply
249 - vdd-io-supply
250 - vdd-cp-supply
251
252additionalProperties: false
253
254examples:
255 - |
256 #include <dt-bindings/interrupt-controller/irq.h>
257
258 i2c {
259 #address-cells = <1>;
260 #size-cells = <0>;
261
262 cs42l43: codec@1a {
263 compatible = "cirrus,cs42l43";
264 reg = <0x1a>;
265
266 vdd-p-supply = <&vdd5v0>;
267 vdd-a-supply = <&vdd1v8>;
268 vdd-io-supply = <&vdd1v8>;
269 vdd-cp-supply = <&vdd1v8>;
270 vdd-amp-supply = <&vdd5v0>;
271
272 reset-gpios = <&gpio 0>;
273
274 interrupt-controller;
275 #interrupt-cells = <2>;
276 interrupt-parent = <&gpio>;
277 interrupts = <56 IRQ_TYPE_LEVEL_LOW>;
278
279 #sound-dai-cells = <1>;
280
281 clocks = <&clks 0>;
282 clock-names = "mclk";
283
284 cs42l43_pins: pinctrl {
285 gpio-controller;
286 #gpio-cells = <2>;
287 gpio-ranges = <&cs42l43_pins 0 0 3>;
288
289 pinctrl-names = "default";
290 pinctrl-0 = <&pinsettings>;
291
292 pinsettings: default-state {
293 shutter-pins {
294 groups = "gpio3";
295 function = "mic-shutter";
296 };
297 };
298 };
299
300 spi {
301 #address-cells = <1>;
302 #size-cells = <0>;
303
304 cs-gpios = <&cs42l43_pins 1 0>;
305
306 sensor@0 {
307 compatible = "bosch,bme680";
308 reg = <0>;
309 spi-max-frequency = <1400000>;
310 };
311 };
312 };
313 };