227 lines
6.1 KiB
YAML
227 lines
6.1 KiB
YAML
|
# 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
|
||
|
- cirrus,cs42l83
|
||
|
|
||
|
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>;
|
||
|
};
|
||
|
};
|