xref: /freebsd/sys/contrib/device-tree/Bindings/sound/wlf,wm8994.yaml (revision fac71e4e09885bb2afa3d984a0c239a52e1a7418)
1*fac71e4eSEmmanuel Vadot# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
2*fac71e4eSEmmanuel Vadot%YAML 1.2
3*fac71e4eSEmmanuel Vadot---
4*fac71e4eSEmmanuel Vadot$id: http://devicetree.org/schemas/sound/wlf,wm8994.yaml#
5*fac71e4eSEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml#
6*fac71e4eSEmmanuel Vadot
7*fac71e4eSEmmanuel Vadottitle: Wolfson WM1811/WM8994/WM8958 audio codecs
8*fac71e4eSEmmanuel Vadot
9*fac71e4eSEmmanuel Vadotmaintainers:
10*fac71e4eSEmmanuel Vadot  - Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
11*fac71e4eSEmmanuel Vadot  - patches@opensource.cirrus.com
12*fac71e4eSEmmanuel Vadot
13*fac71e4eSEmmanuel Vadotdescription: |
14*fac71e4eSEmmanuel Vadot  These devices support both I2C and SPI (configured with pin strapping on the
15*fac71e4eSEmmanuel Vadot  board).
16*fac71e4eSEmmanuel Vadot
17*fac71e4eSEmmanuel Vadot  Pins on the device (for linking into audio routes):
18*fac71e4eSEmmanuel Vadot  IN1LN, IN1LP, IN2LN, IN2LP:VXRN, IN1RN, IN1RP, IN2RN, IN2RP:VXRP, SPKOUTLP,
19*fac71e4eSEmmanuel Vadot  SPKOUTLN, SPKOUTRP, SPKOUTRN, HPOUT1L, HPOUT1R, HPOUT2P, HPOUT2N, LINEOUT1P,
20*fac71e4eSEmmanuel Vadot  LINEOUT1N, LINEOUT2P, LINEOUT2N.
21*fac71e4eSEmmanuel Vadot
22*fac71e4eSEmmanuel Vadotproperties:
23*fac71e4eSEmmanuel Vadot  compatible:
24*fac71e4eSEmmanuel Vadot    enum:
25*fac71e4eSEmmanuel Vadot      - wlf,wm1811
26*fac71e4eSEmmanuel Vadot      - wlf,wm8994
27*fac71e4eSEmmanuel Vadot      - wlf,wm8958
28*fac71e4eSEmmanuel Vadot
29*fac71e4eSEmmanuel Vadot  reg:
30*fac71e4eSEmmanuel Vadot    maxItems: 1
31*fac71e4eSEmmanuel Vadot
32*fac71e4eSEmmanuel Vadot  clocks:
33*fac71e4eSEmmanuel Vadot    minItems: 1
34*fac71e4eSEmmanuel Vadot    maxItems: 2
35*fac71e4eSEmmanuel Vadot
36*fac71e4eSEmmanuel Vadot  clock-names:
37*fac71e4eSEmmanuel Vadot    minItems: 1
38*fac71e4eSEmmanuel Vadot    items:
39*fac71e4eSEmmanuel Vadot      - const: MCLK1
40*fac71e4eSEmmanuel Vadot      - const: MCLK2
41*fac71e4eSEmmanuel Vadot
42*fac71e4eSEmmanuel Vadot  gpio-controller: true
43*fac71e4eSEmmanuel Vadot
44*fac71e4eSEmmanuel Vadot  '#gpio-cells':
45*fac71e4eSEmmanuel Vadot    const: 2
46*fac71e4eSEmmanuel Vadot
47*fac71e4eSEmmanuel Vadot  interrupts:
48*fac71e4eSEmmanuel Vadot    maxItems: 1
49*fac71e4eSEmmanuel Vadot
50*fac71e4eSEmmanuel Vadot  interrupt-controller: true
51*fac71e4eSEmmanuel Vadot
52*fac71e4eSEmmanuel Vadot  '#interrupt-cells':
53*fac71e4eSEmmanuel Vadot    const: 2
54*fac71e4eSEmmanuel Vadot    description:
55*fac71e4eSEmmanuel Vadot      The first cell is the IRQ number. The second cell is the flags, encoded
56*fac71e4eSEmmanuel Vadot      as the trigger masks.
57*fac71e4eSEmmanuel Vadot
58*fac71e4eSEmmanuel Vadot  AVDD1-supply: true
59*fac71e4eSEmmanuel Vadot  AVDD2-supply: true
60*fac71e4eSEmmanuel Vadot  CPVDD-supply: true
61*fac71e4eSEmmanuel Vadot  DBVDD-supply: true
62*fac71e4eSEmmanuel Vadot  DBVDD1-supply: true
63*fac71e4eSEmmanuel Vadot  DBVDD2-supply: true
64*fac71e4eSEmmanuel Vadot  DBVDD3-supply: true
65*fac71e4eSEmmanuel Vadot  DCVDD-supply: true
66*fac71e4eSEmmanuel Vadot  LDO1VDD-supply: true
67*fac71e4eSEmmanuel Vadot  LDO2VDD-supply: true
68*fac71e4eSEmmanuel Vadot  SPKVDD1-supply: true
69*fac71e4eSEmmanuel Vadot  SPKVDD2-supply: true
70*fac71e4eSEmmanuel Vadot
71*fac71e4eSEmmanuel Vadot  '#sound-dai-cells':
72*fac71e4eSEmmanuel Vadot    const: 0
73*fac71e4eSEmmanuel Vadot
74*fac71e4eSEmmanuel Vadot  wlf,gpio-cfg:
75*fac71e4eSEmmanuel Vadot    $ref: /schemas/types.yaml#/definitions/uint32-array
76*fac71e4eSEmmanuel Vadot    maxItems: 11
77*fac71e4eSEmmanuel Vadot    description:
78*fac71e4eSEmmanuel Vadot      A list of GPIO configuration register values. If absent, no configuration
79*fac71e4eSEmmanuel Vadot      of these registers is performed. If any value is over 0xffff then the
80*fac71e4eSEmmanuel Vadot      register will be left as default. If present 11 values must be supplied.
81*fac71e4eSEmmanuel Vadot
82*fac71e4eSEmmanuel Vadot  wlf,micbias-cfg:
83*fac71e4eSEmmanuel Vadot    $ref: /schemas/types.yaml#/definitions/uint32-array
84*fac71e4eSEmmanuel Vadot    maxItems: 2
85*fac71e4eSEmmanuel Vadot    description:
86*fac71e4eSEmmanuel Vadot      Two MICBIAS register values for WM1811 or WM8958.  If absent the register
87*fac71e4eSEmmanuel Vadot      defaults will be used.
88*fac71e4eSEmmanuel Vadot
89*fac71e4eSEmmanuel Vadot  wlf,ldo1ena-gpios:
90*fac71e4eSEmmanuel Vadot    maxItems: 1
91*fac71e4eSEmmanuel Vadot    description:
92*fac71e4eSEmmanuel Vadot      Control of LDO1ENA input to device.
93*fac71e4eSEmmanuel Vadot
94*fac71e4eSEmmanuel Vadot  wlf,ldo2ena-gpios:
95*fac71e4eSEmmanuel Vadot    maxItems: 1
96*fac71e4eSEmmanuel Vadot    description:
97*fac71e4eSEmmanuel Vadot      Control of LDO2ENA input to device.
98*fac71e4eSEmmanuel Vadot
99*fac71e4eSEmmanuel Vadot  wlf,lineout1-se:
100*fac71e4eSEmmanuel Vadot    type: boolean
101*fac71e4eSEmmanuel Vadot    description:
102*fac71e4eSEmmanuel Vadot      LINEOUT1 is in single ended mode.
103*fac71e4eSEmmanuel Vadot
104*fac71e4eSEmmanuel Vadot  wlf,lineout2-se:
105*fac71e4eSEmmanuel Vadot    type: boolean
106*fac71e4eSEmmanuel Vadot    description:
107*fac71e4eSEmmanuel Vadot      INEOUT2 is in single ended mode.
108*fac71e4eSEmmanuel Vadot
109*fac71e4eSEmmanuel Vadot  wlf,lineout1-feedback:
110*fac71e4eSEmmanuel Vadot    type: boolean
111*fac71e4eSEmmanuel Vadot    description:
112*fac71e4eSEmmanuel Vadot      LINEOUT1 has common mode feedback connected.
113*fac71e4eSEmmanuel Vadot
114*fac71e4eSEmmanuel Vadot  wlf,lineout2-feedback:
115*fac71e4eSEmmanuel Vadot    type: boolean
116*fac71e4eSEmmanuel Vadot    description:
117*fac71e4eSEmmanuel Vadot      LINEOUT2 has common mode feedback connected.
118*fac71e4eSEmmanuel Vadot
119*fac71e4eSEmmanuel Vadot  wlf,ldoena-always-driven:
120*fac71e4eSEmmanuel Vadot    type: boolean
121*fac71e4eSEmmanuel Vadot    description:
122*fac71e4eSEmmanuel Vadot      LDOENA is always driven.
123*fac71e4eSEmmanuel Vadot
124*fac71e4eSEmmanuel Vadot  wlf,spkmode-pu:
125*fac71e4eSEmmanuel Vadot    type: boolean
126*fac71e4eSEmmanuel Vadot    description:
127*fac71e4eSEmmanuel Vadot      Enable the internal pull-up resistor on the SPKMODE pin.
128*fac71e4eSEmmanuel Vadot
129*fac71e4eSEmmanuel Vadot  wlf,csnaddr-pd:
130*fac71e4eSEmmanuel Vadot    type: boolean
131*fac71e4eSEmmanuel Vadot    description:
132*fac71e4eSEmmanuel Vadot      Enable the internal pull-down resistor on the CS/ADDR pin.
133*fac71e4eSEmmanuel Vadot
134*fac71e4eSEmmanuel Vadotrequired:
135*fac71e4eSEmmanuel Vadot  - compatible
136*fac71e4eSEmmanuel Vadot  - reg
137*fac71e4eSEmmanuel Vadot  - AVDD2-supply
138*fac71e4eSEmmanuel Vadot  - CPVDD-supply
139*fac71e4eSEmmanuel Vadot  - SPKVDD1-supply
140*fac71e4eSEmmanuel Vadot  - SPKVDD2-supply
141*fac71e4eSEmmanuel Vadot
142*fac71e4eSEmmanuel VadotallOf:
143*fac71e4eSEmmanuel Vadot  - $ref: dai-common.yaml#
144*fac71e4eSEmmanuel Vadot  - if:
145*fac71e4eSEmmanuel Vadot      properties:
146*fac71e4eSEmmanuel Vadot        compatible:
147*fac71e4eSEmmanuel Vadot          enum:
148*fac71e4eSEmmanuel Vadot            - wlf,wm1811
149*fac71e4eSEmmanuel Vadot            - wlf,wm8958
150*fac71e4eSEmmanuel Vadot    then:
151*fac71e4eSEmmanuel Vadot      properties:
152*fac71e4eSEmmanuel Vadot        DBVDD-supply: false
153*fac71e4eSEmmanuel Vadot        LDO2VDD-supply: false
154*fac71e4eSEmmanuel Vadot      required:
155*fac71e4eSEmmanuel Vadot        - DBVDD1-supply
156*fac71e4eSEmmanuel Vadot        - DBVDD2-supply
157*fac71e4eSEmmanuel Vadot        - DBVDD3-supply
158*fac71e4eSEmmanuel Vadot    else:
159*fac71e4eSEmmanuel Vadot      properties:
160*fac71e4eSEmmanuel Vadot        DBVDD1-supply: false
161*fac71e4eSEmmanuel Vadot        DBVDD2-supply: false
162*fac71e4eSEmmanuel Vadot        DBVDD3-supply: false
163*fac71e4eSEmmanuel Vadot      required:
164*fac71e4eSEmmanuel Vadot        - DBVDD-supply
165*fac71e4eSEmmanuel Vadot
166*fac71e4eSEmmanuel VadotunevaluatedProperties: false
167*fac71e4eSEmmanuel Vadot
168*fac71e4eSEmmanuel Vadotexamples:
169*fac71e4eSEmmanuel Vadot  - |
170*fac71e4eSEmmanuel Vadot    #include <dt-bindings/gpio/gpio.h>
171*fac71e4eSEmmanuel Vadot
172*fac71e4eSEmmanuel Vadot    i2c {
173*fac71e4eSEmmanuel Vadot        #address-cells = <1>;
174*fac71e4eSEmmanuel Vadot        #size-cells = <0>;
175*fac71e4eSEmmanuel Vadot
176*fac71e4eSEmmanuel Vadot        audio-codec@1a {
177*fac71e4eSEmmanuel Vadot            compatible = "wlf,wm1811";
178*fac71e4eSEmmanuel Vadot            reg = <0x1a>;
179*fac71e4eSEmmanuel Vadot            clocks = <&i2s0 0>;
180*fac71e4eSEmmanuel Vadot            clock-names = "MCLK1";
181*fac71e4eSEmmanuel Vadot
182*fac71e4eSEmmanuel Vadot            AVDD2-supply = <&main_dc_reg>;
183*fac71e4eSEmmanuel Vadot            CPVDD-supply = <&main_dc_reg>;
184*fac71e4eSEmmanuel Vadot            DBVDD1-supply = <&main_dc_reg>;
185*fac71e4eSEmmanuel Vadot            DBVDD2-supply = <&main_dc_reg>;
186*fac71e4eSEmmanuel Vadot            DBVDD3-supply = <&main_dc_reg>;
187*fac71e4eSEmmanuel Vadot            LDO1VDD-supply = <&main_dc_reg>;
188*fac71e4eSEmmanuel Vadot            SPKVDD1-supply = <&main_dc_reg>;
189*fac71e4eSEmmanuel Vadot            SPKVDD2-supply = <&main_dc_reg>;
190*fac71e4eSEmmanuel Vadot
191*fac71e4eSEmmanuel Vadot            wlf,ldo1ena-gpios = <&gpb0 0 GPIO_ACTIVE_HIGH>;
192*fac71e4eSEmmanuel Vadot            wlf,ldo2ena-gpios = <&gpb0 1 GPIO_ACTIVE_HIGH>;
193*fac71e4eSEmmanuel Vadot        };
194*fac71e4eSEmmanuel Vadot    };
195