blob: d34117b8558e5b44bdab20ca23ddb31f10ac85e8 [file] [log] [blame]
Tom Rini53633a82024-02-29 12:33:36 -05001CS35L36 Speaker Amplifier
2
3Required properties:
4
5 - compatible : "cirrus,cs35l36"
6
7 - reg : the I2C address of the device for I2C
8
9 - VA-supply, VP-supply : power supplies for the device,
10 as covered in
11 Documentation/devicetree/bindings/regulator/regulator.txt.
12
13 - cirrus,boost-ctl-millivolt : Boost Voltage Value. Configures the boost
14 converter's output voltage in mV. The range is from 2550mV to 12000mV with
15 increments of 50mV.
16 (Default) VP
17
18 - cirrus,boost-peak-milliamp : Boost-converter peak current limit in mA.
19 Configures the peak current by monitoring the current through the boost FET.
20 Range starts at 1600mA and goes to a maximum of 4500mA with increments of
21 50mA.
22 (Default) 4.50 Amps
23
24 - cirrus,boost-ind-nanohenry : Inductor estimation LBST reference value.
25 Seeds the digital boost converter's inductor estimation block with the initial
26 inductance value to reference.
27
28 1000 = 1uH (Default)
29 1200 = 1.2uH
30
31Optional properties:
32 - cirrus,multi-amp-mode : Boolean to determine if there are more than
33 one amplifier in the system. If more than one it is best to Hi-Z the ASP
34 port to prevent bus contention on the output signal
35
36 - cirrus,boost-ctl-select : Boost converter control source selection.
37 Selects the source of the BST_CTL target VBST voltage for the boost
38 converter to generate.
39 0x00 - Control Port Value
40 0x01 - Class H Tracking (Default)
41 0x10 - MultiDevice Sync Value
42
43 - cirrus,amp-pcm-inv : Boolean to determine Amplifier will invert incoming
44 PCM data
45
46 - cirrus,imon-pol-inv : Boolean to determine Amplifier will invert the
47 polarity of outbound IMON feedback data
48
49 - cirrus,vmon-pol-inv : Boolean to determine Amplifier will invert the
50 polarity of outbound VMON feedback data
51
52 - cirrus,dcm-mode-enable : Boost converter automatic DCM Mode enable.
53 This enables the digital boost converter to operate in a low power
54 (Discontinuous Conduction) mode during low loading conditions.
55
56 - cirrus,weak-fet-disable : Boolean : The strength of the output drivers is
57 reduced when operating in a Weak-FET Drive Mode and must not be used to drive
58 a large load.
59
60 - cirrus,classh-wk-fet-delay : Weak-FET entry delay. Controls the delay
61 (in ms) before the Class H algorithm switches to the weak-FET voltage
62 (after the audio falls and remains below the value specified in WKFET_AMP_THLD).
63
64 0 = 0ms
65 1 = 5ms
66 2 = 10ms
67 3 = 50ms
68 4 = 100ms (Default)
69 5 = 200ms
70 6 = 500ms
71 7 = 1000ms
72
73 - cirrus,classh-weak-fet-thld-millivolt : Weak-FET amplifier drive threshold.
74 Configures the signal threshold at which the PWM output stage enters
75 weak-FET operation. The range is 50mV to 700mV in 50mV increments.
76
77 - cirrus,temp-warn-threshold : Amplifier overtemperature warning threshold.
78 Configures the threshold at which the overtemperature warning condition occurs.
79 When the threshold is met, the overtemperature warning attenuation is applied
80 and the TEMP_WARN_EINT interrupt status bit is set.
81 If TEMP_WARN_MASK = 0, INTb is asserted.
82
83 0 = 105C
84 1 = 115C
85 2 = 125C (Default)
86 3 = 135C
87
88 - cirrus,irq-drive-select : Selects the driver type of the selected interrupt
89 output.
90
91 0 = Open-drain
92 1 = Push-pull (Default)
93
94 - cirrus,irq-gpio-select : Selects the pin to serve as the programmable
95 interrupt output.
96
97 0 = PDM_DATA / SWIRE_SD / INT (Default)
98 1 = GPIO
99
100Optional properties for the "cirrus,vpbr-config" Sub-node
101
102 - cirrus,vpbr-en : VBST brownout prevention enable. Configures whether the
103 VBST brownout prevention algorithm is enabled or disabled.
104
105 0 = VBST brownout prevention disabled (default)
106 1 = VBST brownout prevention enabled
107
108 See Section 7.31.1 VPBR Config for configuration options & further details
109
110 - cirrus,vpbr-thld : Initial VPBR threshold. Configures the VP brownout
111 threshold voltage
112
113 - cirrus,cirrus,vpbr-atk-rate : Attenuation attack step rate. Configures the
114 amount delay between consecutive volume attenuation steps when a brownout
115 condition is present and the VP brownout condition is in an attacking state.
116
117 - cirrus,vpbr-atk-vol : VP brownout prevention step size. Configures the VP
118 brownout prevention attacking attenuation step size when operating in either
119 digital volume or analog gain modes.
120
121 - cirrus,vpbr-max-attn : Maximum attenuation that the VP brownout prevention
122 can apply to the audio signal.
123
124 - cirrus,vpbr-wait : Configures the delay time between a brownout condition
125 no longer being present and the VP brownout prevention entering an attenuation
126 release state.
127
128 - cirrus,vpbr-rel-rate : Attenuation release step rate. Configures the delay
129 between consecutive volume attenuation release steps when a brownout condition
130 is not longer present and the VP brownout is in an attenuation release state.
131
132 - cirrus,vpbr-mute-en : During the attack state, if the vpbr-max-attn value
133 is reached, the error condition still remains, and this bit is set, the audio
134 is muted.
135
136Example:
137
138cs35l36: cs35l36@40 {
139 compatible = "cirrus,cs35l36";
140 reg = <0x40>;
141 VA-supply = <&dummy_vreg>;
142 VP-supply = <&dummy_vreg>;
143 reset-gpios = <&gpio0 54 0>;
144 interrupt-parent = <&gpio8>;
145 interrupts = <3 IRQ_TYPE_LEVEL_LOW>;
146
147 cirrus,boost-ind-nanohenry = <1000>;
148 cirrus,boost-ctl-millivolt = <10000>;
149 cirrus,boost-peak-milliamp = <4500>;
150 cirrus,boost-ctl-select = <0x00>;
151 cirrus,weak-fet-delay = <0x04>;
152 cirrus,weak-fet-thld = <0x01>;
153 cirrus,temp-warn-threshold = <0x01>;
154 cirrus,multi-amp-mode;
155 cirrus,irq-drive-select = <0x01>;
156 cirrus,irq-gpio-select = <0x01>;
157
158 cirrus,vpbr-config {
159 cirrus,vpbr-en = <0x00>;
160 cirrus,vpbr-thld = <0x05>;
161 cirrus,vpbr-atk-rate = <0x02>;
162 cirrus,vpbr-atk-vol = <0x01>;
163 cirrus,vpbr-max-attn = <0x09>;
164 cirrus,vpbr-wait = <0x01>;
165 cirrus,vpbr-rel-rate = <0x05>;
166 cirrus,vpbr-mute-en = <0x00>;
167 };
168};