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