162306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause 262306a36Sopenharmony_ci%YAML 1.2 362306a36Sopenharmony_ci--- 462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/sound/cirrus,cs42l43.yaml# 562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml# 662306a36Sopenharmony_ci 762306a36Sopenharmony_cititle: Cirrus Logic CS42L43 Audio CODEC 862306a36Sopenharmony_ci 962306a36Sopenharmony_cimaintainers: 1062306a36Sopenharmony_ci - patches@opensource.cirrus.com 1162306a36Sopenharmony_ci 1262306a36Sopenharmony_cidescription: | 1362306a36Sopenharmony_ci The CS42L43 is an audio CODEC with integrated MIPI SoundWire interface 1462306a36Sopenharmony_ci (Version 1.2.1 compliant), I2C, SPI, and I2S/TDM interfaces designed 1562306a36Sopenharmony_ci for portable applications. It provides a high dynamic range, stereo 1662306a36Sopenharmony_ci DAC for headphone output, two integrated Class D amplifiers for 1762306a36Sopenharmony_ci loudspeakers, and two ADCs for wired headset microphone input or 1862306a36Sopenharmony_ci stereo line input. PDM inputs are provided for digital microphones. 1962306a36Sopenharmony_ci 2062306a36Sopenharmony_ciallOf: 2162306a36Sopenharmony_ci - $ref: dai-common.yaml# 2262306a36Sopenharmony_ci 2362306a36Sopenharmony_ciproperties: 2462306a36Sopenharmony_ci compatible: 2562306a36Sopenharmony_ci enum: 2662306a36Sopenharmony_ci - cirrus,cs42l43 2762306a36Sopenharmony_ci 2862306a36Sopenharmony_ci reg: 2962306a36Sopenharmony_ci maxItems: 1 3062306a36Sopenharmony_ci 3162306a36Sopenharmony_ci vdd-p-supply: 3262306a36Sopenharmony_ci description: 3362306a36Sopenharmony_ci Power supply for the high voltage interface. 3462306a36Sopenharmony_ci 3562306a36Sopenharmony_ci vdd-a-supply: 3662306a36Sopenharmony_ci description: 3762306a36Sopenharmony_ci Power supply for internal analog circuits. 3862306a36Sopenharmony_ci 3962306a36Sopenharmony_ci vdd-d-supply: 4062306a36Sopenharmony_ci description: 4162306a36Sopenharmony_ci Power supply for internal digital circuits. Can be internally supplied. 4262306a36Sopenharmony_ci 4362306a36Sopenharmony_ci vdd-io-supply: 4462306a36Sopenharmony_ci description: 4562306a36Sopenharmony_ci Power supply for external interface and internal digital logic. 4662306a36Sopenharmony_ci 4762306a36Sopenharmony_ci vdd-cp-supply: 4862306a36Sopenharmony_ci description: 4962306a36Sopenharmony_ci Power supply for the amplifier 3 and 4 charge pump. 5062306a36Sopenharmony_ci 5162306a36Sopenharmony_ci vdd-amp-supply: 5262306a36Sopenharmony_ci description: 5362306a36Sopenharmony_ci Power supply for amplifier 1 and 2. 5462306a36Sopenharmony_ci 5562306a36Sopenharmony_ci reset-gpios: 5662306a36Sopenharmony_ci maxItems: 1 5762306a36Sopenharmony_ci 5862306a36Sopenharmony_ci interrupt-controller: true 5962306a36Sopenharmony_ci 6062306a36Sopenharmony_ci "#interrupt-cells": 6162306a36Sopenharmony_ci const: 2 6262306a36Sopenharmony_ci 6362306a36Sopenharmony_ci interrupts: 6462306a36Sopenharmony_ci maxItems: 1 6562306a36Sopenharmony_ci 6662306a36Sopenharmony_ci "#sound-dai-cells": 6762306a36Sopenharmony_ci const: 1 6862306a36Sopenharmony_ci 6962306a36Sopenharmony_ci clocks: 7062306a36Sopenharmony_ci items: 7162306a36Sopenharmony_ci - description: Synchronous audio clock provided on mclk_in. 7262306a36Sopenharmony_ci 7362306a36Sopenharmony_ci clock-names: 7462306a36Sopenharmony_ci const: mclk 7562306a36Sopenharmony_ci 7662306a36Sopenharmony_ci cirrus,bias-low: 7762306a36Sopenharmony_ci type: boolean 7862306a36Sopenharmony_ci description: 7962306a36Sopenharmony_ci Select a 1.8V headset micbias rather than 2.8V. 8062306a36Sopenharmony_ci 8162306a36Sopenharmony_ci cirrus,bias-sense-microamp: 8262306a36Sopenharmony_ci description: 8362306a36Sopenharmony_ci Current at which the headset micbias sense clamp will engage, 0 to 8462306a36Sopenharmony_ci disable. 8562306a36Sopenharmony_ci enum: [ 0, 14, 24, 43, 52, 61, 71, 90, 99 ] 8662306a36Sopenharmony_ci default: 0 8762306a36Sopenharmony_ci 8862306a36Sopenharmony_ci cirrus,bias-ramp-ms: 8962306a36Sopenharmony_ci description: 9062306a36Sopenharmony_ci Time in milliseconds the hardware allows for the headset micbias to 9162306a36Sopenharmony_ci ramp up. 9262306a36Sopenharmony_ci enum: [ 10, 40, 90, 170 ] 9362306a36Sopenharmony_ci default: 170 9462306a36Sopenharmony_ci 9562306a36Sopenharmony_ci cirrus,detect-us: 9662306a36Sopenharmony_ci description: 9762306a36Sopenharmony_ci Time in microseconds the type detection will run for. Long values will 9862306a36Sopenharmony_ci cause more audible effects, but give more accurate detection. 9962306a36Sopenharmony_ci enum: [ 20, 100, 1000, 10000, 50000, 75000, 100000, 200000 ] 10062306a36Sopenharmony_ci default: 10000 10162306a36Sopenharmony_ci 10262306a36Sopenharmony_ci cirrus,button-automute: 10362306a36Sopenharmony_ci type: boolean 10462306a36Sopenharmony_ci description: 10562306a36Sopenharmony_ci Enable the hardware automuting of decimator 1 when a headset button is 10662306a36Sopenharmony_ci pressed. 10762306a36Sopenharmony_ci 10862306a36Sopenharmony_ci cirrus,buttons-ohms: 10962306a36Sopenharmony_ci description: 11062306a36Sopenharmony_ci Impedance in Ohms for each headset button, these should be listed in 11162306a36Sopenharmony_ci ascending order. 11262306a36Sopenharmony_ci minItems: 1 11362306a36Sopenharmony_ci maxItems: 6 11462306a36Sopenharmony_ci 11562306a36Sopenharmony_ci cirrus,tip-debounce-ms: 11662306a36Sopenharmony_ci description: 11762306a36Sopenharmony_ci Software debounce on tip sense triggering in milliseconds. 11862306a36Sopenharmony_ci default: 0 11962306a36Sopenharmony_ci 12062306a36Sopenharmony_ci cirrus,tip-invert: 12162306a36Sopenharmony_ci type: boolean 12262306a36Sopenharmony_ci description: 12362306a36Sopenharmony_ci Indicates tip detect polarity, inverted implies open-circuit whilst the 12462306a36Sopenharmony_ci jack is inserted. 12562306a36Sopenharmony_ci 12662306a36Sopenharmony_ci cirrus,tip-disable-pullup: 12762306a36Sopenharmony_ci type: boolean 12862306a36Sopenharmony_ci description: 12962306a36Sopenharmony_ci Indicates if the internal pullup on the tip detect should be disabled. 13062306a36Sopenharmony_ci 13162306a36Sopenharmony_ci cirrus,tip-fall-db-ms: 13262306a36Sopenharmony_ci description: 13362306a36Sopenharmony_ci Time in milliseconds a falling edge on the tip detect should be hardware 13462306a36Sopenharmony_ci debounced for. Note the falling edge is considered after the invert. 13562306a36Sopenharmony_ci enum: [ 0, 125, 250, 500, 750, 1000, 1250, 1500 ] 13662306a36Sopenharmony_ci default: 500 13762306a36Sopenharmony_ci 13862306a36Sopenharmony_ci cirrus,tip-rise-db-ms: 13962306a36Sopenharmony_ci description: 14062306a36Sopenharmony_ci Time in milliseconds a rising edge on the tip detect should be hardware 14162306a36Sopenharmony_ci debounced for. Note the rising edge is considered after the invert. 14262306a36Sopenharmony_ci enum: [ 0, 125, 250, 500, 750, 1000, 1250, 1500 ] 14362306a36Sopenharmony_ci default: 500 14462306a36Sopenharmony_ci 14562306a36Sopenharmony_ci cirrus,use-ring-sense: 14662306a36Sopenharmony_ci type: boolean 14762306a36Sopenharmony_ci description: 14862306a36Sopenharmony_ci Indicates if the ring sense should be used. 14962306a36Sopenharmony_ci 15062306a36Sopenharmony_ci cirrus,ring-invert: 15162306a36Sopenharmony_ci type: boolean 15262306a36Sopenharmony_ci description: 15362306a36Sopenharmony_ci Indicates ring detect polarity, inverted implies open-circuit whilst the 15462306a36Sopenharmony_ci jack is inserted. 15562306a36Sopenharmony_ci 15662306a36Sopenharmony_ci cirrus,ring-disable-pullup: 15762306a36Sopenharmony_ci type: boolean 15862306a36Sopenharmony_ci description: 15962306a36Sopenharmony_ci Indicates if the internal pullup on the ring detect should be disabled. 16062306a36Sopenharmony_ci 16162306a36Sopenharmony_ci cirrus,ring-fall-db-ms: 16262306a36Sopenharmony_ci description: 16362306a36Sopenharmony_ci Time in milliseconds a falling edge on the ring detect should be hardware 16462306a36Sopenharmony_ci debounced for. Note the falling edge is considered after the invert. 16562306a36Sopenharmony_ci enum: [ 0, 125, 250, 500, 750, 1000, 1250, 1500 ] 16662306a36Sopenharmony_ci default: 500 16762306a36Sopenharmony_ci 16862306a36Sopenharmony_ci cirrus,ring-rise-db-ms: 16962306a36Sopenharmony_ci description: 17062306a36Sopenharmony_ci Time in milliseconds a rising edge on the ring detect should be hardware 17162306a36Sopenharmony_ci debounced for. Note the rising edge is considered after the invert. 17262306a36Sopenharmony_ci enum: [ 0, 125, 250, 500, 750, 1000, 1250, 1500 ] 17362306a36Sopenharmony_ci default: 500 17462306a36Sopenharmony_ci 17562306a36Sopenharmony_ci pinctrl: 17662306a36Sopenharmony_ci type: object 17762306a36Sopenharmony_ci $ref: /schemas/pinctrl/pinctrl.yaml# 17862306a36Sopenharmony_ci additionalProperties: false 17962306a36Sopenharmony_ci 18062306a36Sopenharmony_ci properties: 18162306a36Sopenharmony_ci gpio-controller: true 18262306a36Sopenharmony_ci 18362306a36Sopenharmony_ci "#gpio-cells": 18462306a36Sopenharmony_ci const: 2 18562306a36Sopenharmony_ci 18662306a36Sopenharmony_ci gpio-ranges: 18762306a36Sopenharmony_ci items: 18862306a36Sopenharmony_ci - description: A phandle to the CODEC pinctrl node 18962306a36Sopenharmony_ci minimum: 0 19062306a36Sopenharmony_ci - const: 0 19162306a36Sopenharmony_ci - const: 0 19262306a36Sopenharmony_ci - const: 3 19362306a36Sopenharmony_ci 19462306a36Sopenharmony_ci patternProperties: 19562306a36Sopenharmony_ci "-state$": 19662306a36Sopenharmony_ci oneOf: 19762306a36Sopenharmony_ci - $ref: "#/$defs/cirrus-cs42l43-state" 19862306a36Sopenharmony_ci - patternProperties: 19962306a36Sopenharmony_ci "-pins$": 20062306a36Sopenharmony_ci $ref: "#/$defs/cirrus-cs42l43-state" 20162306a36Sopenharmony_ci additionalProperties: false 20262306a36Sopenharmony_ci 20362306a36Sopenharmony_ci spi: 20462306a36Sopenharmony_ci type: object 20562306a36Sopenharmony_ci $ref: /schemas/spi/spi-controller.yaml# 20662306a36Sopenharmony_ci unevaluatedProperties: false 20762306a36Sopenharmony_ci 20862306a36Sopenharmony_ci$defs: 20962306a36Sopenharmony_ci cirrus-cs42l43-state: 21062306a36Sopenharmony_ci type: object 21162306a36Sopenharmony_ci 21262306a36Sopenharmony_ci allOf: 21362306a36Sopenharmony_ci - $ref: /schemas/pinctrl/pincfg-node.yaml# 21462306a36Sopenharmony_ci - $ref: /schemas/pinctrl/pinmux-node.yaml# 21562306a36Sopenharmony_ci 21662306a36Sopenharmony_ci oneOf: 21762306a36Sopenharmony_ci - required: [ groups ] 21862306a36Sopenharmony_ci - required: [ pins ] 21962306a36Sopenharmony_ci 22062306a36Sopenharmony_ci additionalProperties: false 22162306a36Sopenharmony_ci 22262306a36Sopenharmony_ci properties: 22362306a36Sopenharmony_ci groups: 22462306a36Sopenharmony_ci enum: [ gpio1, gpio2, gpio3, asp, pdmout2, pdmout1, i2c, spi ] 22562306a36Sopenharmony_ci 22662306a36Sopenharmony_ci pins: 22762306a36Sopenharmony_ci enum: [ gpio1, gpio2, gpio3, 22862306a36Sopenharmony_ci asp_dout, asp_fsync, asp_bclk, 22962306a36Sopenharmony_ci pdmout2_clk, pdmout2_data, pdmout1_clk, pdmout1_data, 23062306a36Sopenharmony_ci i2c_sda, i2c_scl, 23162306a36Sopenharmony_ci spi_miso, spi_sck, spi_ssb ] 23262306a36Sopenharmony_ci 23362306a36Sopenharmony_ci function: 23462306a36Sopenharmony_ci enum: [ gpio, spdif, irq, mic-shutter, spk-shutter ] 23562306a36Sopenharmony_ci 23662306a36Sopenharmony_ci drive-strength: 23762306a36Sopenharmony_ci description: Set drive strength in mA 23862306a36Sopenharmony_ci enum: [ 1, 2, 4, 8, 9, 10, 12, 16 ] 23962306a36Sopenharmony_ci 24062306a36Sopenharmony_ci input-debounce: 24162306a36Sopenharmony_ci description: Set input debounce in uS 24262306a36Sopenharmony_ci enum: [ 0, 85 ] 24362306a36Sopenharmony_ci 24462306a36Sopenharmony_cirequired: 24562306a36Sopenharmony_ci - compatible 24662306a36Sopenharmony_ci - reg 24762306a36Sopenharmony_ci - vdd-p-supply 24862306a36Sopenharmony_ci - vdd-a-supply 24962306a36Sopenharmony_ci - vdd-io-supply 25062306a36Sopenharmony_ci - vdd-cp-supply 25162306a36Sopenharmony_ci 25262306a36Sopenharmony_ciadditionalProperties: false 25362306a36Sopenharmony_ci 25462306a36Sopenharmony_ciexamples: 25562306a36Sopenharmony_ci - | 25662306a36Sopenharmony_ci #include <dt-bindings/interrupt-controller/irq.h> 25762306a36Sopenharmony_ci 25862306a36Sopenharmony_ci i2c { 25962306a36Sopenharmony_ci #address-cells = <1>; 26062306a36Sopenharmony_ci #size-cells = <0>; 26162306a36Sopenharmony_ci 26262306a36Sopenharmony_ci cs42l43: codec@1a { 26362306a36Sopenharmony_ci compatible = "cirrus,cs42l43"; 26462306a36Sopenharmony_ci reg = <0x1a>; 26562306a36Sopenharmony_ci 26662306a36Sopenharmony_ci vdd-p-supply = <&vdd5v0>; 26762306a36Sopenharmony_ci vdd-a-supply = <&vdd1v8>; 26862306a36Sopenharmony_ci vdd-io-supply = <&vdd1v8>; 26962306a36Sopenharmony_ci vdd-cp-supply = <&vdd1v8>; 27062306a36Sopenharmony_ci vdd-amp-supply = <&vdd5v0>; 27162306a36Sopenharmony_ci 27262306a36Sopenharmony_ci reset-gpios = <&gpio 0>; 27362306a36Sopenharmony_ci 27462306a36Sopenharmony_ci interrupt-controller; 27562306a36Sopenharmony_ci #interrupt-cells = <2>; 27662306a36Sopenharmony_ci interrupt-parent = <&gpio>; 27762306a36Sopenharmony_ci interrupts = <56 IRQ_TYPE_LEVEL_LOW>; 27862306a36Sopenharmony_ci 27962306a36Sopenharmony_ci #sound-dai-cells = <1>; 28062306a36Sopenharmony_ci 28162306a36Sopenharmony_ci clocks = <&clks 0>; 28262306a36Sopenharmony_ci clock-names = "mclk"; 28362306a36Sopenharmony_ci 28462306a36Sopenharmony_ci cs42l43_pins: pinctrl { 28562306a36Sopenharmony_ci gpio-controller; 28662306a36Sopenharmony_ci #gpio-cells = <2>; 28762306a36Sopenharmony_ci gpio-ranges = <&cs42l43_pins 0 0 3>; 28862306a36Sopenharmony_ci 28962306a36Sopenharmony_ci pinctrl-names = "default"; 29062306a36Sopenharmony_ci pinctrl-0 = <&pinsettings>; 29162306a36Sopenharmony_ci 29262306a36Sopenharmony_ci pinsettings: default-state { 29362306a36Sopenharmony_ci shutter-pins { 29462306a36Sopenharmony_ci groups = "gpio3"; 29562306a36Sopenharmony_ci function = "mic-shutter"; 29662306a36Sopenharmony_ci }; 29762306a36Sopenharmony_ci }; 29862306a36Sopenharmony_ci }; 29962306a36Sopenharmony_ci 30062306a36Sopenharmony_ci spi { 30162306a36Sopenharmony_ci #address-cells = <1>; 30262306a36Sopenharmony_ci #size-cells = <0>; 30362306a36Sopenharmony_ci 30462306a36Sopenharmony_ci cs-gpios = <&cs42l43_pins 1 0>; 30562306a36Sopenharmony_ci 30662306a36Sopenharmony_ci sensor@0 { 30762306a36Sopenharmony_ci compatible = "bosch,bme680"; 30862306a36Sopenharmony_ci reg = <0>; 30962306a36Sopenharmony_ci spi-max-frequency = <1400000>; 31062306a36Sopenharmony_ci }; 31162306a36Sopenharmony_ci }; 31262306a36Sopenharmony_ci }; 31362306a36Sopenharmony_ci }; 314