You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
141 lines
4.2 KiB
141 lines
4.2 KiB
Cirrus Logic Tacna class audio codecs multi-function device
|
|
|
|
These devices are audio SoCs with extensive digital capabilities and a range
|
|
of analogue I/O.
|
|
|
|
See also the child driver bindings in:
|
|
bindings/extcon/extcon-tacna.txt
|
|
bindings/gpio/gpio-tacna.txt
|
|
bindings/pinctrl/cirrus,tacna-pinctrl.txt
|
|
bindings/regulator/arizona-regulator.txt
|
|
bindings/sound/tacna.txt
|
|
|
|
Required properties:
|
|
|
|
- compatible : One of the following chip-specific strings:
|
|
"cirrus,cs47l96"
|
|
"cirrus,cs47l97"
|
|
|
|
- reg : I2C slave address when connected using I2C, chip select number when
|
|
using SPI.
|
|
|
|
- VDD_D-supply : Power supply for the device as defined in
|
|
bindings/regulator/regulator.txt
|
|
|
|
- VDD_A-supply, VDD_IO1-supply, VDD_IO2-supply,
|
|
VDD1_CP-supply, VDD2_CP-supply, VDD3_CP-supply:
|
|
Power supplies for the device
|
|
|
|
- interrupt-controller : Indicates that this device is an interrupt controller
|
|
|
|
- #interrupt-cells: the number of cells to describe an IRQ, must be 2.
|
|
The first cell is the IRQ number.
|
|
The second cell is the flags, encoded as the trigger masks from
|
|
bindings/interrupt-controller/interrupts.txt
|
|
|
|
- interrupt-parent : The parent interrupt controller.
|
|
|
|
- interrupts : The interrupt line the /IRQ signal for the device is
|
|
connected to.
|
|
|
|
- gpio-controller : Indicates this device is a GPIO controller.
|
|
|
|
- #gpio-cells : Must be 2. The first cell is the pin number. The second cell
|
|
is reserved for future use and must be zero
|
|
|
|
Optional properties:
|
|
|
|
- reset-gpios : One entry specifying the GPIO controlling RESET_B.
|
|
As defined in bindings/gpio.txt.
|
|
|
|
- pinctrl-names : Name of pinctrl configurations. Each of these is optional.
|
|
Legal names are:
|
|
"probe" - external pinctrl dependencies required to probe this codec,
|
|
typically these are for the reset GPIO and IRQ pin, though
|
|
could include clocks. Do NOT include configuration of this
|
|
codec's own GPIO pins because these can't be applied until
|
|
after the mfd probe has completed.
|
|
|
|
"active" - full set of external and local pinctrl configurations to
|
|
apply after probe including all the configuration of the GPIO
|
|
pins on this codec (bindings/pinctrl/cirrus,tacna-pinctrl.txt).
|
|
This must include the external dependencies in the "probe"
|
|
configuration, since they will still be required after probe.
|
|
|
|
Do not use "default" since it is applied too early before the mfd has
|
|
fully probed the codec.
|
|
|
|
- pinctrl-0, pinctrl-1 : handle to pinctrl configurations matching the
|
|
entries in pinctrl-names
|
|
|
|
- cirrus,clk32k-src : set the input source for the codec 32kHz clock.
|
|
See the TACNA_32KZ_* macros in include/dt-bindings/mfd/tacna.h for
|
|
valid options.
|
|
cs48l32 will default to MCLK1, all other codecs will default to MCLK2.
|
|
|
|
Optional child nodes:
|
|
- MICBIASx : Initial data for the MICBIAS regulators, as covered in
|
|
Documentation/devicetree/bindings/regulator/regulator.txt.
|
|
|
|
One for each MICBIAS generator (MICBIAS1, MICBIAS2, ...)
|
|
|
|
One for each output pin (MICBIAS1A, MIBCIAS1B, MICBIAS2A, ...)
|
|
|
|
The following property is supported for all nodes:
|
|
- regulator-active-discharge:
|
|
0: Disable active discharge.
|
|
1: Enable active discharge.
|
|
|
|
The following following additional property is supported for the generator
|
|
nodes:
|
|
- cirrus,ext-cap : Set to 1 if the MICBIAS has external decoupling
|
|
capacitors attached.
|
|
|
|
Example:
|
|
|
|
codec: cs47l96@0 {
|
|
compatible = "cirrus,cs47l96";
|
|
reg = <0>;
|
|
|
|
interrupt-controller;
|
|
#interrupt-cells = <2>;
|
|
interrupt-parent = <&main_pic>;
|
|
interrupts = <1 0>;
|
|
|
|
gpio-controller;
|
|
#gpio-cells = <2>;
|
|
|
|
VDD_A-supply = <®ulator_dummy>;
|
|
VDD_IO1-supply = <®ulator_dummy>;
|
|
VDD1_CP-supply = <®ulator_dummy>;
|
|
VDD2_CP-supply = <®ulator_dummy>;
|
|
VDD3_CP-supply = <®ulator_dummy>;
|
|
VDD_D-supply = <®ulator_dummy_dcvdd>;
|
|
|
|
reset-gpios = <&gpio 0>;
|
|
|
|
pinctrl-names = "probe", "active";
|
|
pinctrl-0 = <&gpio_0_enable_state>;
|
|
pinctrl-1 = <&gpio_0_enable_state &cs47l96_gpio_config>;
|
|
|
|
cs47l96_gpio_config: cs47l96-gpio-config {
|
|
asp2 {
|
|
groups = "asp2";
|
|
function = "asp2";
|
|
bias-bus-hold;
|
|
};
|
|
|
|
opclk {
|
|
groups = "gpio1";
|
|
function = "opclk";
|
|
bias-pull-up;
|
|
drive-strength = <8>;
|
|
};
|
|
};
|
|
|
|
MICBIAS1 {
|
|
regulator-min-microvolt = <900000>;
|
|
regulator-max-microvolt = <3300000>;
|
|
cirrus,ext-cap = <1>;
|
|
};
|
|
};
|
|
|