xref: /linux/Documentation/devicetree/bindings/sound/wlf,wm8904.yaml (revision e50da555ca4d42b1b98d0f26789db64f26a0919a)
183759352SFrancesco Dolcini# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
283759352SFrancesco Dolcini%YAML 1.2
383759352SFrancesco Dolcini---
483759352SFrancesco Dolcini$id: http://devicetree.org/schemas/sound/wlf,wm8904.yaml#
583759352SFrancesco Dolcini$schema: http://devicetree.org/meta-schemas/core.yaml#
683759352SFrancesco Dolcini
783759352SFrancesco Dolcinititle: Wolfson WM8904/WM8912 audio codecs
883759352SFrancesco Dolcini
983759352SFrancesco Dolcinimaintainers:
1083759352SFrancesco Dolcini  - patches@opensource.cirrus.com
1183759352SFrancesco Dolcini
1283759352SFrancesco Dolcinidescription: |
1383759352SFrancesco Dolcini  Pins on the device (for linking into audio routes):
1483759352SFrancesco Dolcini  IN1L, IN1R, IN2L, IN2R, IN3L, IN3R, HPOUTL, HPOUTR, LINEOUTL, LINEOUTR,
1583759352SFrancesco Dolcini  MICBIAS
1683759352SFrancesco Dolcini
1783759352SFrancesco Dolciniproperties:
1883759352SFrancesco Dolcini  compatible:
1983759352SFrancesco Dolcini    enum:
2083759352SFrancesco Dolcini      - wlf,wm8904
2183759352SFrancesco Dolcini      - wlf,wm8912
2283759352SFrancesco Dolcini
2383759352SFrancesco Dolcini  reg:
2483759352SFrancesco Dolcini    maxItems: 1
2583759352SFrancesco Dolcini
2683759352SFrancesco Dolcini  "#sound-dai-cells":
2783759352SFrancesco Dolcini    const: 0
2883759352SFrancesco Dolcini
2983759352SFrancesco Dolcini  clocks:
3083759352SFrancesco Dolcini    maxItems: 1
3183759352SFrancesco Dolcini
3283759352SFrancesco Dolcini  clock-names:
3383759352SFrancesco Dolcini    const: mclk
3483759352SFrancesco Dolcini
3583759352SFrancesco Dolcini  AVDD-supply: true
3683759352SFrancesco Dolcini  CPVDD-supply: true
3783759352SFrancesco Dolcini  DBVDD-supply: true
3883759352SFrancesco Dolcini  DCVDD-supply: true
3983759352SFrancesco Dolcini  MICVDD-supply: true
4083759352SFrancesco Dolcini
41*bd552e93SErnest Van Hoecke  wlf,in1l-as-dmicdat1:
42*bd552e93SErnest Van Hoecke    type: boolean
43*bd552e93SErnest Van Hoecke    description:
44*bd552e93SErnest Van Hoecke      Use IN1L/DMICDAT1 as DMICDAT1, enabling the DMIC input path.
45*bd552e93SErnest Van Hoecke      Can be used separately or together with wlf,in1r-as-dmicdat2.
46*bd552e93SErnest Van Hoecke
47*bd552e93SErnest Van Hoecke  wlf,in1r-as-dmicdat2:
48*bd552e93SErnest Van Hoecke    type: boolean
49*bd552e93SErnest Van Hoecke    description:
50*bd552e93SErnest Van Hoecke      Use IN1R/DMICDAT2 as DMICDAT2, enabling the DMIC input path.
51*bd552e93SErnest Van Hoecke      Can be used separately or together with wlf,in1l-as-dmicdat1.
52*bd552e93SErnest Van Hoecke
53*bd552e93SErnest Van Hoecke  wlf,gpio-cfg:
54*bd552e93SErnest Van Hoecke    $ref: /schemas/types.yaml#/definitions/uint32-array
55*bd552e93SErnest Van Hoecke    minItems: 4
56*bd552e93SErnest Van Hoecke    maxItems: 4
57*bd552e93SErnest Van Hoecke    description:
58*bd552e93SErnest Van Hoecke      Default register values for R121/122/123/124 (GPIO Control).
59*bd552e93SErnest Van Hoecke      If any entry has the value 0xFFFF, the related register won't be set.
60*bd552e93SErnest Van Hoecke    default: [0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF]
61*bd552e93SErnest Van Hoecke
62*bd552e93SErnest Van Hoecke  wlf,micbias-cfg:
63*bd552e93SErnest Van Hoecke    $ref: /schemas/types.yaml#/definitions/uint32-array
64*bd552e93SErnest Van Hoecke    minItems: 2
65*bd552e93SErnest Van Hoecke    maxItems: 2
66*bd552e93SErnest Van Hoecke    description:
67*bd552e93SErnest Van Hoecke      Default register values for R6/R7 (Mic Bias Control).
68*bd552e93SErnest Van Hoecke    default: [0, 0]
69*bd552e93SErnest Van Hoecke
70*bd552e93SErnest Van Hoecke  wlf,drc-cfg-names:
71*bd552e93SErnest Van Hoecke    $ref: /schemas/types.yaml#/definitions/string-array
72*bd552e93SErnest Van Hoecke    description:
73*bd552e93SErnest Van Hoecke      List of strings for the available DRC modes.
74*bd552e93SErnest Van Hoecke      If absent, DRC is disabled.
75*bd552e93SErnest Van Hoecke
76*bd552e93SErnest Van Hoecke  wlf,drc-cfg-regs:
77*bd552e93SErnest Van Hoecke    $ref: /schemas/types.yaml#/definitions/uint16-matrix
78*bd552e93SErnest Van Hoecke    description:
79*bd552e93SErnest Van Hoecke      Sets of default register values for R40/41/42/43 (DRC).
80*bd552e93SErnest Van Hoecke      Each set corresponds to a DRC mode, so the number of sets should equal
81*bd552e93SErnest Van Hoecke      the length of wlf,drc-cfg-names.
82*bd552e93SErnest Van Hoecke      If absent, DRC is disabled.
83*bd552e93SErnest Van Hoecke    items:
84*bd552e93SErnest Van Hoecke      minItems: 4
85*bd552e93SErnest Van Hoecke      maxItems: 4
86*bd552e93SErnest Van Hoecke
87*bd552e93SErnest Van Hoecke  wlf,retune-mobile-cfg-names:
88*bd552e93SErnest Van Hoecke    $ref: /schemas/types.yaml#/definitions/non-unique-string-array
89*bd552e93SErnest Van Hoecke    description:
90*bd552e93SErnest Van Hoecke      List of strings for the available retune modes.
91*bd552e93SErnest Van Hoecke      If absent, retune is disabled.
92*bd552e93SErnest Van Hoecke
93*bd552e93SErnest Van Hoecke  wlf,retune-mobile-cfg-hz:
94*bd552e93SErnest Van Hoecke    description:
95*bd552e93SErnest Van Hoecke      The list must be the same length as wlf,retune-mobile-cfg-names.
96*bd552e93SErnest Van Hoecke      If absent, retune is disabled.
97*bd552e93SErnest Van Hoecke
98*bd552e93SErnest Van Hoecke  wlf,retune-mobile-cfg-regs:
99*bd552e93SErnest Van Hoecke    $ref: /schemas/types.yaml#/definitions/uint16-matrix
100*bd552e93SErnest Van Hoecke    description:
101*bd552e93SErnest Van Hoecke      Sets of default register values for R134/.../157 (EQ).
102*bd552e93SErnest Van Hoecke      Each set corresponds to a retune mode, so the number of sets should equal
103*bd552e93SErnest Van Hoecke      the length of wlf,retune-mobile-cfg-names.
104*bd552e93SErnest Van Hoecke      If absent, retune is disabled.
105*bd552e93SErnest Van Hoecke    items:
106*bd552e93SErnest Van Hoecke      minItems: 24
107*bd552e93SErnest Van Hoecke      maxItems: 24
108*bd552e93SErnest Van Hoecke
109*bd552e93SErnest Van Hoeckedependencies:
110*bd552e93SErnest Van Hoecke  wlf,drc-cfg-names: [ 'wlf,drc-cfg-regs' ]
111*bd552e93SErnest Van Hoecke  wlf,drc-cfg-regs: [ 'wlf,drc-cfg-names' ]
112*bd552e93SErnest Van Hoecke
113*bd552e93SErnest Van Hoecke  wlf,retune-mobile-cfg-names: [ 'wlf,retune-mobile-cfg-hz', 'wlf,retune-mobile-cfg-regs' ]
114*bd552e93SErnest Van Hoecke  wlf,retune-mobile-cfg-regs: [ 'wlf,retune-mobile-cfg-names', 'wlf,retune-mobile-cfg-hz' ]
115*bd552e93SErnest Van Hoecke  wlf,retune-mobile-cfg-hz: [ 'wlf,retune-mobile-cfg-names', 'wlf,retune-mobile-cfg-regs' ]
116*bd552e93SErnest Van Hoecke
11783759352SFrancesco Dolcinirequired:
11883759352SFrancesco Dolcini  - compatible
11983759352SFrancesco Dolcini  - reg
12083759352SFrancesco Dolcini  - clocks
12183759352SFrancesco Dolcini  - clock-names
12283759352SFrancesco Dolcini  - AVDD-supply
12383759352SFrancesco Dolcini  - CPVDD-supply
12483759352SFrancesco Dolcini  - DBVDD-supply
12583759352SFrancesco Dolcini  - DCVDD-supply
12683759352SFrancesco Dolcini  - MICVDD-supply
12783759352SFrancesco Dolcini
12883759352SFrancesco DolciniallOf:
12983759352SFrancesco Dolcini  - $ref: dai-common.yaml#
13083759352SFrancesco Dolcini
13183759352SFrancesco DolciniunevaluatedProperties: false
13283759352SFrancesco Dolcini
13383759352SFrancesco Dolciniexamples:
13483759352SFrancesco Dolcini  - |
13583759352SFrancesco Dolcini    i2c {
13683759352SFrancesco Dolcini        #address-cells = <1>;
13783759352SFrancesco Dolcini        #size-cells = <0>;
13883759352SFrancesco Dolcini
13983759352SFrancesco Dolcini        codec@1a {
14083759352SFrancesco Dolcini            compatible = "wlf,wm8904";
14183759352SFrancesco Dolcini            reg = <0x1a>;
14283759352SFrancesco Dolcini            clocks = <&pck0>;
14383759352SFrancesco Dolcini            clock-names = "mclk";
14483759352SFrancesco Dolcini            AVDD-supply = <&reg_1p8v>;
14583759352SFrancesco Dolcini            CPVDD-supply = <&reg_1p8v>;
14683759352SFrancesco Dolcini            DBVDD-supply = <&reg_1p8v>;
14783759352SFrancesco Dolcini            DCVDD-supply = <&reg_1p8v>;
14883759352SFrancesco Dolcini            MICVDD-supply = <&reg_1p8v>;
149*bd552e93SErnest Van Hoecke
150*bd552e93SErnest Van Hoecke            wlf,drc-cfg-names = "default", "peaklimiter", "tradition", "soft",
151*bd552e93SErnest Van Hoecke                                "music";
152*bd552e93SErnest Van Hoecke            /*
153*bd552e93SErnest Van Hoecke             * Config registers per name, respectively:
154*bd552e93SErnest Van Hoecke             * KNEE_IP = 0,   KNEE_OP = 0,     HI_COMP = 1,   LO_COMP = 1
155*bd552e93SErnest Van Hoecke             * KNEE_IP = -24, KNEE_OP = -6,    HI_COMP = 1/4, LO_COMP = 1
156*bd552e93SErnest Van Hoecke             * KNEE_IP = -42, KNEE_OP = -3,    HI_COMP = 0,   LO_COMP = 1
157*bd552e93SErnest Van Hoecke             * KNEE_IP = -45, KNEE_OP = -9,    HI_COMP = 1/8, LO_COMP = 1
158*bd552e93SErnest Van Hoecke             * KNEE_IP = -30, KNEE_OP = -10.5, HI_COMP = 1/4, LO_COMP = 1
159*bd552e93SErnest Van Hoecke             */
160*bd552e93SErnest Van Hoecke            wlf,drc-cfg-regs = /bits/ 16 <0x01af 0x3248 0x0000 0x0000>,
161*bd552e93SErnest Van Hoecke                               /bits/ 16 <0x04af 0x324b 0x0010 0x0408>,
162*bd552e93SErnest Van Hoecke                               /bits/ 16 <0x04af 0x324b 0x0028 0x0704>,
163*bd552e93SErnest Van Hoecke                               /bits/ 16 <0x04af 0x324b 0x0018 0x078c>,
164*bd552e93SErnest Van Hoecke                               /bits/ 16 <0x04af 0x324b 0x0010 0x050e>;
165*bd552e93SErnest Van Hoecke
166*bd552e93SErnest Van Hoecke            /* GPIO1 = DMIC_CLK, don't touch others */
167*bd552e93SErnest Van Hoecke            wlf,gpio-cfg = <0x0018>, <0xffff>, <0xffff>, <0xffff>;
168*bd552e93SErnest Van Hoecke
169*bd552e93SErnest Van Hoecke            /* Use IN1R as DMICDAT2, leave IN1L as an analog input path */
170*bd552e93SErnest Van Hoecke            wlf,in1r-as-dmicdat2;
171*bd552e93SErnest Van Hoecke
172*bd552e93SErnest Van Hoecke            wlf,retune-mobile-cfg-names = "bassboost", "bassboost", "treble";
173*bd552e93SErnest Van Hoecke            wlf,retune-mobile-cfg-hz = <48000>, <44100>, <48000>;
174*bd552e93SErnest Van Hoecke            /*
175*bd552e93SErnest Van Hoecke             * Config registers per name, respectively:
176*bd552e93SErnest Van Hoecke             * EQ_ENA,  100 Hz,  300 Hz,  875 Hz, 2400 Hz, 6900 Hz
177*bd552e93SErnest Van Hoecke             *      1,   +6 dB,   +3 dB,    0 dB,    0 dB,    0 dB
178*bd552e93SErnest Van Hoecke             *      1,   +6 dB,   +3 dB,    0 dB,    0 dB,    0 dB
179*bd552e93SErnest Van Hoecke             *      1,   -2 dB,   -2 dB,    0 dB,    0 dB,   +3 dB
180*bd552e93SErnest Van Hoecke             * Each one uses the defaults for ReTune Mobile registers 140-157
181*bd552e93SErnest Van Hoecke             */
182*bd552e93SErnest Van Hoecke            wlf,retune-mobile-cfg-regs = /bits/ 16 <0x1 0x12 0xf 0xc 0xc 0xc
183*bd552e93SErnest Van Hoecke                                                    0x0fca 0x0400 0x00d8 0x1eb5
184*bd552e93SErnest Van Hoecke                                                    0xf145 0x0bd5 0x0075 0x1c58
185*bd552e93SErnest Van Hoecke                                                    0xf3d3 0x0a54 0x0568 0x168e
186*bd552e93SErnest Van Hoecke                                                    0xf829 0x07ad 0x1103 0x0564
187*bd552e93SErnest Van Hoecke                                                    0x0559 0x4000>,
188*bd552e93SErnest Van Hoecke
189*bd552e93SErnest Van Hoecke                                         /bits/ 16 <0x1 0x12 0xf 0xc 0xc 0xc
190*bd552e93SErnest Van Hoecke                                                    0x0fca 0x0400 0x00d8 0x1eb5
191*bd552e93SErnest Van Hoecke                                                    0xf145 0x0bd5 0x0075 0x1c58
192*bd552e93SErnest Van Hoecke                                                    0xf3d3 0x0a54 0x0568 0x168e
193*bd552e93SErnest Van Hoecke                                                    0xf829 0x07ad 0x1103 0x0564
194*bd552e93SErnest Van Hoecke                                                    0x0559 0x4000>,
195*bd552e93SErnest Van Hoecke
196*bd552e93SErnest Van Hoecke                                         /bits/ 16 <0x1 0xa 0xa 0xc 0xc 0xf
197*bd552e93SErnest Van Hoecke                                                    0x0fca 0x0400 0x00d8 0x1eb5
198*bd552e93SErnest Van Hoecke                                                    0xf145 0x0bd5 0x0075 0x1c58
199*bd552e93SErnest Van Hoecke                                                    0xf3d3 0x0a54 0x0568 0x168e
200*bd552e93SErnest Van Hoecke                                                    0xf829 0x07ad 0x1103 0x0564
201*bd552e93SErnest Van Hoecke                                                    0x0559 0x4000>;
20283759352SFrancesco Dolcini        };
20383759352SFrancesco Dolcini    };
204