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