mfd: madera: Move binding over to dtschema

Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
[robh: Drop $ref on *-supply]
Signed-off-by: Rob Herring <robh@kernel.org>
This commit is contained in:
Charles Keepax 2020-05-13 10:57:20 +01:00 committed by Rob Herring
parent 067243bab9
commit 2cb8052981
3 changed files with 302 additions and 117 deletions

View File

@ -0,0 +1,299 @@
# 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:
- patches@opensource.cirrus.com
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;
};
};
};
};

View File

@ -1,114 +0,0 @@
Cirrus Logic Madera class audio codecs Multi-Functional 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/pinctrl/cirrus,madera-pinctrl.txt
bindings/regulator/arizona-regulator.txt
bindings/sound/madera.txt
Required properties:
- compatible : One of the following chip-specific strings:
"cirrus,cs47l15"
"cirrus,cs47l35"
"cirrus,cs47l85"
"cirrus,cs47l90"
"cirrus,cs47l91"
"cirrus,cs42l92"
"cirrus,cs47l92"
"cirrus,cs47l93"
"cirrus,wm1840"
- reg : I2C slave address when connected using I2C, chip select number when
using SPI.
- DCVDD-supply : Power supply for the device as defined in
bindings/regulator/regulator.txt
Mandatory on CS47L15, CS47L35, CS47L90, CS47L91, CS42L92, CS47L92, CS47L93
Optional on CS47L85, WM1840
- AVDD-supply, DBVDD1-supply, DBVDD2-supply, CPVDD1-supply, CPVDD2-supply :
Power supplies for the device
- DBVDD3-supply, DBVDD4-supply : Power supplies for the device
(CS47L85, CS47L90, CS47L91, WM1840)
- SPKVDDL-supply, SPKVDDR-supply : Power supplies for the device
(CS47L85, WM1840)
- SPKVDD-supply : Power supply for the device
(CS47L15, CS47L35)
- 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
- 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
- interrupt-parent : The parent interrupt controller.
- interrupts : The interrupt line the /IRQ signal for the device is
connected to.
Optional properties:
- MICVDD-supply : Power supply, only need to be specified if
powered externally
- reset-gpios : One entry specifying the GPIO controlling /RESET.
As defined in bindings/gpio.txt.
Although optional, it is strongly recommended to use a hardware reset
- clocks: Should reference the clocks supplied on MCLK1, MCLK2 and MCLK3
- clock-names: 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
- MICBIASx : Initial data for the MICBIAS regulators, as covered in
Documentation/devicetree/bindings/regulator/regulator.txt.
One for each MICBIAS generator (MICBIAS1, MICBIAS2, ...)
(all codecs)
One for each output pin (MICBIAS1A, MIBCIAS1B, MICBIAS2A, ...)
(all except CS47L85, WM1840)
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.
Optional child nodes:
micvdd : Node containing initialization data for the micvdd regulator
See bindings/regulator/arizona-regulator.txt
ldo1 : Node containing initialization data for the LDO1 regulator
See bindings/regulator/arizona-regulator.txt
(cs47l85, wm1840)
Example:
cs47l85@0 {
compatible = "cirrus,cs47l85";
reg = <0>;
reset-gpios = <&gpio 0>;
interrupt-controller;
#interrupt-cells = <2>;
interrupts = <&host_irq1>;
interrupt-parent = <&gic>;
gpio-controller;
#gpio-cells = <2>;
};

View File

@ -4089,9 +4089,9 @@ L: patches@opensource.cirrus.com
S: Supported
W: https://github.com/CirrusLogic/linux-drivers/wiki
T: git https://github.com/CirrusLogic/linux-drivers.git
F: Documentation/devicetree/bindings/mfd/madera.txt
F: Documentation/devicetree/bindings/pinctrl/cirrus,madera-pinctrl.txt
F: Documentation/devicetree/bindings/sound/madera.txt
F: Documentation/devicetree/bindings/mfd/cirrus,madera.yaml
F: Documentation/devicetree/bindings/pinctrl/cirrus,madera.yaml
F: Documentation/devicetree/bindings/sound/cirrus,madera.yaml
F: drivers/gpio/gpio-madera*
F: drivers/irqchip/irq-madera*
F: drivers/mfd/cs47l*