1*bff7fad1SDavid Heidelberg# SPDX-License-Identifier: GPL-2.0-only 2*bff7fad1SDavid Heidelberg%YAML 1.2 3*bff7fad1SDavid Heidelberg--- 4*bff7fad1SDavid Heidelberg$id: http://devicetree.org/schemas/sound/cirrus,cs35l36.yaml# 5*bff7fad1SDavid Heidelberg$schema: http://devicetree.org/meta-schemas/core.yaml# 6*bff7fad1SDavid Heidelberg 7*bff7fad1SDavid Heidelbergtitle: Cirrus Logic CS35L36 Speaker Amplifier 8*bff7fad1SDavid Heidelberg 9*bff7fad1SDavid Heidelbergmaintainers: 10*bff7fad1SDavid Heidelberg - David Rhodes <drhodes@opensource.cirrus.com> 11*bff7fad1SDavid Heidelberg - patches@opensource.cirrus.com 12*bff7fad1SDavid Heidelberg 13*bff7fad1SDavid Heidelbergdescription: 14*bff7fad1SDavid Heidelberg CS35L36 is a boosted mono Class D amplifier 15*bff7fad1SDavid Heidelberg 16*bff7fad1SDavid HeidelbergallOf: 17*bff7fad1SDavid Heidelberg - $ref: dai-common.yaml# 18*bff7fad1SDavid Heidelberg 19*bff7fad1SDavid Heidelbergproperties: 20*bff7fad1SDavid Heidelberg compatible: 21*bff7fad1SDavid Heidelberg enum: 22*bff7fad1SDavid Heidelberg - cirrus,cs35l36 23*bff7fad1SDavid Heidelberg 24*bff7fad1SDavid Heidelberg reg: 25*bff7fad1SDavid Heidelberg maxItems: 1 26*bff7fad1SDavid Heidelberg 27*bff7fad1SDavid Heidelberg interrupts: 28*bff7fad1SDavid Heidelberg maxItems: 1 29*bff7fad1SDavid Heidelberg 30*bff7fad1SDavid Heidelberg VA-supply: 31*bff7fad1SDavid Heidelberg description: Voltage regulator of analog internal section 32*bff7fad1SDavid Heidelberg 33*bff7fad1SDavid Heidelberg VP-supply: 34*bff7fad1SDavid Heidelberg description: Voltage regulator of boost converter 35*bff7fad1SDavid Heidelberg 36*bff7fad1SDavid Heidelberg reset-gpios: 37*bff7fad1SDavid Heidelberg maxItems: 1 38*bff7fad1SDavid Heidelberg 39*bff7fad1SDavid Heidelberg cirrus,boost-ctl-millivolt: 40*bff7fad1SDavid Heidelberg description: Boost converter output voltage (step 50) 41*bff7fad1SDavid Heidelberg $ref: /schemas/types.yaml#/definitions/uint32 42*bff7fad1SDavid Heidelberg minimum: 2550 43*bff7fad1SDavid Heidelberg maximum: 12000 44*bff7fad1SDavid Heidelberg 45*bff7fad1SDavid Heidelberg cirrus,boost-peak-milliamp: 46*bff7fad1SDavid Heidelberg description: Boost-converter peak current limit (step 50) 47*bff7fad1SDavid Heidelberg $ref: /schemas/types.yaml#/definitions/uint32 48*bff7fad1SDavid Heidelberg default: 4500 49*bff7fad1SDavid Heidelberg minimum: 1600 50*bff7fad1SDavid Heidelberg maximum: 4500 51*bff7fad1SDavid Heidelberg 52*bff7fad1SDavid Heidelberg cirrus,boost-ind-nanohenry: 53*bff7fad1SDavid Heidelberg description: Initial inductor estimation reference value (1000=1μH, 1200=1.2μH) 54*bff7fad1SDavid Heidelberg $ref: /schemas/types.yaml#/definitions/uint32 55*bff7fad1SDavid Heidelberg default: 1000 56*bff7fad1SDavid Heidelberg 57*bff7fad1SDavid Heidelberg cirrus,multi-amp-mode: 58*bff7fad1SDavid Heidelberg description: Hi-Z ASP port when more than one amplifier in system 59*bff7fad1SDavid Heidelberg type: boolean 60*bff7fad1SDavid Heidelberg 61*bff7fad1SDavid Heidelberg cirrus,boost-ctl-select: 62*bff7fad1SDavid Heidelberg description: Boost converter control source selection 63*bff7fad1SDavid Heidelberg $ref: /schemas/types.yaml#/definitions/uint32 64*bff7fad1SDavid Heidelberg default: 1 65*bff7fad1SDavid Heidelberg enum: 66*bff7fad1SDavid Heidelberg - 0 # Control Port 67*bff7fad1SDavid Heidelberg - 1 # Class 68*bff7fad1SDavid Heidelberg - 2 # Sync 69*bff7fad1SDavid Heidelberg 70*bff7fad1SDavid Heidelberg cirrus,amp-pcm-inv: 71*bff7fad1SDavid Heidelberg description: Invert incoming PCM data when true 72*bff7fad1SDavid Heidelberg type: boolean 73*bff7fad1SDavid Heidelberg 74*bff7fad1SDavid Heidelberg cirrus,imon-pol-inv: 75*bff7fad1SDavid Heidelberg description: Invert polarity of outbound IMON feedback when true 76*bff7fad1SDavid Heidelberg type: boolean 77*bff7fad1SDavid Heidelberg 78*bff7fad1SDavid Heidelberg cirrus,vmon-pol-inv: 79*bff7fad1SDavid Heidelberg description: Invert polarity of outbound VMON feedback when true 80*bff7fad1SDavid Heidelberg type: boolean 81*bff7fad1SDavid Heidelberg 82*bff7fad1SDavid Heidelberg cirrus,dcm-mode-enable: 83*bff7fad1SDavid Heidelberg description: Enable boost converter automatic Discontinuous Conduction Mode 84*bff7fad1SDavid Heidelberg type: boolean 85*bff7fad1SDavid Heidelberg 86*bff7fad1SDavid Heidelberg cirrus,weak-fet-disable: 87*bff7fad1SDavid Heidelberg description: Reduce output driver strength in Weak-FET Drive Mode when true 88*bff7fad1SDavid Heidelberg type: boolean 89*bff7fad1SDavid Heidelberg 90*bff7fad1SDavid Heidelberg cirrus,classh-wk-fet-delay-ms: 91*bff7fad1SDavid Heidelberg description: Weak-FET entry delay 92*bff7fad1SDavid Heidelberg default: 100 93*bff7fad1SDavid Heidelberg enum: [0, 5, 10, 50, 100, 200, 500, 1000] 94*bff7fad1SDavid Heidelberg 95*bff7fad1SDavid Heidelberg cirrus,classh-weak-fet-thld-millivolt: 96*bff7fad1SDavid Heidelberg description: Weak-FET drive threshold 97*bff7fad1SDavid Heidelberg $ref: /schemas/types.yaml#/definitions/uint32 98*bff7fad1SDavid Heidelberg enum: [50, 100, 150, 200, 250, 300, 350, 400, 450, 500, 550, 600, 650, 700] 99*bff7fad1SDavid Heidelberg 100*bff7fad1SDavid Heidelberg cirrus,temp-warn-threshold: 101*bff7fad1SDavid Heidelberg description: Overtemperature warning threshold 102*bff7fad1SDavid Heidelberg $ref: /schemas/types.yaml#/definitions/uint32 103*bff7fad1SDavid Heidelberg default: 2 104*bff7fad1SDavid Heidelberg enum: 105*bff7fad1SDavid Heidelberg - 0 # 105°C 106*bff7fad1SDavid Heidelberg - 1 # 115°C 107*bff7fad1SDavid Heidelberg - 2 # 125°C 108*bff7fad1SDavid Heidelberg - 3 # 135°C 109*bff7fad1SDavid Heidelberg 110*bff7fad1SDavid Heidelberg cirrus,irq-drive-select: 111*bff7fad1SDavid Heidelberg description: Interrupt output driver type 112*bff7fad1SDavid Heidelberg $ref: /schemas/types.yaml#/definitions/uint32 113*bff7fad1SDavid Heidelberg default: 1 114*bff7fad1SDavid Heidelberg enum: 115*bff7fad1SDavid Heidelberg - 0 # open-drain 116*bff7fad1SDavid Heidelberg - 1 # push-pull 117*bff7fad1SDavid Heidelberg 118*bff7fad1SDavid Heidelberg cirrus,irq-gpio-select: 119*bff7fad1SDavid Heidelberg description: Programmable IRQ pin selection 120*bff7fad1SDavid Heidelberg $ref: /schemas/types.yaml#/definitions/uint32 121*bff7fad1SDavid Heidelberg enum: 122*bff7fad1SDavid Heidelberg - 0 # PDM_DATA/SWIRE_SD/INT 123*bff7fad1SDavid Heidelberg - 1 # GPIO 124*bff7fad1SDavid Heidelberg 125*bff7fad1SDavid Heidelberg cirrus,vpbr-config: 126*bff7fad1SDavid Heidelberg $ref: "#/$defs/vpbr-config" 127*bff7fad1SDavid Heidelberg 128*bff7fad1SDavid Heidelberg$defs: 129*bff7fad1SDavid Heidelberg vpbr-config: 130*bff7fad1SDavid Heidelberg description: Brownout prevention configuration sub-node 131*bff7fad1SDavid Heidelberg type: object 132*bff7fad1SDavid Heidelberg additionalProperties: false 133*bff7fad1SDavid Heidelberg 134*bff7fad1SDavid Heidelberg properties: 135*bff7fad1SDavid Heidelberg cirrus,vpbr-en: 136*bff7fad1SDavid Heidelberg description: VBST brownout prevention enable 137*bff7fad1SDavid Heidelberg $ref: /schemas/types.yaml#/definitions/uint32 138*bff7fad1SDavid Heidelberg default: 0 139*bff7fad1SDavid Heidelberg enum: 140*bff7fad1SDavid Heidelberg - 0 # disabled 141*bff7fad1SDavid Heidelberg - 1 # enabled 142*bff7fad1SDavid Heidelberg 143*bff7fad1SDavid Heidelberg cirrus,vpbr-thld: 144*bff7fad1SDavid Heidelberg description: Initial VPBR threshold voltage 145*bff7fad1SDavid Heidelberg $ref: /schemas/types.yaml#/definitions/uint32 146*bff7fad1SDavid Heidelberg minimum: 2 147*bff7fad1SDavid Heidelberg maximum: 31 148*bff7fad1SDavid Heidelberg 149*bff7fad1SDavid Heidelberg cirrus,vpbr-atk-rate: 150*bff7fad1SDavid Heidelberg description: Attenuation attack step rate 151*bff7fad1SDavid Heidelberg $ref: /schemas/types.yaml#/definitions/uint32 152*bff7fad1SDavid Heidelberg minimum: 0 153*bff7fad1SDavid Heidelberg maximum: 7 154*bff7fad1SDavid Heidelberg 155*bff7fad1SDavid Heidelberg cirrus,vpbr-atk-vol: 156*bff7fad1SDavid Heidelberg description: VP brownout prevention step size 157*bff7fad1SDavid Heidelberg $ref: /schemas/types.yaml#/definitions/uint32 158*bff7fad1SDavid Heidelberg minimum: 0 159*bff7fad1SDavid Heidelberg maximum: 7 160*bff7fad1SDavid Heidelberg 161*bff7fad1SDavid Heidelberg cirrus,vpbr-max-attn: 162*bff7fad1SDavid Heidelberg description: Maximum attenuation during VP brownout prevention (dB) 163*bff7fad1SDavid Heidelberg $ref: /schemas/types.yaml#/definitions/uint32 164*bff7fad1SDavid Heidelberg minimum: 0 165*bff7fad1SDavid Heidelberg maximum: 15 166*bff7fad1SDavid Heidelberg 167*bff7fad1SDavid Heidelberg cirrus,vpbr-wait: 168*bff7fad1SDavid Heidelberg description: Delay between brownout clearance and attenuation release (ms) 169*bff7fad1SDavid Heidelberg $ref: /schemas/types.yaml#/definitions/uint32 170*bff7fad1SDavid Heidelberg default: 1 171*bff7fad1SDavid Heidelberg enum: 172*bff7fad1SDavid Heidelberg - 0 # 10 173*bff7fad1SDavid Heidelberg - 1 # 100 174*bff7fad1SDavid Heidelberg - 2 # 250 175*bff7fad1SDavid Heidelberg - 3 # 500 176*bff7fad1SDavid Heidelberg 177*bff7fad1SDavid Heidelberg cirrus,vpbr-rel-rate: 178*bff7fad1SDavid Heidelberg description: Attenuation release step rate 179*bff7fad1SDavid Heidelberg $ref: /schemas/types.yaml#/definitions/uint32 180*bff7fad1SDavid Heidelberg minimum: 0 181*bff7fad1SDavid Heidelberg maximum: 7 182*bff7fad1SDavid Heidelberg 183*bff7fad1SDavid Heidelberg cirrus,vpbr-mute-en: 184*bff7fad1SDavid Heidelberg description: Mute audio if maximum attenuation reached 185*bff7fad1SDavid Heidelberg $ref: /schemas/types.yaml#/definitions/uint32 186*bff7fad1SDavid Heidelberg minimum: 0 187*bff7fad1SDavid Heidelberg maximum: 1 188*bff7fad1SDavid Heidelberg 189*bff7fad1SDavid Heidelbergrequired: 190*bff7fad1SDavid Heidelberg - compatible 191*bff7fad1SDavid Heidelberg - reg 192*bff7fad1SDavid Heidelberg - interrupts 193*bff7fad1SDavid Heidelberg - VA-supply 194*bff7fad1SDavid Heidelberg - cirrus,boost-ctl-millivolt 195*bff7fad1SDavid Heidelberg - cirrus,boost-peak-milliamp 196*bff7fad1SDavid Heidelberg 197*bff7fad1SDavid HeidelbergunevaluatedProperties: false 198*bff7fad1SDavid Heidelberg 199*bff7fad1SDavid Heidelbergexamples: 200*bff7fad1SDavid Heidelberg - | 201*bff7fad1SDavid Heidelberg #include <dt-bindings/gpio/gpio.h> 202*bff7fad1SDavid Heidelberg #include <dt-bindings/interrupt-controller/irq.h> 203*bff7fad1SDavid Heidelberg 204*bff7fad1SDavid Heidelberg i2c { 205*bff7fad1SDavid Heidelberg #address-cells = <1>; 206*bff7fad1SDavid Heidelberg #size-cells = <0>; 207*bff7fad1SDavid Heidelberg 208*bff7fad1SDavid Heidelberg codec@40 { 209*bff7fad1SDavid Heidelberg compatible = "cirrus,cs35l36"; 210*bff7fad1SDavid Heidelberg reg = <0x40>; 211*bff7fad1SDavid Heidelberg VA-supply = <&dummy_vreg>; 212*bff7fad1SDavid Heidelberg VP-supply = <&dummy_vreg>; 213*bff7fad1SDavid Heidelberg reset-gpios = <&gpio0 54 GPIO_ACTIVE_HIGH>; 214*bff7fad1SDavid Heidelberg interrupts = <3 IRQ_TYPE_LEVEL_LOW>; 215*bff7fad1SDavid Heidelberg 216*bff7fad1SDavid Heidelberg cirrus,boost-ind-nanohenry = <1000>; 217*bff7fad1SDavid Heidelberg cirrus,boost-ctl-millivolt = <10000>; 218*bff7fad1SDavid Heidelberg cirrus,boost-peak-milliamp = <4500>; 219*bff7fad1SDavid Heidelberg cirrus,boost-ctl-select = <0>; 220*bff7fad1SDavid Heidelberg cirrus,classh-wk-fet-delay-ms = <100>; 221*bff7fad1SDavid Heidelberg cirrus,classh-weak-fet-thld-millivolt = <100>; 222*bff7fad1SDavid Heidelberg cirrus,temp-warn-threshold = <1>; 223*bff7fad1SDavid Heidelberg cirrus,multi-amp-mode; 224*bff7fad1SDavid Heidelberg cirrus,irq-drive-select = <1>; 225*bff7fad1SDavid Heidelberg cirrus,irq-gpio-select = <1>; 226*bff7fad1SDavid Heidelberg 227*bff7fad1SDavid Heidelberg cirrus,vpbr-config { 228*bff7fad1SDavid Heidelberg cirrus,vpbr-en = <0>; 229*bff7fad1SDavid Heidelberg cirrus,vpbr-thld = <5>; 230*bff7fad1SDavid Heidelberg cirrus,vpbr-atk-rate = <2>; 231*bff7fad1SDavid Heidelberg cirrus,vpbr-atk-vol = <1>; 232*bff7fad1SDavid Heidelberg cirrus,vpbr-max-attn = <9>; 233*bff7fad1SDavid Heidelberg cirrus,vpbr-wait = <1>; 234*bff7fad1SDavid Heidelberg cirrus,vpbr-rel-rate = <5>; 235*bff7fad1SDavid Heidelberg cirrus,vpbr-mute-en = <0>; 236*bff7fad1SDavid Heidelberg }; 237*bff7fad1SDavid Heidelberg }; 238*bff7fad1SDavid Heidelberg }; 239*bff7fad1SDavid Heidelberg 240*bff7fad1SDavid Heidelberg... 241