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,cs42l42.yaml# 562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml# 662306a36Sopenharmony_ci 762306a36Sopenharmony_cititle: Cirrus Logic CS42L42 audio CODEC 862306a36Sopenharmony_ci 962306a36Sopenharmony_cimaintainers: 1062306a36Sopenharmony_ci - patches@opensource.cirrus.com 1162306a36Sopenharmony_ci 1262306a36Sopenharmony_cidescription: 1362306a36Sopenharmony_ci The CS42L42 is a low-power audio codec designed for portable applications. 1462306a36Sopenharmony_ci It provides a high-dynamic range, stereo DAC for audio playback and a mono 1562306a36Sopenharmony_ci high-dynamic-range ADC for audio capture. There is an integrated headset 1662306a36Sopenharmony_ci detection block. 1762306a36Sopenharmony_ci 1862306a36Sopenharmony_ciproperties: 1962306a36Sopenharmony_ci compatible: 2062306a36Sopenharmony_ci enum: 2162306a36Sopenharmony_ci - cirrus,cs42l42 2262306a36Sopenharmony_ci - cirrus,cs42l83 2362306a36Sopenharmony_ci 2462306a36Sopenharmony_ci reg: 2562306a36Sopenharmony_ci description: 2662306a36Sopenharmony_ci The I2C address of the CS42L42. 2762306a36Sopenharmony_ci maxItems: 1 2862306a36Sopenharmony_ci 2962306a36Sopenharmony_ci VP-supply: 3062306a36Sopenharmony_ci description: 3162306a36Sopenharmony_ci VP power supply. 3262306a36Sopenharmony_ci 3362306a36Sopenharmony_ci VCP-supply: 3462306a36Sopenharmony_ci description: 3562306a36Sopenharmony_ci Charge pump power supply. 3662306a36Sopenharmony_ci 3762306a36Sopenharmony_ci VD_FILT-supply: 3862306a36Sopenharmony_ci description: 3962306a36Sopenharmony_ci FILT+ power supply. 4062306a36Sopenharmony_ci 4162306a36Sopenharmony_ci VL-supply: 4262306a36Sopenharmony_ci description: 4362306a36Sopenharmony_ci Logic power supply. 4462306a36Sopenharmony_ci 4562306a36Sopenharmony_ci VA-supply: 4662306a36Sopenharmony_ci description: 4762306a36Sopenharmony_ci Analog power supply. 4862306a36Sopenharmony_ci 4962306a36Sopenharmony_ci reset-gpios: 5062306a36Sopenharmony_ci description: 5162306a36Sopenharmony_ci This pin will be asserted and then deasserted to reset the 5262306a36Sopenharmony_ci CS42L42 before communication starts. 5362306a36Sopenharmony_ci maxItems: 1 5462306a36Sopenharmony_ci 5562306a36Sopenharmony_ci interrupts: 5662306a36Sopenharmony_ci description: 5762306a36Sopenharmony_ci Interrupt for CS42L42 IRQ line. 5862306a36Sopenharmony_ci maxItems: 1 5962306a36Sopenharmony_ci 6062306a36Sopenharmony_ci cirrus,ts-inv: 6162306a36Sopenharmony_ci description: | 6262306a36Sopenharmony_ci Sets the behaviour of the jack plug detect switch. 6362306a36Sopenharmony_ci 6462306a36Sopenharmony_ci 0 - (Default) Shorted to tip when unplugged, open when plugged. 6562306a36Sopenharmony_ci This is "inverted tip sense (ITS)" in the datasheet. 6662306a36Sopenharmony_ci 6762306a36Sopenharmony_ci 1 - Open when unplugged, shorted to tip when plugged. 6862306a36Sopenharmony_ci This is "normal tip sense (TS)" in the datasheet. 6962306a36Sopenharmony_ci 7062306a36Sopenharmony_ci The CS42L42_TS_INV_* defines are available for this. 7162306a36Sopenharmony_ci $ref: /schemas/types.yaml#/definitions/uint32 7262306a36Sopenharmony_ci minimum: 0 7362306a36Sopenharmony_ci maximum: 1 7462306a36Sopenharmony_ci 7562306a36Sopenharmony_ci cirrus,ts-dbnc-rise: 7662306a36Sopenharmony_ci description: | 7762306a36Sopenharmony_ci Debounce the rising edge of TIP_SENSE_PLUG. With no 7862306a36Sopenharmony_ci debounce, the tip sense pin might be noisy on a plug event. 7962306a36Sopenharmony_ci 8062306a36Sopenharmony_ci 0 - 0ms 8162306a36Sopenharmony_ci 1 - 125ms 8262306a36Sopenharmony_ci 2 - 250ms 8362306a36Sopenharmony_ci 3 - 500ms 8462306a36Sopenharmony_ci 4 - 750ms 8562306a36Sopenharmony_ci 5 - 1s (Default) 8662306a36Sopenharmony_ci 6 - 1.25s 8762306a36Sopenharmony_ci 7 - 1.5s 8862306a36Sopenharmony_ci 8962306a36Sopenharmony_ci The CS42L42_TS_DBNCE_* defines are available for this. 9062306a36Sopenharmony_ci $ref: /schemas/types.yaml#/definitions/uint32 9162306a36Sopenharmony_ci minimum: 0 9262306a36Sopenharmony_ci maximum: 7 9362306a36Sopenharmony_ci 9462306a36Sopenharmony_ci cirrus,ts-dbnc-fall: 9562306a36Sopenharmony_ci description: | 9662306a36Sopenharmony_ci Debounce the falling edge of TIP_SENSE_UNPLUG. With no 9762306a36Sopenharmony_ci debounce, the tip sense pin might be noisy on an unplug event. 9862306a36Sopenharmony_ci 9962306a36Sopenharmony_ci 0 - 0ms 10062306a36Sopenharmony_ci 1 - 125ms 10162306a36Sopenharmony_ci 2 - 250ms 10262306a36Sopenharmony_ci 3 - 500ms 10362306a36Sopenharmony_ci 4 - 750ms 10462306a36Sopenharmony_ci 5 - 1s (Default) 10562306a36Sopenharmony_ci 6 - 1.25s 10662306a36Sopenharmony_ci 7 - 1.5s 10762306a36Sopenharmony_ci 10862306a36Sopenharmony_ci The CS42L42_TS_DBNCE_* defines are available for this. 10962306a36Sopenharmony_ci $ref: /schemas/types.yaml#/definitions/uint32 11062306a36Sopenharmony_ci minimum: 0 11162306a36Sopenharmony_ci maximum: 7 11262306a36Sopenharmony_ci 11362306a36Sopenharmony_ci cirrus,btn-det-init-dbnce: 11462306a36Sopenharmony_ci description: | 11562306a36Sopenharmony_ci This sets how long to wait after enabling button detection 11662306a36Sopenharmony_ci interrupts before servicing button interrupts, to allow the 11762306a36Sopenharmony_ci HS bias time to settle. Value is in milliseconds. 11862306a36Sopenharmony_ci There may be erroneous button interrupts if this debounce time 11962306a36Sopenharmony_ci is too short. 12062306a36Sopenharmony_ci 12162306a36Sopenharmony_ci 0ms - 200ms, 12262306a36Sopenharmony_ci Default = 100ms 12362306a36Sopenharmony_ci $ref: /schemas/types.yaml#/definitions/uint32 12462306a36Sopenharmony_ci minimum: 0 12562306a36Sopenharmony_ci maximum: 200 12662306a36Sopenharmony_ci 12762306a36Sopenharmony_ci cirrus,btn-det-event-dbnce: 12862306a36Sopenharmony_ci description: | 12962306a36Sopenharmony_ci This sets how long to wait after receiving a button press 13062306a36Sopenharmony_ci interrupt before processing it. Allows time for the button 13162306a36Sopenharmony_ci press to make a clean connection with the bias resistors. 13262306a36Sopenharmony_ci Value is in milliseconds. 13362306a36Sopenharmony_ci 13462306a36Sopenharmony_ci 0ms - 20ms, 13562306a36Sopenharmony_ci Default = 10ms 13662306a36Sopenharmony_ci $ref: /schemas/types.yaml#/definitions/uint32 13762306a36Sopenharmony_ci minimum: 0 13862306a36Sopenharmony_ci maximum: 20 13962306a36Sopenharmony_ci 14062306a36Sopenharmony_ci cirrus,bias-lvls: 14162306a36Sopenharmony_ci description: | 14262306a36Sopenharmony_ci For a level-detect headset button scheme, each button will bias 14362306a36Sopenharmony_ci the mic pin to a certain voltage. To determine which button was 14462306a36Sopenharmony_ci pressed, the voltage is compared to sequential, decreasing 14562306a36Sopenharmony_ci voltages, until the compared voltage < bias voltage. 14662306a36Sopenharmony_ci For different hardware setups, a designer might want to tweak this. 14762306a36Sopenharmony_ci This is an array of descending values for the comparator voltage, 14862306a36Sopenharmony_ci given as percent of the HSBIAS voltage. 14962306a36Sopenharmony_ci 15062306a36Sopenharmony_ci Array of 4 values, each 0-63 15162306a36Sopenharmony_ci < x1 x2 x3 x4 > 15262306a36Sopenharmony_ci Default = < 15 8 4 1 > 15362306a36Sopenharmony_ci $ref: /schemas/types.yaml#/definitions/uint32-array 15462306a36Sopenharmony_ci minItems: 4 15562306a36Sopenharmony_ci maxItems: 4 15662306a36Sopenharmony_ci items: 15762306a36Sopenharmony_ci minimum: 0 15862306a36Sopenharmony_ci maximum: 63 15962306a36Sopenharmony_ci 16062306a36Sopenharmony_ci cirrus,hs-bias-ramp-rate: 16162306a36Sopenharmony_ci description: | 16262306a36Sopenharmony_ci If present this sets the rate that the HS bias should rise and fall. 16362306a36Sopenharmony_ci The actual rise and fall times depend on external hardware (the 16462306a36Sopenharmony_ci datasheet gives several rise and fall time examples). 16562306a36Sopenharmony_ci 16662306a36Sopenharmony_ci 0 - Fast rise time; slow, load-dependent fall time 16762306a36Sopenharmony_ci 1 - Fast 16862306a36Sopenharmony_ci 2 - Slow (default) 16962306a36Sopenharmony_ci 3 - Slowest 17062306a36Sopenharmony_ci 17162306a36Sopenharmony_ci The CS42L42_HSBIAS_RAMP_* defines are available for this. 17262306a36Sopenharmony_ci $ref: /schemas/types.yaml#/definitions/uint32 17362306a36Sopenharmony_ci minimum: 0 17462306a36Sopenharmony_ci maximum: 3 17562306a36Sopenharmony_ci 17662306a36Sopenharmony_ci cirrus,hs-bias-sense-disable: 17762306a36Sopenharmony_ci description: | 17862306a36Sopenharmony_ci If present the HSBIAS sense is disabled. Configures HSBIAS output 17962306a36Sopenharmony_ci current sense through the external 2.21-k resistor. HSBIAS_SENSE 18062306a36Sopenharmony_ci is a hardware feature to reduce the potential pop noise when the 18162306a36Sopenharmony_ci headset plug is removed slowly. But on some platforms ESD voltage 18262306a36Sopenharmony_ci will affect it causing plug detection to fail, especially with CTIA 18362306a36Sopenharmony_ci headset type. For different hardware setups, a designer might want 18462306a36Sopenharmony_ci to tweak default behavior. 18562306a36Sopenharmony_ci type: boolean 18662306a36Sopenharmony_ci 18762306a36Sopenharmony_cirequired: 18862306a36Sopenharmony_ci - compatible 18962306a36Sopenharmony_ci - reg 19062306a36Sopenharmony_ci - VP-supply 19162306a36Sopenharmony_ci - VCP-supply 19262306a36Sopenharmony_ci - VD_FILT-supply 19362306a36Sopenharmony_ci - VL-supply 19462306a36Sopenharmony_ci - VA-supply 19562306a36Sopenharmony_ci 19662306a36Sopenharmony_ciadditionalProperties: false 19762306a36Sopenharmony_ci 19862306a36Sopenharmony_ciexamples: 19962306a36Sopenharmony_ci - | 20062306a36Sopenharmony_ci #include <dt-bindings/sound/cs42l42.h> 20162306a36Sopenharmony_ci i2c { 20262306a36Sopenharmony_ci #address-cells = <1>; 20362306a36Sopenharmony_ci #size-cells = <0>; 20462306a36Sopenharmony_ci 20562306a36Sopenharmony_ci cs42l42: cs42l42@48 { 20662306a36Sopenharmony_ci compatible = "cirrus,cs42l42"; 20762306a36Sopenharmony_ci reg = <0x48>; 20862306a36Sopenharmony_ci VA-supply = <&dummy_vreg>; 20962306a36Sopenharmony_ci VP-supply = <&dummy_vreg>; 21062306a36Sopenharmony_ci VCP-supply = <&dummy_vreg>; 21162306a36Sopenharmony_ci VD_FILT-supply = <&dummy_vreg>; 21262306a36Sopenharmony_ci VL-supply = <&dummy_vreg>; 21362306a36Sopenharmony_ci 21462306a36Sopenharmony_ci reset-gpios = <&axi_gpio_0 1 0>; 21562306a36Sopenharmony_ci interrupt-parent = <&gpio0>; 21662306a36Sopenharmony_ci interrupts = <55 8>; 21762306a36Sopenharmony_ci 21862306a36Sopenharmony_ci cirrus,ts-inv = <CS42L42_TS_INV_DIS>; 21962306a36Sopenharmony_ci cirrus,ts-dbnc-rise = <CS42L42_TS_DBNCE_1000>; 22062306a36Sopenharmony_ci cirrus,ts-dbnc-fall = <CS42L42_TS_DBNCE_0>; 22162306a36Sopenharmony_ci cirrus,btn-det-init-dbnce = <100>; 22262306a36Sopenharmony_ci cirrus,btn-det-event-dbnce = <10>; 22362306a36Sopenharmony_ci cirrus,bias-lvls = <0x0F 0x08 0x04 0x01>; 22462306a36Sopenharmony_ci cirrus,hs-bias-ramp-rate = <CS42L42_HSBIAS_RAMP_SLOW>; 22562306a36Sopenharmony_ci }; 22662306a36Sopenharmony_ci }; 227