# 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, 24, 43, 52, 61, 71, 90, 99 ] 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>; }; }; }; };