Skip to content

Commit 038e0da

Browse files
committed
mfd: Immutable branch between MFD, Pinctrl and soundwire due for the v6.6 merge window
Merge tag 'ib-mfd-pinctrl-soundwire-v6.6' of https://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd into tmp Immutable branch between MFD, Pinctrl and soundwire due for the v6.6 merge window
2 parents 2ccdd1b + d5282a5 commit 038e0da

File tree

16 files changed

+3856
-0
lines changed

16 files changed

+3856
-0
lines changed
Lines changed: 313 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,313 @@
1+
# 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+
7+
title: Cirrus Logic CS42L43 Audio CODEC
8+
9+
maintainers:
10+
11+
12+
description: |
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+
20+
allOf:
21+
- $ref: dai-common.yaml#
22+
23+
properties:
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, 23, 41, 50, 60, 68, 86, 95 ]
86+
default: 0
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: 10000
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+
244+
required:
245+
- compatible
246+
- reg
247+
- vdd-p-supply
248+
- vdd-a-supply
249+
- vdd-io-supply
250+
- vdd-cp-supply
251+
252+
additionalProperties: false
253+
254+
examples:
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+
};

MAINTAINERS

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4886,7 +4886,10 @@ L: [email protected] (moderated for non-subscribers)
48864886
48874887
S: Maintained
48884888
F: Documentation/devicetree/bindings/sound/cirrus,cs*
4889+
F: drivers/mfd/cs42l43*
4890+
F: drivers/pinctrl/cirrus/pinctrl-cs42l43*
48894891
F: include/dt-bindings/sound/cs*
4892+
F: include/linux/mfd/cs42l43*
48904893
F: include/sound/cs*
48914894
F: sound/pci/hda/cs*
48924895
F: sound/pci/hda/hda_cs_dsp_ctl.*

drivers/mfd/Kconfig

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -237,6 +237,29 @@ config MFD_CROS_EC_DEV
237237
To compile this driver as a module, choose M here: the module will be
238238
called cros-ec-dev.
239239

240+
config MFD_CS42L43
241+
tristate
242+
select MFD_CORE
243+
select REGMAP
244+
245+
config MFD_CS42L43_I2C
246+
tristate "Cirrus Logic CS42L43 (I2C)"
247+
depends on I2C
248+
select REGMAP_I2C
249+
select MFD_CS42L43
250+
help
251+
Select this to support the Cirrus Logic CS42L43 PC CODEC with
252+
headphone and class D speaker drivers over I2C.
253+
254+
config MFD_CS42L43_SDW
255+
tristate "Cirrus Logic CS42L43 (SoundWire)"
256+
depends on SOUNDWIRE
257+
select REGMAP_SOUNDWIRE
258+
select MFD_CS42L43
259+
help
260+
Select this to support the Cirrus Logic CS42L43 PC CODEC with
261+
headphone and class D speaker drivers over SoundWire.
262+
240263
config MFD_MADERA
241264
tristate "Cirrus Logic Madera codecs"
242265
select MFD_CORE

drivers/mfd/Makefile

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,9 @@ obj-$(CONFIG_ARCH_BCM2835) += bcm2835-pm.o
1313
obj-$(CONFIG_MFD_BCM590XX) += bcm590xx.o
1414
obj-$(CONFIG_MFD_BD9571MWV) += bd9571mwv.o
1515
obj-$(CONFIG_MFD_CROS_EC_DEV) += cros_ec_dev.o
16+
obj-$(CONFIG_MFD_CS42L43) += cs42l43.o
17+
obj-$(CONFIG_MFD_CS42L43_I2C) += cs42l43-i2c.o
18+
obj-$(CONFIG_MFD_CS42L43_SDW) += cs42l43-sdw.o
1619
obj-$(CONFIG_MFD_ENE_KB3930) += ene-kb3930.o
1720
obj-$(CONFIG_MFD_EXYNOS_LPASS) += exynos-lpass.o
1821
obj-$(CONFIG_MFD_GATEWORKS_GSC) += gateworks-gsc.o

0 commit comments

Comments
 (0)