| # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) |
| %YAML 1.2 |
| --- |
| $id: http://devicetree.org/schemas/sound/cirrus,cs42l42.yaml# |
| $schema: http://devicetree.org/meta-schemas/core.yaml# |
| |
| title: Cirrus Logic CS42L42 audio CODEC |
| |
| maintainers: |
| - patches@opensource.cirrus.com |
| |
| description: |
| The CS42L42 is a low-power audio codec designed for portable applications. |
| It provides a high-dynamic range, stereo DAC for audio playback and a mono |
| high-dynamic-range ADC for audio capture. There is an integrated headset |
| detection block. |
| |
| properties: |
| compatible: |
| enum: |
| - cirrus,cs42l42 |
| |
| reg: |
| description: |
| The I2C address of the CS42L42. |
| maxItems: 1 |
| |
| VP-supply: |
| description: |
| VP power supply. |
| |
| VCP-supply: |
| description: |
| Charge pump power supply. |
| |
| VD_FILT-supply: |
| description: |
| FILT+ power supply. |
| |
| VL-supply: |
| description: |
| Logic power supply. |
| |
| VA-supply: |
| description: |
| Analog power supply. |
| |
| reset-gpios: |
| description: |
| This pin will be asserted and then deasserted to reset the |
| CS42L42 before communication starts. |
| maxItems: 1 |
| |
| interrupts: |
| description: |
| Interrupt for CS42L42 IRQ line. |
| maxItems: 1 |
| |
| cirrus,ts-inv: |
| description: | |
| Sets the behaviour of the jack plug detect switch. |
| |
| 0 - (Default) Shorted to tip when unplugged, open when plugged. |
| This is "inverted tip sense (ITS)" in the datasheet. |
| |
| 1 - Open when unplugged, shorted to tip when plugged. |
| This is "normal tip sense (TS)" in the datasheet. |
| |
| The CS42L42_TS_INV_* defines are available for this. |
| $ref: "/schemas/types.yaml#/definitions/uint32" |
| minimum: 0 |
| maximum: 1 |
| |
| cirrus,ts-dbnc-rise: |
| description: | |
| Debounce the rising edge of TIP_SENSE_PLUG. With no |
| debounce, the tip sense pin might be noisy on a plug event. |
| |
| 0 - 0ms |
| 1 - 125ms |
| 2 - 250ms |
| 3 - 500ms |
| 4 - 750ms |
| 5 - 1s (Default) |
| 6 - 1.25s |
| 7 - 1.5s |
| |
| The CS42L42_TS_DBNCE_* defines are available for this. |
| $ref: "/schemas/types.yaml#/definitions/uint32" |
| minimum: 0 |
| maximum: 7 |
| |
| cirrus,ts-dbnc-fall: |
| description: | |
| Debounce the falling edge of TIP_SENSE_UNPLUG. With no |
| debounce, the tip sense pin might be noisy on an unplug event. |
| |
| 0 - 0ms |
| 1 - 125ms |
| 2 - 250ms |
| 3 - 500ms |
| 4 - 750ms |
| 5 - 1s (Default) |
| 6 - 1.25s |
| 7 - 1.5s |
| |
| The CS42L42_TS_DBNCE_* defines are available for this. |
| $ref: "/schemas/types.yaml#/definitions/uint32" |
| minimum: 0 |
| maximum: 7 |
| |
| cirrus,btn-det-init-dbnce: |
| description: | |
| This sets how long to wait after enabling button detection |
| interrupts before servicing button interrupts, to allow the |
| HS bias time to settle. Value is in milliseconds. |
| There may be erroneous button interrupts if this debounce time |
| is too short. |
| |
| 0ms - 200ms, |
| Default = 100ms |
| $ref: "/schemas/types.yaml#/definitions/uint32" |
| minimum: 0 |
| maximum: 200 |
| |
| cirrus,btn-det-event-dbnce: |
| description: | |
| This sets how long to wait after receiving a button press |
| interrupt before processing it. Allows time for the button |
| press to make a clean connection with the bias resistors. |
| Value is in milliseconds. |
| |
| 0ms - 20ms, |
| Default = 10ms |
| $ref: "/schemas/types.yaml#/definitions/uint32" |
| minimum: 0 |
| maximum: 20 |
| |
| cirrus,bias-lvls: |
| description: | |
| For a level-detect headset button scheme, each button will bias |
| the mic pin to a certain voltage. To determine which button was |
| pressed, the voltage is compared to sequential, decreasing |
| voltages, until the compared voltage < bias voltage. |
| For different hardware setups, a designer might want to tweak this. |
| This is an array of descending values for the comparator voltage, |
| given as percent of the HSBIAS voltage. |
| |
| Array of 4 values, each 0-63 |
| < x1 x2 x3 x4 > |
| Default = < 15 8 4 1 > |
| $ref: /schemas/types.yaml#/definitions/uint32-array |
| minItems: 4 |
| maxItems: 4 |
| items: |
| minimum: 0 |
| maximum: 63 |
| |
| cirrus,hs-bias-ramp-rate: |
| description: | |
| If present this sets the rate that the HS bias should rise and fall. |
| The actual rise and fall times depend on external hardware (the |
| datasheet gives several rise and fall time examples). |
| |
| 0 - Fast rise time; slow, load-dependent fall time |
| 1 - Fast |
| 2 - Slow (default) |
| 3 - Slowest |
| |
| The CS42L42_HSBIAS_RAMP_* defines are available for this. |
| $ref: "/schemas/types.yaml#/definitions/uint32" |
| minimum: 0 |
| maximum: 3 |
| |
| cirrus,hs-bias-sense-disable: |
| description: | |
| If present the HSBIAS sense is disabled. Configures HSBIAS output |
| current sense through the external 2.21-k resistor. HSBIAS_SENSE |
| is a hardware feature to reduce the potential pop noise when the |
| headset plug is removed slowly. But on some platforms ESD voltage |
| will affect it causing plug detection to fail, especially with CTIA |
| headset type. For different hardware setups, a designer might want |
| to tweak default behavior. |
| type: boolean |
| |
| required: |
| - compatible |
| - reg |
| - VP-supply |
| - VCP-supply |
| - VD_FILT-supply |
| - VL-supply |
| - VA-supply |
| |
| additionalProperties: false |
| |
| examples: |
| - | |
| #include <dt-bindings/sound/cs42l42.h> |
| i2c { |
| #address-cells = <1>; |
| #size-cells = <0>; |
| |
| cs42l42: cs42l42@48 { |
| compatible = "cirrus,cs42l42"; |
| reg = <0x48>; |
| VA-supply = <&dummy_vreg>; |
| VP-supply = <&dummy_vreg>; |
| VCP-supply = <&dummy_vreg>; |
| VD_FILT-supply = <&dummy_vreg>; |
| VL-supply = <&dummy_vreg>; |
| |
| reset-gpios = <&axi_gpio_0 1 0>; |
| interrupt-parent = <&gpio0>; |
| interrupts = <55 8>; |
| |
| cirrus,ts-inv = <CS42L42_TS_INV_DIS>; |
| cirrus,ts-dbnc-rise = <CS42L42_TS_DBNCE_1000>; |
| cirrus,ts-dbnc-fall = <CS42L42_TS_DBNCE_0>; |
| cirrus,btn-det-init-dbnce = <100>; |
| cirrus,btn-det-event-dbnce = <10>; |
| cirrus,bias-lvls = <0x0F 0x08 0x04 0x01>; |
| cirrus,hs-bias-ramp-rate = <CS42L42_HSBIAS_RAMP_SLOW>; |
| }; |
| }; |