1ed864461SBrian AustinCS35L35 Boosted Speaker Amplifier
2ed864461SBrian Austin
3ed864461SBrian AustinRequired properties:
4ed864461SBrian Austin
5ed864461SBrian Austin  - compatible : "cirrus,cs35l35"
6ed864461SBrian Austin
7ed864461SBrian Austin  - reg : the I2C address of the device for I2C
8ed864461SBrian Austin
9ed864461SBrian Austin  - VA-supply, VP-supply : power supplies for the device,
10ed864461SBrian Austin    as covered in
11ed864461SBrian Austin    Documentation/devicetree/bindings/regulator/regulator.txt.
12ed864461SBrian Austin
13ed864461SBrian Austin  - interrupt-parent : Specifies the phandle of the interrupt controller to
14ed864461SBrian Austin    which the IRQs from CS35L35 are delivered to.
15ed864461SBrian Austin  - interrupts : IRQ line info CS35L35.
16ed864461SBrian Austin    (See Documentation/devicetree/bindings/interrupt-controller/interrupts.txt
17ed864461SBrian Austin    for further information relating to interrupt properties)
18ed864461SBrian Austin
19ed864461SBrian AustinOptional properties:
20ed864461SBrian Austin  - reset-gpios : gpio used to reset the amplifier
21ed864461SBrian Austin
22ed864461SBrian Austin  - cirrus,stereo-config : Boolean to determine if there are 2 AMPs for a
23ed864461SBrian Austin  Stereo configuration
24ed864461SBrian Austin
25ed864461SBrian Austin  - cirrus,audio-channel : Set Location of Audio Signal on Serial Port
26ed864461SBrian Austin  0 = Data Packet received on Left I2S Channel
27ed864461SBrian Austin  1 = Data Packet received on Right I2S Channel
28ed864461SBrian Austin
29ed864461SBrian Austin  - cirrus,advisory-channel : Set Location of Advisory Signal on Serial Port
30ed864461SBrian Austin  0 = Data Packet received on Left I2S Channel
31ed864461SBrian Austin  1 = Data Packet received on Right I2S Channel
32ed864461SBrian Austin
33ed864461SBrian Austin  - cirrus,shared-boost : Boolean to enable ClassH tracking of Advisory Signal
34ed864461SBrian Austin  if 2 Devices share Boost BST_CTL
35ed864461SBrian Austin
360c67fb55SCharles Keepax  - cirrus,external-boost : Boolean to specify the device is using an external
370c67fb55SCharles Keepax  boost supply, note that sharing a boost from another cs35l35 would constitute
380c67fb55SCharles Keepax  using an external supply for the slave device
390c67fb55SCharles Keepax
40ed864461SBrian Austin  - cirrus,sp-drv-strength : Value for setting the Serial Port drive strength
41ed864461SBrian Austin  Table 3-10 of the datasheet lists drive-strength specifications
42ed864461SBrian Austin  0 = 1x (Default)
43ed864461SBrian Austin  1 = .5x
4445114c36SCharles Keepax  - cirrus,sp-drv-unused : Determines how unused slots should be driven on the
4545114c36SCharles Keepax  Serial Port.
4645114c36SCharles Keepax  0 - Hi-Z
4745114c36SCharles Keepax  2 - Drive 0's (Default)
4845114c36SCharles Keepax  3 - Drive 1's
49ed864461SBrian Austin
50ed864461SBrian Austin  - cirrus,bst-pdn-fet-on : Boolean to determine if the Boost PDN control
51ed864461SBrian Austin  powers down with a rectification FET On or Off. If VSPK is supplied
52ed864461SBrian Austin  externally then FET is off.
53ed864461SBrian Austin
54ed864461SBrian Austin  - cirrus,boost-ctl-millivolt : Boost Voltage Value.  Configures the boost
55ed864461SBrian Austin    converter's output voltage in mV. The range is from 2600mV to 9000mV with
56ed864461SBrian Austin    increments of 100mV.
57ed864461SBrian Austin    (Default) VP
58ed864461SBrian Austin
59ed864461SBrian Austin  - cirrus,boost-peak-milliamp : Boost-converter peak current limit in mA.
60ed864461SBrian Austin  Configures the peak current by monitoring the current through the boost FET.
61ed864461SBrian Austin  Range starts at 1680mA and goes to a maximum of 4480mA with increments of
62ed864461SBrian Austin  110mA.
63ed864461SBrian Austin  (Default) 2.46 Amps
64ed864461SBrian Austin
65ed864461SBrian Austin  - cirrus,amp-gain-zc : Boolean to determine if to use Amplifier gain-change
66ed864461SBrian Austin  zero-cross
67ed864461SBrian Austin
68ed864461SBrian AustinOptional H/G Algorithm sub-node:
69ed864461SBrian Austin
70ed864461SBrian Austin  The cs35l35 node can have a single "cirrus,classh-internal-algo" sub-node
71ed864461SBrian Austin  that will disable automatic control of the internal H/G Algorithm.
72ed864461SBrian Austin
73ed864461SBrian Austin  It is strongly recommended that the Datasheet be referenced when adjusting
74ed864461SBrian Austin  or using these Class H Algorithm controls over the internal Algorithm.
75ed864461SBrian Austin  Serious damage can occur to the Device and surrounding components.
76ed864461SBrian Austin
77ed864461SBrian Austin  - cirrus,classh-internal-algo : Sub-node for the Internal Class H Algorithm
78ed864461SBrian Austin  See Section 4.3 Internal Class H Algorithm in the Datasheet.
79ed864461SBrian Austin  If not used, the device manages the ClassH Algorithm internally.
80ed864461SBrian Austin
81ed864461SBrian AustinOptional properties for the "cirrus,classh-internal-algo" Sub-node
82ed864461SBrian Austin
83ed864461SBrian Austin  Section 7.29 Class H Control
84ed864461SBrian Austin  - cirrus,classh-bst-overide : Boolean
85ed864461SBrian Austin  - cirrus,classh-bst-max-limit
86ed864461SBrian Austin  - cirrus,classh-mem-depth
87ed864461SBrian Austin
88ed864461SBrian Austin  Section 7.30 Class H Headroom Control
89ed864461SBrian Austin  - cirrus,classh-headroom
90ed864461SBrian Austin
91ed864461SBrian Austin  Section 7.31 Class H Release Rate
92ed864461SBrian Austin  - cirrus,classh-release-rate
93ed864461SBrian Austin
94ed864461SBrian Austin  Section 7.32 Class H Weak FET Drive Control
95ed864461SBrian Austin  - cirrus,classh-wk-fet-disable
96ed864461SBrian Austin  - cirrus,classh-wk-fet-delay
97ed864461SBrian Austin  - cirrus,classh-wk-fet-thld
98ed864461SBrian Austin
99ed864461SBrian Austin  Section 7.34 Class H VP Control
100ed864461SBrian Austin  - cirrus,classh-vpch-auto
101ed864461SBrian Austin  - cirrus,classh-vpch-rate
102ed864461SBrian Austin  - cirrus,classh-vpch-man
103ed864461SBrian Austin
104ed864461SBrian AustinOptional Monitor Signal Format sub-node:
105ed864461SBrian Austin
106ed864461SBrian Austin  The cs35l35 node can have a single "cirrus,monitor-signal-format" sub-node
107ed864461SBrian Austin  for adjusting the Depth, Location and Frame of the Monitoring Signals
108ed864461SBrian Austin  for Algorithms.
109ed864461SBrian Austin
110ed864461SBrian Austin  See Sections 4.8.2 through 4.8.4 Serial-Port Control in the Datasheet
111ed864461SBrian Austin
112ed864461SBrian Austin  -cirrus,monitor-signal-format : Sub-node for the Monitor Signaling Formating
113ed864461SBrian Austin  on the I2S Port. Each of the 3 8 bit values in the array contain the settings
114ed864461SBrian Austin  for depth, location, and frame.
115ed864461SBrian Austin
116ed864461SBrian Austin  If not used, the defaults for the 6 monitor signals is used.
117ed864461SBrian Austin
118ed864461SBrian Austin  Sections 7.44 - 7.53 lists values for the depth, location, and frame
119ed864461SBrian Austin  for each monitoring signal.
120ed864461SBrian Austin
12106bdf385SCharles Keepax  - cirrus,imon : 4 8 bit values to set the depth, location, frame and ADC
12206bdf385SCharles Keepax  scale of the IMON monitor signal.
123ed864461SBrian Austin
124ed864461SBrian Austin  - cirrus,vmon : 3 8 bit values to set the depth, location, and frame
125ed864461SBrian Austin  of the VMON monitor signal.
126ed864461SBrian Austin
127ed864461SBrian Austin  - cirrus,vpmon : 3 8 bit values to set the depth, location, and frame
128ed864461SBrian Austin  of the VPMON monitor signal.
129ed864461SBrian Austin
130ed864461SBrian Austin  - cirrus,vbstmon : 3 8 bit values to set the depth, location, and frame
131ed864461SBrian Austin  of the VBSTMON monitor signal
132ed864461SBrian Austin
133ed864461SBrian Austin  - cirrus,vpbrstat : 3 8 bit values to set the depth, location, and frame
134ed864461SBrian Austin  of the VPBRSTAT monitor signal
135ed864461SBrian Austin
136ed864461SBrian Austin  - cirrus,zerofill : 3 8 bit values to set the depth, location, and frame\
137ed864461SBrian Austin  of the ZEROFILL packet in the monitor signal
138ed864461SBrian Austin
139ed864461SBrian AustinExample:
140ed864461SBrian Austin
141ed864461SBrian Austincs35l35: cs35l35@20 {
142ed864461SBrian Austin	compatible = "cirrus,cs35l35";
143ed864461SBrian Austin	reg = <0x20>;
144ed864461SBrian Austin	VA-supply = <&dummy_vreg>;
145ed864461SBrian Austin	VP-supply = <&dummy_vreg>;
146ed864461SBrian Austin	reset-gpios = <&axi_gpio 54 0>;
147ed864461SBrian Austin	interrupt-parent = <&gpio8>;
148ed864461SBrian Austin	interrupts = <3 IRQ_TYPE_LEVEL_LOW>;
149ed864461SBrian Austin	cirrus,boost-ctl-millivolt = <9000>;
150ed864461SBrian Austin
151ed864461SBrian Austin	cirrus,stereo-config;
152ed864461SBrian Austin	cirrus,audio-channel = <0x00>;
153ed864461SBrian Austin	cirrus,advisory-channel = <0x01>;
154ed864461SBrian Austin	cirrus,shared-boost;
155ed864461SBrian Austin
156ed864461SBrian Austin	cirrus,classh-internal-algo {
157ed864461SBrian Austin		cirrus,classh-bst-overide;
158ed864461SBrian Austin		cirrus,classh-bst-max-limit = <0x01>;
159ed864461SBrian Austin		cirrus,classh-mem-depth = <0x01>;
160ed864461SBrian Austin		cirrus,classh-release-rate = <0x08>;
161ed864461SBrian Austin		cirrus,classh-headroom-millivolt = <0x0B>;
162ed864461SBrian Austin		cirrus,classh-wk-fet-disable = <0x01>;
163ed864461SBrian Austin		cirrus,classh-wk-fet-delay = <0x04>;
164ed864461SBrian Austin		cirrus,classh-wk-fet-thld = <0x01>;
165ed864461SBrian Austin		cirrus,classh-vpch-auto = <0x01>;
166ed864461SBrian Austin		cirrus,classh-vpch-rate = <0x02>;
167ed864461SBrian Austin		cirrus,classh-vpch-man = <0x05>;
168ed864461SBrian Austin	};
169ed864461SBrian Austin
170ed864461SBrian Austin	/* Depth, Location, Frame */
171ed864461SBrian Austin	cirrus,monitor-signal-format {
172ed864461SBrian Austin		cirrus,imon = /bits/ 8 <0x03 0x00 0x01>;
173ed864461SBrian Austin		cirrus,vmon = /bits/ 8 <0x03 0x00 0x00>;
174ed864461SBrian Austin		cirrus,vpmon = /bits/ 8 <0x03 0x04 0x00>;
175ed864461SBrian Austin		cirrus,vbstmon = /bits/ 8 <0x03 0x04 0x01>;
176ed864461SBrian Austin		cirrus,vpbrstat = /bits/ 8 <0x00 0x04 0x00>;
177ed864461SBrian Austin		cirrus,zerofill = /bits/ 8 <0x00 0x00 0x00>;
178ed864461SBrian Austin	};
179ed864461SBrian Austin
180ed864461SBrian Austin};
181