summaryrefslogtreecommitdiff
path: root/Documentation/devicetree/bindings/sound/cs35l36.txt
blob: 912bd162b477281426982cec22b218debb14605f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
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>;
	};
};