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 = <®_1p8v>; 14583759352SFrancesco Dolcini CPVDD-supply = <®_1p8v>; 14683759352SFrancesco Dolcini DBVDD-supply = <®_1p8v>; 14783759352SFrancesco Dolcini DCVDD-supply = <®_1p8v>; 14883759352SFrancesco Dolcini MICVDD-supply = <®_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