xref: /freebsd/sys/contrib/device-tree/Bindings/sound/cs35l36.txt (revision e63d20b70ee1dbee9b075f29de6f30cdcfe1abe1)
1CS35L36 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};
169