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