1* AB8500 Multi-Functional Device (MFD)
2
3Required parent device properties:
4- compatible             : contains "stericsson,ab8500" or "stericsson,ab8505";
5- interrupts             : contains the IRQ line for the AB8500
6- interrupt-controller   : describes the AB8500 as an Interrupt Controller (has its own domain)
7- #interrupt-cells       : should be 2, for 2-cell format
8                            - The first cell is the AB8500 local IRQ number
9                            - The second cell is used to specify optional parameters
10                              - bits[3:0] trigger type and level flags:
11                                  1 = low-to-high edge triggered
12                                  2 = high-to-low edge triggered
13                                  4 = active high level-sensitive
14                                  8 = active low level-sensitive
15
16The AB8500 consists of a large and varied group of sub-devices:
17
18Device                     IRQ Names              Supply Names   Description
19------                     ---------              ------------   -----------
20ab8500-bm                :                      :              : Battery Manager
21ab8500-btemp             :                      :              : Battery Temperature
22ab8500-charger           :                      :              : Battery Charger
23ab8500-codec             :                      :              : Audio Codec
24ab8500-fg                : 			: vddadc       : Fuel Gauge
25			 : NCONV_ACCU           :	       : Accumulate N Sample Conversion
26			 : BATT_OVV		:	       : Battery Over Voltage
27			 : LOW_BAT_F		:	       : LOW threshold battery voltage
28			 : CC_INT_CALIB		:	       : Coulomb Counter Internal Calibration
29			 : CCEOC		:	       : Coulomb Counter End of Conversion
30ab8500-btemp		 :			: vtvout       : Battery Temperature
31			 : BAT_CTRL_INDB        :              : Battery Removal Indicator
32			 : BTEMP_LOW            :              : Btemp < BtempLow, if battery temperature is lower than -10°C
33			 : BTEMP_LOW_MEDIUM     :              : BtempLow < Btemp < BtempMedium,if battery temperature is between -10 and 0°C
34			 : BTEMP_MEDIUM_HIGH    :	       : BtempMedium < Btemp < BtempHigh,if battery temperature is between 0°C and MaxTemp
35			 : BTEMP_HIGH           :              : Btemp > BtempHigh, if battery temperature is higher than MaxTemp
36ab8500-charger		 :			: vddadc       : Charger interface
37			 : MAIN_CH_UNPLUG_DET	:	       : main charger unplug detection management (not in 8505)
38			 : MAIN_CHARGE_PLUG_DET	:	       : main charger plug detection management (not in 8505)
39			 : MAIN_EXT_CH_NOT_OK	:	       : main charger not OK
40			 : MAIN_CH_TH_PROT_R	:	       : Die temp is above main charger
41			 : MAIN_CH_TH_PROT_F	:	       : Die temp is below main charger
42			 : VBUS_DET_F		:	       : VBUS falling detected
43			 : VBUS_DET_R		:	       : VBUS rising detected
44			 : USB_LINK_STATUS	:	       : USB link status has changed
45			 : USB_CH_TH_PROT_R	:	       : Die temp is above usb charger
46			 : USB_CH_TH_PROT_F	:	       : Die temp is below usb charger
47			 : USB_CHARGER_NOT_OKR	:	       : allowed USB charger not ok detection
48			 : VBUS_OVV		:	       : Overvoltage on Vbus ball detected (USB charge is stopped)
49			 : CH_WD_EXP		:	       : Charger watchdog detected
50ab8500-gpadc             : HW_CONV_END          : vddadc       : Analogue to Digital Converter
51                           SW_CONV_END          :              :
52ab8500-gpio              :                      :              : GPIO Controller (AB8500)
53ab8505-gpio              :                      :              : GPIO Controller (AB8505)
54ab8500-ponkey            : ONKEY_DBF            :              : Power-on Key
55                           ONKEY_DBR            :              :
56ab8500-pwm               :                      :              : Pulse Width Modulator
57ab8500-regulator         :                      :              : Regulators (AB8500)
58ab8505-regulator         :                      :              : Regulators (AB8505)
59ab8500-rtc               : 60S                  :              : Real Time Clock
60                         : ALARM                :              :
61ab8500-sysctrl           :                      :              : System Control
62ab8500-usb               : ID_WAKEUP_R          : vddulpivio18 : Universal Serial Bus
63                         : ID_WAKEUP_F          : v-ape        :
64                         : VBUS_DET_F           : musb_1v8     :
65                         : VBUS_DET_R           :              :
66                         : USB_LINK_STATUS      :              :
67                         : USB_ADP_PROBE_PLUG   :              :
68                         : USB_ADP_PROBE_UNPLUG :              :
69
70Required child device properties:
71- compatible             : "stericsson,ab8500-[bm|btemp|charger|fg|gpadc|gpio|ponkey|
72                                               pwm|regulator|rtc|sysctrl|usb]";
73
74  A few child devices require ADC channels from the GPADC node. Those follow the
75  standard bindings from iio/iio-bindings.txt and iio/adc/adc.txt
76
77  abx500-temp		 : io-channels "aux1" and "aux2" for measuring external
78			   temperatures.
79  ab8500-fg		 : io-channel "main_bat_v" for measuring main battery voltage,
80  ab8500-btemp		 : io-channels "btemp_ball" and "bat_ctrl" for measuring the
81			   battery voltage.
82  ab8500-charger	 : io-channels "main_charger_v", "main_charger_c", "vbus_v",
83			   "usb_charger_c" for measuring voltage and current of the
84			   different charging supplies.
85
86Optional child device properties:
87- interrupts             : contains the device IRQ(s) using the 2-cell format (see above)
88- interrupt-names        : contains names of IRQ resource in the order in which they were
89                           supplied in the interrupts property
90- <supply_name>-supply   : contains a phandle to the regulator supply node in Device Tree
91
92Non-standard child device properties:
93 - Audio CODEC:
94   - stericsson,amic[1|2]-type-single-ended : Single-ended Analoge Mic (default: differential)
95   - stericsson,amic1a-bias-vamic2          : Analoge Mic wishes to use a non-standard Vamic
96   - stericsson,amic1b-bias-vamic2          : Analoge Mic wishes to use a non-standard Vamic
97   - stericsson,amic2-bias-vamic1           : Analoge Mic wishes to use a non-standard Vamic
98   - stericsson,earpeice-cmv                : Earpeice voltage (only: 950 | 1100 | 1270 | 1580)
99
100ab8500 {
101         compatible = "stericsson,ab8500";
102         interrupts = <0 40 0x4>;
103         interrupt-controller;
104         #interrupt-cells = <2>;
105
106         ab8500-rtc {
107                 compatible = "stericsson,ab8500-rtc";
108                 interrupts = <17 0x4
109                               18 0x4>;
110                 interrupt-names = "60S", "ALARM";
111         };
112
113        ab8500-gpadc {
114                compatible = "stericsson,ab8500-gpadc";
115                interrupts = <32 0x4
116                              39 0x4>;
117                interrupt-names = "HW_CONV_END", "SW_CONV_END";
118                vddadc-supply = <&ab8500_ldo_tvout_reg>;
119		#address-cells = <1>;
120		#size-cells = <0>;
121		#io-channel-cells = <1>;
122
123		/* GPADC channels */
124		bat_ctrl: channel@1 {
125			reg = <0x01>;
126		};
127		btemp_ball: channel@2 {
128			reg = <0x02>;
129		};
130		main_charger_v: channel@3 {
131			reg = <0x03>;
132		};
133		acc_detect1: channel@4 {
134			reg = <0x04>;
135		};
136		acc_detect2: channel@5 {
137			reg = <0x05>;
138		};
139		adc_aux1: channel@6 {
140			reg = <0x06>;
141		};
142		adc_aux2: channel@7 {
143			reg = <0x07>;
144		};
145		main_batt_v: channel@8 {
146			reg = <0x08>;
147		};
148		vbus_v: channel@9 {
149			reg = <0x09>;
150		};
151		main_charger_c: channel@a {
152			reg = <0x0a>;
153		};
154		usb_charger_c: channel@b {
155			reg = <0x0b>;
156		};
157		bk_bat_v: channel@c {
158			reg = <0x0c>;
159		};
160		die_temp: channel@d {
161			reg = <0x0d>;
162		};
163		usb_id: channel@e {
164			reg = <0x0e>;
165		};
166		xtal_temp: channel@12 {
167			reg = <0x12>;
168		};
169		vbat_true_meas: channel@13 {
170			reg = <0x13>;
171		};
172		bat_ctrl_and_ibat: channel@1c {
173			reg = <0x1c>;
174		};
175		vbat_meas_and_ibat: channel@1d {
176			reg = <0x1d>;
177		};
178		vbat_true_meas_and_ibat: channel@1e {
179			reg = <0x1e>;
180		};
181		bat_temp_and_ibat: channel@1f {
182			reg = <0x1f>;
183		};
184        };
185
186	ab8500_temp {
187		compatible = "stericsson,abx500-temp";
188		io-channels = <&gpadc 0x06>,
189			      <&gpadc 0x07>;
190		io-channel-name = "aux1", "aux2";
191	};
192
193	ab8500_battery: ab8500_battery {
194		stericsson,battery-type = "LIPO";
195		thermistor-on-batctrl;
196	};
197
198	ab8500_fg {
199		compatible = "stericsson,ab8500-fg";
200		battery	   = <&ab8500_battery>;
201		io-channels = <&gpadc 0x08>;
202		io-channel-name = "main_bat_v";
203	};
204
205	ab8500_btemp {
206		compatible = "stericsson,ab8500-btemp";
207		battery	   = <&ab8500_battery>;
208		io-channels = <&gpadc 0x02>,
209			      <&gpadc 0x01>;
210		io-channel-name = "btemp_ball",
211				"bat_ctrl";
212	};
213
214	ab8500_charger {
215		compatible	= "stericsson,ab8500-charger";
216		battery		= <&ab8500_battery>;
217		vddadc-supply	= <&ab8500_ldo_tvout_reg>;
218		io-channels = <&gpadc 0x03>,
219			      <&gpadc 0x0a>,
220			      <&gpadc 0x09>,
221			      <&gpadc 0x0b>;
222		io-channel-name = "main_charger_v",
223				"main_charger_c",
224				"vbus_v",
225				"usb_charger_c";
226	};
227
228        ab8500-usb {
229                compatible = "stericsson,ab8500-usb";
230                interrupts = < 90 0x4
231                               96 0x4
232                               14 0x4
233                               15 0x4
234                               79 0x4
235                               74 0x4
236                               75 0x4>;
237                interrupt-names = "ID_WAKEUP_R",
238                                  "ID_WAKEUP_F",
239                                  "VBUS_DET_F",
240                                  "VBUS_DET_R",
241                                  "USB_LINK_STATUS",
242                                  "USB_ADP_PROBE_PLUG",
243                                  "USB_ADP_PROBE_UNPLUG";
244                vddulpivio18-supply = <&ab8500_ldo_intcore_reg>;
245                v-ape-supply = <&db8500_vape_reg>;
246                musb_1v8-supply = <&db8500_vsmps2_reg>;
247        };
248
249        ab8500-ponkey {
250                compatible = "stericsson,ab8500-ponkey";
251                interrupts = <6 0x4
252                              7 0x4>;
253                interrupt-names = "ONKEY_DBF", "ONKEY_DBR";
254        };
255
256        ab8500-sysctrl {
257                compatible = "stericsson,ab8500-sysctrl";
258        };
259
260        ab8500-pwm {
261                compatible = "stericsson,ab8500-pwm";
262        };
263
264	codec: ab8500-codec {
265		compatible = "stericsson,ab8500-codec";
266
267		stericsson,earpeice-cmv = <950>; /* Units in mV. */
268	};
269
270        ab8500-regulators {
271                compatible = "stericsson,ab8500-regulator";
272
273                ab8500_ldo_aux1_reg: ab8500_ldo_aux1 {
274                        /*
275                         * See: Documentation/devicetree/bindings/regulator/regulator.txt
276                         * for more information on regulators
277                         */
278                };
279        };
280};
281