dt-bindings: mfd: cirrus,cs42l43: Add initial DT binding
The CS42L43 is an audio CODEC with integrated MIPI SoundWire interface (Version 1.2.1 compliant), I2C, SPI, and I2S/TDM interfaces designed for portable applications. It provides a high dynamic range, stereo DAC for headphone output, two integrated Class D amplifiers for loudspeakers, and two ADCs for wired headset microphone input or stereo line input. PDM inputs are provided for digital microphones. Add a YAML DT binding document for this device. Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com> Link: https://lore.kernel.org/r/20230804104602.395892-3-ckeepax@opensource.cirrus.com Signed-off-by: Lee Jones <lee@kernel.org>
This commit is contained in:
parent
12a95123bf
commit
ec77cad8d5
|
@ -0,0 +1,313 @@
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
|
||||||
|
%YAML 1.2
|
||||||
|
---
|
||||||
|
$id: http://devicetree.org/schemas/sound/cirrus,cs42l43.yaml#
|
||||||
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||||
|
|
||||||
|
title: Cirrus Logic CS42L43 Audio CODEC
|
||||||
|
|
||||||
|
maintainers:
|
||||||
|
- patches@opensource.cirrus.com
|
||||||
|
|
||||||
|
description: |
|
||||||
|
The CS42L43 is an audio CODEC with integrated MIPI SoundWire interface
|
||||||
|
(Version 1.2.1 compliant), I2C, SPI, and I2S/TDM interfaces designed
|
||||||
|
for portable applications. It provides a high dynamic range, stereo
|
||||||
|
DAC for headphone output, two integrated Class D amplifiers for
|
||||||
|
loudspeakers, and two ADCs for wired headset microphone input or
|
||||||
|
stereo line input. PDM inputs are provided for digital microphones.
|
||||||
|
|
||||||
|
allOf:
|
||||||
|
- $ref: dai-common.yaml#
|
||||||
|
|
||||||
|
properties:
|
||||||
|
compatible:
|
||||||
|
enum:
|
||||||
|
- cirrus,cs42l43
|
||||||
|
|
||||||
|
reg:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
vdd-p-supply:
|
||||||
|
description:
|
||||||
|
Power supply for the high voltage interface.
|
||||||
|
|
||||||
|
vdd-a-supply:
|
||||||
|
description:
|
||||||
|
Power supply for internal analog circuits.
|
||||||
|
|
||||||
|
vdd-d-supply:
|
||||||
|
description:
|
||||||
|
Power supply for internal digital circuits. Can be internally supplied.
|
||||||
|
|
||||||
|
vdd-io-supply:
|
||||||
|
description:
|
||||||
|
Power supply for external interface and internal digital logic.
|
||||||
|
|
||||||
|
vdd-cp-supply:
|
||||||
|
description:
|
||||||
|
Power supply for the amplifier 3 and 4 charge pump.
|
||||||
|
|
||||||
|
vdd-amp-supply:
|
||||||
|
description:
|
||||||
|
Power supply for amplifier 1 and 2.
|
||||||
|
|
||||||
|
reset-gpios:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
interrupt-controller: true
|
||||||
|
|
||||||
|
"#interrupt-cells":
|
||||||
|
const: 2
|
||||||
|
|
||||||
|
interrupts:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
"#sound-dai-cells":
|
||||||
|
const: 1
|
||||||
|
|
||||||
|
clocks:
|
||||||
|
items:
|
||||||
|
- description: Synchronous audio clock provided on mclk_in.
|
||||||
|
|
||||||
|
clock-names:
|
||||||
|
const: mclk
|
||||||
|
|
||||||
|
cirrus,bias-low:
|
||||||
|
type: boolean
|
||||||
|
description:
|
||||||
|
Select a 1.8V headset micbias rather than 2.8V.
|
||||||
|
|
||||||
|
cirrus,bias-sense-microamp:
|
||||||
|
description:
|
||||||
|
Current at which the headset micbias sense clamp will engage, 0 to
|
||||||
|
disable.
|
||||||
|
enum: [ 0, 14, 23, 41, 50, 60, 68, 86, 95 ]
|
||||||
|
default: 0
|
||||||
|
|
||||||
|
cirrus,bias-ramp-ms:
|
||||||
|
description:
|
||||||
|
Time in milliseconds the hardware allows for the headset micbias to
|
||||||
|
ramp up.
|
||||||
|
enum: [ 10, 40, 90, 170 ]
|
||||||
|
default: 170
|
||||||
|
|
||||||
|
cirrus,detect-us:
|
||||||
|
description:
|
||||||
|
Time in microseconds the type detection will run for. Long values will
|
||||||
|
cause more audible effects, but give more accurate detection.
|
||||||
|
enum: [ 20, 100, 1000, 10000, 50000, 75000, 100000, 200000 ]
|
||||||
|
default: 10000
|
||||||
|
|
||||||
|
cirrus,button-automute:
|
||||||
|
type: boolean
|
||||||
|
description:
|
||||||
|
Enable the hardware automuting of decimator 1 when a headset button is
|
||||||
|
pressed.
|
||||||
|
|
||||||
|
cirrus,buttons-ohms:
|
||||||
|
description:
|
||||||
|
Impedance in Ohms for each headset button, these should be listed in
|
||||||
|
ascending order.
|
||||||
|
minItems: 1
|
||||||
|
maxItems: 6
|
||||||
|
|
||||||
|
cirrus,tip-debounce-ms:
|
||||||
|
description:
|
||||||
|
Software debounce on tip sense triggering in milliseconds.
|
||||||
|
default: 0
|
||||||
|
|
||||||
|
cirrus,tip-invert:
|
||||||
|
type: boolean
|
||||||
|
description:
|
||||||
|
Indicates tip detect polarity, inverted implies open-circuit whilst the
|
||||||
|
jack is inserted.
|
||||||
|
|
||||||
|
cirrus,tip-disable-pullup:
|
||||||
|
type: boolean
|
||||||
|
description:
|
||||||
|
Indicates if the internal pullup on the tip detect should be disabled.
|
||||||
|
|
||||||
|
cirrus,tip-fall-db-ms:
|
||||||
|
description:
|
||||||
|
Time in milliseconds a falling edge on the tip detect should be hardware
|
||||||
|
debounced for. Note the falling edge is considered after the invert.
|
||||||
|
enum: [ 0, 125, 250, 500, 750, 1000, 1250, 1500 ]
|
||||||
|
default: 500
|
||||||
|
|
||||||
|
cirrus,tip-rise-db-ms:
|
||||||
|
description:
|
||||||
|
Time in milliseconds a rising edge on the tip detect should be hardware
|
||||||
|
debounced for. Note the rising edge is considered after the invert.
|
||||||
|
enum: [ 0, 125, 250, 500, 750, 1000, 1250, 1500 ]
|
||||||
|
default: 500
|
||||||
|
|
||||||
|
cirrus,use-ring-sense:
|
||||||
|
type: boolean
|
||||||
|
description:
|
||||||
|
Indicates if the ring sense should be used.
|
||||||
|
|
||||||
|
cirrus,ring-invert:
|
||||||
|
type: boolean
|
||||||
|
description:
|
||||||
|
Indicates ring detect polarity, inverted implies open-circuit whilst the
|
||||||
|
jack is inserted.
|
||||||
|
|
||||||
|
cirrus,ring-disable-pullup:
|
||||||
|
type: boolean
|
||||||
|
description:
|
||||||
|
Indicates if the internal pullup on the ring detect should be disabled.
|
||||||
|
|
||||||
|
cirrus,ring-fall-db-ms:
|
||||||
|
description:
|
||||||
|
Time in milliseconds a falling edge on the ring detect should be hardware
|
||||||
|
debounced for. Note the falling edge is considered after the invert.
|
||||||
|
enum: [ 0, 125, 250, 500, 750, 1000, 1250, 1500 ]
|
||||||
|
default: 500
|
||||||
|
|
||||||
|
cirrus,ring-rise-db-ms:
|
||||||
|
description:
|
||||||
|
Time in milliseconds a rising edge on the ring detect should be hardware
|
||||||
|
debounced for. Note the rising edge is considered after the invert.
|
||||||
|
enum: [ 0, 125, 250, 500, 750, 1000, 1250, 1500 ]
|
||||||
|
default: 500
|
||||||
|
|
||||||
|
pinctrl:
|
||||||
|
type: object
|
||||||
|
$ref: /schemas/pinctrl/pinctrl.yaml#
|
||||||
|
additionalProperties: false
|
||||||
|
|
||||||
|
properties:
|
||||||
|
gpio-controller: true
|
||||||
|
|
||||||
|
"#gpio-cells":
|
||||||
|
const: 2
|
||||||
|
|
||||||
|
gpio-ranges:
|
||||||
|
items:
|
||||||
|
- description: A phandle to the CODEC pinctrl node
|
||||||
|
minimum: 0
|
||||||
|
- const: 0
|
||||||
|
- const: 0
|
||||||
|
- const: 3
|
||||||
|
|
||||||
|
patternProperties:
|
||||||
|
"-state$":
|
||||||
|
oneOf:
|
||||||
|
- $ref: "#/$defs/cirrus-cs42l43-state"
|
||||||
|
- patternProperties:
|
||||||
|
"-pins$":
|
||||||
|
$ref: "#/$defs/cirrus-cs42l43-state"
|
||||||
|
additionalProperties: false
|
||||||
|
|
||||||
|
spi:
|
||||||
|
type: object
|
||||||
|
$ref: /schemas/spi/spi-controller.yaml#
|
||||||
|
unevaluatedProperties: false
|
||||||
|
|
||||||
|
$defs:
|
||||||
|
cirrus-cs42l43-state:
|
||||||
|
type: object
|
||||||
|
|
||||||
|
allOf:
|
||||||
|
- $ref: /schemas/pinctrl/pincfg-node.yaml#
|
||||||
|
- $ref: /schemas/pinctrl/pinmux-node.yaml#
|
||||||
|
|
||||||
|
oneOf:
|
||||||
|
- required: [ groups ]
|
||||||
|
- required: [ pins ]
|
||||||
|
|
||||||
|
additionalProperties: false
|
||||||
|
|
||||||
|
properties:
|
||||||
|
groups:
|
||||||
|
enum: [ gpio1, gpio2, gpio3, asp, pdmout2, pdmout1, i2c, spi ]
|
||||||
|
|
||||||
|
pins:
|
||||||
|
enum: [ gpio1, gpio2, gpio3,
|
||||||
|
asp_dout, asp_fsync, asp_bclk,
|
||||||
|
pdmout2_clk, pdmout2_data, pdmout1_clk, pdmout1_data,
|
||||||
|
i2c_sda, i2c_scl,
|
||||||
|
spi_miso, spi_sck, spi_ssb ]
|
||||||
|
|
||||||
|
function:
|
||||||
|
enum: [ gpio, spdif, irq, mic-shutter, spk-shutter ]
|
||||||
|
|
||||||
|
drive-strength:
|
||||||
|
description: Set drive strength in mA
|
||||||
|
enum: [ 1, 2, 4, 8, 9, 10, 12, 16 ]
|
||||||
|
|
||||||
|
input-debounce:
|
||||||
|
description: Set input debounce in uS
|
||||||
|
enum: [ 0, 85 ]
|
||||||
|
|
||||||
|
required:
|
||||||
|
- compatible
|
||||||
|
- reg
|
||||||
|
- vdd-p-supply
|
||||||
|
- vdd-a-supply
|
||||||
|
- vdd-io-supply
|
||||||
|
- vdd-cp-supply
|
||||||
|
|
||||||
|
additionalProperties: false
|
||||||
|
|
||||||
|
examples:
|
||||||
|
- |
|
||||||
|
#include <dt-bindings/interrupt-controller/irq.h>
|
||||||
|
|
||||||
|
i2c {
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
|
||||||
|
cs42l43: codec@1a {
|
||||||
|
compatible = "cirrus,cs42l43";
|
||||||
|
reg = <0x1a>;
|
||||||
|
|
||||||
|
vdd-p-supply = <&vdd5v0>;
|
||||||
|
vdd-a-supply = <&vdd1v8>;
|
||||||
|
vdd-io-supply = <&vdd1v8>;
|
||||||
|
vdd-cp-supply = <&vdd1v8>;
|
||||||
|
vdd-amp-supply = <&vdd5v0>;
|
||||||
|
|
||||||
|
reset-gpios = <&gpio 0>;
|
||||||
|
|
||||||
|
interrupt-controller;
|
||||||
|
#interrupt-cells = <2>;
|
||||||
|
interrupt-parent = <&gpio>;
|
||||||
|
interrupts = <56 IRQ_TYPE_LEVEL_LOW>;
|
||||||
|
|
||||||
|
#sound-dai-cells = <1>;
|
||||||
|
|
||||||
|
clocks = <&clks 0>;
|
||||||
|
clock-names = "mclk";
|
||||||
|
|
||||||
|
cs42l43_pins: pinctrl {
|
||||||
|
gpio-controller;
|
||||||
|
#gpio-cells = <2>;
|
||||||
|
gpio-ranges = <&cs42l43_pins 0 0 3>;
|
||||||
|
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&pinsettings>;
|
||||||
|
|
||||||
|
pinsettings: default-state {
|
||||||
|
shutter-pins {
|
||||||
|
groups = "gpio3";
|
||||||
|
function = "mic-shutter";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
spi {
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
|
||||||
|
cs-gpios = <&cs42l43_pins 1 0>;
|
||||||
|
|
||||||
|
sensor@0 {
|
||||||
|
compatible = "bosch,bme680";
|
||||||
|
reg = <0>;
|
||||||
|
spi-max-frequency = <1400000>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
Loading…
Reference in New Issue