xref: /linux/Documentation/devicetree/bindings/sound/cirrus,cs35l36.yaml (revision e5c91aac491def6ab3f90c4cc246e3fcb0f8f058)
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