forked from Qortal/Brooklyn
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.
299 lines
6.9 KiB
299 lines
6.9 KiB
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause |
|
%YAML 1.2 |
|
--- |
|
$id: http://devicetree.org/schemas/mfd/cirrus,madera.yaml# |
|
$schema: http://devicetree.org/meta-schemas/core.yaml# |
|
|
|
title: Cirrus Logic Madera class audio CODECs Multi-Functional Device |
|
|
|
maintainers: |
|
- [email protected] |
|
|
|
description: | |
|
These devices are audio SoCs with extensive digital capabilities and a range |
|
of analogue I/O. |
|
|
|
See also the child driver bindings in: |
|
|
|
bindings/pinctrl/cirrus,madera.yaml |
|
bindings/regulator/wlf,arizona.yaml |
|
bindings/sound/cirrus,madera.yaml |
|
|
|
allOf: |
|
- $ref: /schemas/pinctrl/cirrus,madera.yaml# |
|
- $ref: /schemas/regulator/wlf,arizona.yaml# |
|
- $ref: /schemas/sound/cirrus,madera.yaml# |
|
- if: |
|
properties: |
|
compatible: |
|
contains: |
|
enum: |
|
- cirrus,cs47l85 |
|
- wlf,wm1840 |
|
then: |
|
properties: |
|
SPKVDDL-supply: |
|
description: |
|
Left speaker driver power supply. |
|
|
|
SPKVDDR-supply: |
|
description: |
|
Right speaker driver power supply. |
|
|
|
required: |
|
- SPKVDDL-supply |
|
- SPKVDDR-supply |
|
else: |
|
required: |
|
- DCVDD-supply |
|
- if: |
|
properties: |
|
compatible: |
|
contains: |
|
enum: |
|
- cirrus,cs47l15 |
|
- cirrus,cs47l35 |
|
then: |
|
properties: |
|
SPKVDD-supply: |
|
description: |
|
Mono speaker driver power supply. |
|
|
|
required: |
|
- SPKVDD-supply |
|
- if: |
|
properties: |
|
compatible: |
|
contains: |
|
enum: |
|
- cirrus,cs47l35 |
|
- cirrus,cs47l85 |
|
- cirrus,cs47l90 |
|
- cirrus,cs47l91 |
|
- wlf,wm1840 |
|
then: |
|
properties: |
|
DBVDD2-supply: |
|
description: |
|
Databus power supply. |
|
|
|
required: |
|
- DBVDD2-supply |
|
- if: |
|
properties: |
|
compatible: |
|
contains: |
|
enum: |
|
- cirrus,cs47l85 |
|
- cirrus,cs47l90 |
|
- cirrus,cs47l91 |
|
- wlf,wm1840 |
|
then: |
|
properties: |
|
DBVDD3-supply: |
|
description: |
|
Databus power supply. |
|
|
|
DBVDD4-supply: |
|
description: |
|
Databus power supply. |
|
- if: |
|
properties: |
|
compatible: |
|
contains: |
|
enum: |
|
- cirrus,cs47l15 |
|
then: |
|
required: |
|
- MICVDD-supply |
|
else: |
|
properties: |
|
CPVDD2-supply: |
|
description: |
|
Secondary charge pump power supply. |
|
|
|
required: |
|
- CPVDD2-supply |
|
|
|
properties: |
|
compatible: |
|
enum: |
|
- cirrus,cs47l15 |
|
- cirrus,cs47l35 |
|
- cirrus,cs47l85 |
|
- cirrus,cs47l90 |
|
- cirrus,cs47l91 |
|
- cirrus,cs42l92 |
|
- cirrus,cs47l92 |
|
- cirrus,cs47l93 |
|
- cirrus,wm1840 |
|
|
|
reg: |
|
maxItems: 1 |
|
|
|
gpio-controller: true |
|
|
|
'#gpio-cells': |
|
description: |
|
The first cell is the pin number. The second cell is reserved for |
|
future use and must be zero |
|
const: 2 |
|
|
|
interrupt-controller: true |
|
|
|
'#interrupt-cells': |
|
description: |
|
The first cell is the IRQ number. |
|
The second cell is the flags, encoded as the trigger masks from |
|
bindings/interrupt-controller/interrupts.txt |
|
const: 2 |
|
|
|
interrupts: |
|
maxItems: 1 |
|
|
|
reset-gpios: |
|
description: |
|
One entry specifying the GPIO controlling /RESET. As defined in |
|
bindings/gpio.txt. Although optional, it is strongly recommended |
|
to use a hardware reset. |
|
maxItems: 1 |
|
|
|
clocks: |
|
description: |
|
Should reference the clocks supplied on MCLK1, MCLK2 and MCLK3. |
|
minItems: 1 |
|
maxItems: 3 |
|
|
|
clock-names: |
|
description: | |
|
May contain up to three strings: |
|
"mclk1" For the clock supplied on MCLK1, recommended to be a |
|
high quality audio reference clock. |
|
"mclk2" For the clock supplied on MCLK2, required to be an |
|
always on 32k clock. |
|
"mclk3" For the clock supplied on MCLK3. |
|
oneOf: |
|
- items: |
|
- const: mclk1 |
|
- items: |
|
- const: mclk2 |
|
- items: |
|
- const: mclk3 |
|
- items: |
|
- const: mclk1 |
|
- const: mclk2 |
|
- items: |
|
- const: mclk1 |
|
- const: mclk3 |
|
- items: |
|
- const: mclk2 |
|
- const: mclk3 |
|
- items: |
|
- const: mclk1 |
|
- const: mclk2 |
|
- const: mclk3 |
|
|
|
AVDD-supply: |
|
description: |
|
Analogue power supply. |
|
|
|
DBVDD1-supply: |
|
description: |
|
Databus power supply. |
|
|
|
CPVDD1-supply: |
|
description: |
|
Charge pump power supply. |
|
|
|
DCVDD-supply: |
|
description: |
|
Digital power supply, optional on CS47L85, WM1840 where it can |
|
be supplied internally. |
|
|
|
MICVDD-supply: |
|
description: |
|
Microphone power supply, normally supplied internally except on |
|
cs47l24, wm1831 where it is mandatory. |
|
|
|
required: |
|
- compatible |
|
- gpio-controller |
|
- '#gpio-cells' |
|
- interrupt-controller |
|
- '#interrupt-cells' |
|
- interrupt-parent |
|
- interrupts |
|
- AVDD-supply |
|
- DBVDD1-supply |
|
- CPVDD1-supply |
|
|
|
unevaluatedProperties: false |
|
|
|
examples: |
|
- | |
|
#include <dt-bindings/sound/madera.h> |
|
i2c@e0004000 { |
|
#address-cells = <1>; |
|
#size-cells = <0>; |
|
reg = <0xe0004000 0x1000>; |
|
|
|
cs47l85: codec@1a { |
|
compatible = "cirrus,cs47l85"; |
|
reg = <0x1a>; |
|
|
|
reset-gpios = <&gpio 0>; |
|
wlf,ldoena = <&gpio 1>; |
|
|
|
interrupt-controller; |
|
#interrupt-cells = <2>; |
|
interrupts = <&host_irq1>; |
|
interrupt-parent = <&gic>; |
|
|
|
gpio-controller; |
|
#gpio-cells = <2>; |
|
|
|
AVDD-supply = <&vdd1v8>; |
|
DBVDD1-supply = <&vdd1v8>; |
|
DBVDD2-supply = <&vdd1v8>; |
|
DBVDD3-supply = <&vdd1v8>; |
|
DBVDD4-supply = <&vdd1v8>; |
|
CPVDD1-supply = <&vdd1v8>; |
|
CPVDD2-supply = <&vdd1v2>; |
|
SPKVDDL-supply = <&vdd5v>; |
|
SPKVDDR-supply = <&vdd5v>; |
|
|
|
clocks = <&clks 0>, <&clks 1>, <&clks 2>; |
|
clock-names = "mclk1", "mclk2", "mclk3"; |
|
|
|
cirrus,dmic-ref = <0 0 MADERA_DMIC_REF_MICBIAS1>; |
|
cirrus,inmode = < |
|
MADERA_INMODE_SE MADERA_INMODE_SE |
|
MADERA_INMODE_SE MADERA_INMODE_SE |
|
MADERA_INMODE_DIFF MADERA_INMODE_DIFF |
|
>; |
|
cirrus,max-channels-clocked = <2 0 0>; |
|
|
|
pinctrl-names = "default"; |
|
pinctrl-0 = <&pinsettings>; |
|
|
|
pinsettings: pin-settings { |
|
aif1-pins { |
|
groups = "aif1"; |
|
function = "aif1"; |
|
bias-bus-hold; |
|
}; |
|
|
|
aif2-pins { |
|
groups = "aif2"; |
|
function = "aif2"; |
|
bias-bus-hold; |
|
}; |
|
|
|
aif3-pins { |
|
groups = "aif3"; |
|
function = "aif3"; |
|
bias-bus-hold; |
|
}; |
|
}; |
|
}; |
|
};
|
|
|