Training courses

Kernel and Embedded Linux

Bootlin training courses

Embedded Linux, kernel,
Yocto Project, Buildroot, real-time,
graphics, boot time, debugging...

Bootlin logo

Elixir Cross Referencer

CS35L36 Speaker Amplifier

Required properties:

  - compatible : "cirrus,cs35l36"

  - reg : the I2C address of the device for I2C

  - VA-supply, VP-supply : power supplies for the device,
  as covered in
  Documentation/devicetree/bindings/regulator/regulator.txt.

  - cirrus,boost-ctl-millivolt : Boost Voltage Value.  Configures the boost
  converter's output voltage in mV. The range is from 2550mV to 12000mV with
  increments of 50mV.
  (Default) VP

  - cirrus,boost-peak-milliamp : Boost-converter peak current limit in mA.
  Configures the peak current by monitoring the current through the boost FET.
  Range starts at 1600mA and goes to a maximum of 4500mA with increments of
  50mA.
  (Default) 4.50 Amps

  - cirrus,boost-ind-nanohenry : Inductor estimation LBST reference value.
  Seeds the digital boost converter's inductor estimation block with the initial
  inductance value to reference.

  1000 = 1uH (Default)
  1200 = 1.2uH

Optional properties:
  - cirrus,multi-amp-mode : Boolean to determine if there are more than
  one amplifier in the system. If more than one it is best to Hi-Z the ASP
  port to prevent bus contention on the output signal

  - cirrus,boost-ctl-select : Boost conerter control source selection.
  Selects the source of the BST_CTL target VBST voltage for the boost
  converter to generate.
  0x00 - Control Port Value
  0x01 - Class H Tracking (Default)
  0x10 - MultiDevice Sync Value

  - cirrus,amp-pcm-inv : Boolean to determine Amplifier will invert incoming
  PCM data

  - cirrus,imon-pol-inv : Boolean to determine Amplifier will invert the
  polarity of outbound IMON feedback data

  - cirrus,vmon-pol-inv : Boolean to determine Amplifier will invert the
  polarity of outbound VMON feedback data

  - cirrus,dcm-mode-enable : Boost converter automatic DCM Mode enable.
  This enables the digital boost converter to operate in a low power
  (Discontinuous Conduction) mode during low loading conditions.

  - cirrus,weak-fet-disable : Boolean : The strength of the output drivers is
  reduced when operating in a Weak-FET Drive Mode and must not be used to drive
  a large load.

  - cirrus,classh-wk-fet-delay :  Weak-FET entry delay. Controls the delay
  (in ms) before the Class H algorithm switches to the weak-FET voltage
  (after the audio falls and remains below the value specified in WKFET_AMP_THLD).

  0 = 0ms
  1 = 5ms
  2 = 10ms
  3 = 50ms
  4 = 100ms (Default)
  5 = 200ms
  6 = 500ms
  7 = 1000ms

  - cirrus,classh-weak-fet-thld-millivolt : Weak-FET amplifier drive threshold.
  Configures the signal threshold at which the PWM output stage enters
  weak-FET operation. The range is 50mV to 700mV in 50mV increments.

  - cirrus,temp-warn-threshold :  Amplifier overtemperature warning threshold.
  Configures the threshold at which the overtemperature warning condition occurs.
  When the threshold is met, the overtemperature warning attenuation is applied
  and the TEMP_WARN_EINT interrupt status bit is set.
  If TEMP_WARN_MASK = 0, INTb is asserted.

  0 = 105C
  1 = 115C
  2 = 125C (Default)
  3 = 135C

  - cirrus,irq-drive-select : Selects the driver type of the selected interrupt
  output.

  0 = Open-drain
  1 = Push-pull (Default)

  - cirrus,irq-gpio-select : Selects the pin to serve as the programmable
  interrupt output.

  0 = PDM_DATA / SWIRE_SD / INT (Default)
  1 = GPIO

Optional properties for the "cirrus,vpbr-config" Sub-node

  - cirrus,vpbr-en : VBST brownout prevention enable. Configures whether the
  VBST brownout prevention algorithm is enabled or disabled.

  0 = VBST brownout prevention disabled (default)
  1 = VBST brownout prevention enabled

  See Section 7.31.1 VPBR Config for configuration options & further details

  - cirrus,vpbr-thld : Initial VPBR threshold. Configures the VP brownout
  threshold voltage

  - cirrus,cirrus,vpbr-atk-rate : Attenuation attack step rate. Configures the
  amount delay between consecutive volume attenuation steps when a brownout
  condition is present and the VP brownout condition is in an attacking state.

  - cirrus,vpbr-atk-vol : VP brownout prevention step size. Configures the VP
  brownout prevention attacking attenuation step size when operating in either
  digital volume or analog gain modes.

  - cirrus,vpbr-max-attn : Maximum attenuation that the VP brownout prevention
  can apply to the audio signal.

  - cirrus,vpbr-wait : Configures the delay time between a brownout condition
  no longer being present and the VP brownout prevention entering an attenuation
  release state.

  - cirrus,vpbr-rel-rate : Attenuation release step rate. Configures the delay
  between consecutive volume attenuation release steps when a brownout condition
  is not longer present and the VP brownout is in an attenuation release state.

  - cirrus,vpbr-mute-en : During the attack state, if the vpbr-max-attn value
  is reached, the error condition still remains, and this bit is set, the audio
  is muted.

Example:

cs35l36: cs35l36@40 {
	compatible = "cirrus,cs35l36";
	reg = <0x40>;
	VA-supply = <&dummy_vreg>;
	VP-supply = <&dummy_vreg>;
	reset-gpios = <&gpio0 54 0>;
	interrupt-parent = <&gpio8>;
	interrupts = <3 IRQ_TYPE_LEVEL_LOW>;

	cirrus,boost-ind-nanohenry = <1000>;
	cirrus,boost-ctl-millivolt = <10000>;
	cirrus,boost-peak-milliamp = <4500>;
	cirrus,boost-ctl-select = <0x00>;
	cirrus,weak-fet-delay = <0x04>;
	cirrus,weak-fet-thld = <0x01>;
	cirrus,temp-warn-threshold = <0x01>;
	cirrus,multi-amp-mode;
	cirrus,irq-drive-select = <0x01>;
	cirrus,irq-gpio-select = <0x01>;

	cirrus,vpbr-config {
		cirrus,vpbr-en = <0x00>;
		cirrus,vpbr-thld = <0x05>;
		cirrus,vpbr-atk-rate = <0x02>;
		cirrus,vpbr-atk-vol = <0x01>;
		cirrus,vpbr-max-attn = <0x09>;
		cirrus,vpbr-wait = <0x01>;
		cirrus,vpbr-rel-rate = <0x05>;
		cirrus,vpbr-mute-en = <0x00>;
	};
};