10d250bf2SJames SchulmanCS35L36 Speaker Amplifier
20d250bf2SJames Schulman
30d250bf2SJames SchulmanRequired properties:
40d250bf2SJames Schulman
50d250bf2SJames Schulman  - compatible : "cirrus,cs35l36"
60d250bf2SJames Schulman
70d250bf2SJames Schulman  - reg : the I2C address of the device for I2C
80d250bf2SJames Schulman
90d250bf2SJames Schulman  - VA-supply, VP-supply : power supplies for the device,
100d250bf2SJames Schulman  as covered in
110d250bf2SJames Schulman  Documentation/devicetree/bindings/regulator/regulator.txt.
120d250bf2SJames Schulman
130d250bf2SJames Schulman  - cirrus,boost-ctl-millivolt : Boost Voltage Value.  Configures the boost
140d250bf2SJames Schulman  converter's output voltage in mV. The range is from 2550mV to 12000mV with
150d250bf2SJames Schulman  increments of 50mV.
160d250bf2SJames Schulman  (Default) VP
170d250bf2SJames Schulman
180d250bf2SJames Schulman  - cirrus,boost-peak-milliamp : Boost-converter peak current limit in mA.
190d250bf2SJames Schulman  Configures the peak current by monitoring the current through the boost FET.
200d250bf2SJames Schulman  Range starts at 1600mA and goes to a maximum of 4500mA with increments of
210d250bf2SJames Schulman  50mA.
220d250bf2SJames Schulman  (Default) 4.50 Amps
230d250bf2SJames Schulman
240d250bf2SJames Schulman  - cirrus,boost-ind-nanohenry : Inductor estimation LBST reference value.
250d250bf2SJames Schulman  Seeds the digital boost converter's inductor estimation block with the initial
260d250bf2SJames Schulman  inductance value to reference.
270d250bf2SJames Schulman
280d250bf2SJames Schulman  1000 = 1uH (Default)
290d250bf2SJames Schulman  1200 = 1.2uH
300d250bf2SJames Schulman
310d250bf2SJames SchulmanOptional properties:
320d250bf2SJames Schulman  - cirrus,multi-amp-mode : Boolean to determine if there are more than
330d250bf2SJames Schulman  one amplifier in the system. If more than one it is best to Hi-Z the ASP
340d250bf2SJames Schulman  port to prevent bus contention on the output signal
350d250bf2SJames Schulman
36*47aab533SBjorn Helgaas  - cirrus,boost-ctl-select : Boost converter control source selection.
370d250bf2SJames Schulman  Selects the source of the BST_CTL target VBST voltage for the boost
380d250bf2SJames Schulman  converter to generate.
390d250bf2SJames Schulman  0x00 - Control Port Value
400d250bf2SJames Schulman  0x01 - Class H Tracking (Default)
410d250bf2SJames Schulman  0x10 - MultiDevice Sync Value
420d250bf2SJames Schulman
430d250bf2SJames Schulman  - cirrus,amp-pcm-inv : Boolean to determine Amplifier will invert incoming
440d250bf2SJames Schulman  PCM data
450d250bf2SJames Schulman
460d250bf2SJames Schulman  - cirrus,imon-pol-inv : Boolean to determine Amplifier will invert the
470d250bf2SJames Schulman  polarity of outbound IMON feedback data
480d250bf2SJames Schulman
490d250bf2SJames Schulman  - cirrus,vmon-pol-inv : Boolean to determine Amplifier will invert the
500d250bf2SJames Schulman  polarity of outbound VMON feedback data
510d250bf2SJames Schulman
520d250bf2SJames Schulman  - cirrus,dcm-mode-enable : Boost converter automatic DCM Mode enable.
530d250bf2SJames Schulman  This enables the digital boost converter to operate in a low power
540d250bf2SJames Schulman  (Discontinuous Conduction) mode during low loading conditions.
550d250bf2SJames Schulman
560d250bf2SJames Schulman  - cirrus,weak-fet-disable : Boolean : The strength of the output drivers is
570d250bf2SJames Schulman  reduced when operating in a Weak-FET Drive Mode and must not be used to drive
580d250bf2SJames Schulman  a large load.
590d250bf2SJames Schulman
600d250bf2SJames Schulman  - cirrus,classh-wk-fet-delay :  Weak-FET entry delay. Controls the delay
610d250bf2SJames Schulman  (in ms) before the Class H algorithm switches to the weak-FET voltage
620d250bf2SJames Schulman  (after the audio falls and remains below the value specified in WKFET_AMP_THLD).
630d250bf2SJames Schulman
640d250bf2SJames Schulman  0 = 0ms
650d250bf2SJames Schulman  1 = 5ms
660d250bf2SJames Schulman  2 = 10ms
670d250bf2SJames Schulman  3 = 50ms
680d250bf2SJames Schulman  4 = 100ms (Default)
690d250bf2SJames Schulman  5 = 200ms
700d250bf2SJames Schulman  6 = 500ms
710d250bf2SJames Schulman  7 = 1000ms
720d250bf2SJames Schulman
730d250bf2SJames Schulman  - cirrus,classh-weak-fet-thld-millivolt : Weak-FET amplifier drive threshold.
740d250bf2SJames Schulman  Configures the signal threshold at which the PWM output stage enters
750d250bf2SJames Schulman  weak-FET operation. The range is 50mV to 700mV in 50mV increments.
760d250bf2SJames Schulman
770d250bf2SJames Schulman  - cirrus,temp-warn-threshold :  Amplifier overtemperature warning threshold.
780d250bf2SJames Schulman  Configures the threshold at which the overtemperature warning condition occurs.
790d250bf2SJames Schulman  When the threshold is met, the overtemperature warning attenuation is applied
800d250bf2SJames Schulman  and the TEMP_WARN_EINT interrupt status bit is set.
810d250bf2SJames Schulman  If TEMP_WARN_MASK = 0, INTb is asserted.
820d250bf2SJames Schulman
830d250bf2SJames Schulman  0 = 105C
840d250bf2SJames Schulman  1 = 115C
850d250bf2SJames Schulman  2 = 125C (Default)
860d250bf2SJames Schulman  3 = 135C
870d250bf2SJames Schulman
880d250bf2SJames Schulman  - cirrus,irq-drive-select : Selects the driver type of the selected interrupt
890d250bf2SJames Schulman  output.
900d250bf2SJames Schulman
910d250bf2SJames Schulman  0 = Open-drain
920d250bf2SJames Schulman  1 = Push-pull (Default)
930d250bf2SJames Schulman
940d250bf2SJames Schulman  - cirrus,irq-gpio-select : Selects the pin to serve as the programmable
950d250bf2SJames Schulman  interrupt output.
960d250bf2SJames Schulman
970d250bf2SJames Schulman  0 = PDM_DATA / SWIRE_SD / INT (Default)
980d250bf2SJames Schulman  1 = GPIO
990d250bf2SJames Schulman
1000d250bf2SJames SchulmanOptional properties for the "cirrus,vpbr-config" Sub-node
1010d250bf2SJames Schulman
1020d250bf2SJames Schulman  - cirrus,vpbr-en : VBST brownout prevention enable. Configures whether the
1030d250bf2SJames Schulman  VBST brownout prevention algorithm is enabled or disabled.
1040d250bf2SJames Schulman
1050d250bf2SJames Schulman  0 = VBST brownout prevention disabled (default)
1060d250bf2SJames Schulman  1 = VBST brownout prevention enabled
1070d250bf2SJames Schulman
1080d250bf2SJames Schulman  See Section 7.31.1 VPBR Config for configuration options & further details
1090d250bf2SJames Schulman
1100d250bf2SJames Schulman  - cirrus,vpbr-thld : Initial VPBR threshold. Configures the VP brownout
1110d250bf2SJames Schulman  threshold voltage
1120d250bf2SJames Schulman
1130d250bf2SJames Schulman  - cirrus,cirrus,vpbr-atk-rate : Attenuation attack step rate. Configures the
1140d250bf2SJames Schulman  amount delay between consecutive volume attenuation steps when a brownout
1150d250bf2SJames Schulman  condition is present and the VP brownout condition is in an attacking state.
1160d250bf2SJames Schulman
1170d250bf2SJames Schulman  - cirrus,vpbr-atk-vol : VP brownout prevention step size. Configures the VP
1180d250bf2SJames Schulman  brownout prevention attacking attenuation step size when operating in either
1190d250bf2SJames Schulman  digital volume or analog gain modes.
1200d250bf2SJames Schulman
1210d250bf2SJames Schulman  - cirrus,vpbr-max-attn : Maximum attenuation that the VP brownout prevention
1220d250bf2SJames Schulman  can apply to the audio signal.
1230d250bf2SJames Schulman
1240d250bf2SJames Schulman  - cirrus,vpbr-wait : Configures the delay time between a brownout condition
1250d250bf2SJames Schulman  no longer being present and the VP brownout prevention entering an attenuation
1260d250bf2SJames Schulman  release state.
1270d250bf2SJames Schulman
1280d250bf2SJames Schulman  - cirrus,vpbr-rel-rate : Attenuation release step rate. Configures the delay
1290d250bf2SJames Schulman  between consecutive volume attenuation release steps when a brownout condition
1300d250bf2SJames Schulman  is not longer present and the VP brownout is in an attenuation release state.
1310d250bf2SJames Schulman
1320d250bf2SJames Schulman  - cirrus,vpbr-mute-en : During the attack state, if the vpbr-max-attn value
1330d250bf2SJames Schulman  is reached, the error condition still remains, and this bit is set, the audio
1340d250bf2SJames Schulman  is muted.
1350d250bf2SJames Schulman
1360d250bf2SJames SchulmanExample:
1370d250bf2SJames Schulman
1380d250bf2SJames Schulmancs35l36: cs35l36@40 {
1390d250bf2SJames Schulman	compatible = "cirrus,cs35l36";
1400d250bf2SJames Schulman	reg = <0x40>;
1410d250bf2SJames Schulman	VA-supply = <&dummy_vreg>;
1420d250bf2SJames Schulman	VP-supply = <&dummy_vreg>;
1430d250bf2SJames Schulman	reset-gpios = <&gpio0 54 0>;
1440d250bf2SJames Schulman	interrupt-parent = <&gpio8>;
1450d250bf2SJames Schulman	interrupts = <3 IRQ_TYPE_LEVEL_LOW>;
1460d250bf2SJames Schulman
1470d250bf2SJames Schulman	cirrus,boost-ind-nanohenry = <1000>;
1480d250bf2SJames Schulman	cirrus,boost-ctl-millivolt = <10000>;
1490d250bf2SJames Schulman	cirrus,boost-peak-milliamp = <4500>;
1500d250bf2SJames Schulman	cirrus,boost-ctl-select = <0x00>;
1510d250bf2SJames Schulman	cirrus,weak-fet-delay = <0x04>;
1520d250bf2SJames Schulman	cirrus,weak-fet-thld = <0x01>;
1530d250bf2SJames Schulman	cirrus,temp-warn-threshold = <0x01>;
1540d250bf2SJames Schulman	cirrus,multi-amp-mode;
1550d250bf2SJames Schulman	cirrus,irq-drive-select = <0x01>;
1560d250bf2SJames Schulman	cirrus,irq-gpio-select = <0x01>;
1570d250bf2SJames Schulman
1580d250bf2SJames Schulman	cirrus,vpbr-config {
1590d250bf2SJames Schulman		cirrus,vpbr-en = <0x00>;
1600d250bf2SJames Schulman		cirrus,vpbr-thld = <0x05>;
1610d250bf2SJames Schulman		cirrus,vpbr-atk-rate = <0x02>;
1620d250bf2SJames Schulman		cirrus,vpbr-atk-vol = <0x01>;
1630d250bf2SJames Schulman		cirrus,vpbr-max-attn = <0x09>;
1640d250bf2SJames Schulman		cirrus,vpbr-wait = <0x01>;
1650d250bf2SJames Schulman		cirrus,vpbr-rel-rate = <0x05>;
1660d250bf2SJames Schulman		cirrus,vpbr-mute-en = <0x00>;
1670d250bf2SJames Schulman	};
1680d250bf2SJames Schulman};
169