xref: /OK3568_Linux_fs/kernel/arch/arm/boot/dts/ste-ab8500.dtsi (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun// SPDX-License-Identifier: GPL-2.0-or-later
2*4882a593Smuzhiyun/*
3*4882a593Smuzhiyun * Copyright 2012 Linaro Ltd
4*4882a593Smuzhiyun */
5*4882a593Smuzhiyun
6*4882a593Smuzhiyun#include <dt-bindings/clock/ste-ab8500.h>
7*4882a593Smuzhiyun
8*4882a593Smuzhiyun/ {
9*4882a593Smuzhiyun	/* Essential housekeeping hardware monitors */
10*4882a593Smuzhiyun	iio-hwmon {
11*4882a593Smuzhiyun		compatible = "iio-hwmon";
12*4882a593Smuzhiyun		io-channels = <&gpadc 0x02>, /* Battery temperature */
13*4882a593Smuzhiyun			    <&gpadc 0x03>, /* Main charger voltage */
14*4882a593Smuzhiyun			    <&gpadc 0x08>, /* Main battery voltage */
15*4882a593Smuzhiyun			    <&gpadc 0x09>, /* VBUS */
16*4882a593Smuzhiyun			    <&gpadc 0x0a>, /* Main charger current */
17*4882a593Smuzhiyun			    <&gpadc 0x0b>, /* USB charger current */
18*4882a593Smuzhiyun			    <&gpadc 0x0c>, /* Backup battery voltage */
19*4882a593Smuzhiyun			    <&gpadc 0x0d>, /* Die temperature */
20*4882a593Smuzhiyun			    <&gpadc 0x12>; /* Crystal temperature */
21*4882a593Smuzhiyun	};
22*4882a593Smuzhiyun
23*4882a593Smuzhiyun	soc {
24*4882a593Smuzhiyun		prcmu@80157000 {
25*4882a593Smuzhiyun			ab8500 {
26*4882a593Smuzhiyun				compatible = "stericsson,ab8500";
27*4882a593Smuzhiyun				interrupt-parent = <&intc>;
28*4882a593Smuzhiyun				interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>;
29*4882a593Smuzhiyun				interrupt-controller;
30*4882a593Smuzhiyun				#interrupt-cells = <2>;
31*4882a593Smuzhiyun
32*4882a593Smuzhiyun				ab8500_clock: clock-controller {
33*4882a593Smuzhiyun					compatible = "stericsson,ab8500-clk";
34*4882a593Smuzhiyun					#clock-cells = <1>;
35*4882a593Smuzhiyun				};
36*4882a593Smuzhiyun
37*4882a593Smuzhiyun				ab8500_gpio: ab8500-gpiocontroller {
38*4882a593Smuzhiyun					compatible = "stericsson,ab8500-gpio";
39*4882a593Smuzhiyun					gpio-controller;
40*4882a593Smuzhiyun					#gpio-cells = <2>;
41*4882a593Smuzhiyun				};
42*4882a593Smuzhiyun
43*4882a593Smuzhiyun				ab8500-rtc {
44*4882a593Smuzhiyun					compatible = "stericsson,ab8500-rtc";
45*4882a593Smuzhiyun					interrupts = <17 IRQ_TYPE_LEVEL_HIGH>,
46*4882a593Smuzhiyun						     <18 IRQ_TYPE_LEVEL_HIGH>;
47*4882a593Smuzhiyun					interrupt-names = "60S", "ALARM";
48*4882a593Smuzhiyun				};
49*4882a593Smuzhiyun
50*4882a593Smuzhiyun				gpadc: ab8500-gpadc {
51*4882a593Smuzhiyun					compatible = "stericsson,ab8500-gpadc";
52*4882a593Smuzhiyun					interrupts = <32 IRQ_TYPE_LEVEL_HIGH>,
53*4882a593Smuzhiyun						     <39 IRQ_TYPE_LEVEL_HIGH>;
54*4882a593Smuzhiyun					interrupt-names = "HW_CONV_END", "SW_CONV_END";
55*4882a593Smuzhiyun					vddadc-supply = <&ab8500_ldo_tvout_reg>;
56*4882a593Smuzhiyun					#address-cells = <1>;
57*4882a593Smuzhiyun					#size-cells = <0>;
58*4882a593Smuzhiyun					#io-channel-cells = <1>;
59*4882a593Smuzhiyun
60*4882a593Smuzhiyun					/* GPADC channels */
61*4882a593Smuzhiyun					bat_ctrl: channel@01 {
62*4882a593Smuzhiyun						reg = <0x01>;
63*4882a593Smuzhiyun					};
64*4882a593Smuzhiyun					btemp_ball: channel@02 {
65*4882a593Smuzhiyun						reg = <0x02>;
66*4882a593Smuzhiyun					};
67*4882a593Smuzhiyun					main_charger_v: channel@03 {
68*4882a593Smuzhiyun						reg = <0x03>;
69*4882a593Smuzhiyun					};
70*4882a593Smuzhiyun					acc_detect1: channel@04 {
71*4882a593Smuzhiyun						reg = <0x04>;
72*4882a593Smuzhiyun					};
73*4882a593Smuzhiyun					acc_detect2: channel@05 {
74*4882a593Smuzhiyun						reg = <0x05>;
75*4882a593Smuzhiyun					};
76*4882a593Smuzhiyun					adc_aux1: channel@06 {
77*4882a593Smuzhiyun						reg = <0x06>;
78*4882a593Smuzhiyun					};
79*4882a593Smuzhiyun					adc_aux2: channel@07 {
80*4882a593Smuzhiyun						reg = <0x07>;
81*4882a593Smuzhiyun					};
82*4882a593Smuzhiyun					main_batt_v: channel@08 {
83*4882a593Smuzhiyun						reg = <0x08>;
84*4882a593Smuzhiyun					};
85*4882a593Smuzhiyun					vbus_v: channel@09 {
86*4882a593Smuzhiyun						reg = <0x09>;
87*4882a593Smuzhiyun					};
88*4882a593Smuzhiyun					main_charger_c: channel@0a {
89*4882a593Smuzhiyun						reg = <0x0a>;
90*4882a593Smuzhiyun					};
91*4882a593Smuzhiyun					usb_charger_c: channel@0b {
92*4882a593Smuzhiyun						reg = <0x0b>;
93*4882a593Smuzhiyun					};
94*4882a593Smuzhiyun					bk_bat_v: channel@0c {
95*4882a593Smuzhiyun						reg = <0x0c>;
96*4882a593Smuzhiyun					};
97*4882a593Smuzhiyun					die_temp: channel@0d {
98*4882a593Smuzhiyun						reg = <0x0d>;
99*4882a593Smuzhiyun					};
100*4882a593Smuzhiyun					usb_id: channel@0e {
101*4882a593Smuzhiyun						reg = <0x0e>;
102*4882a593Smuzhiyun					};
103*4882a593Smuzhiyun					xtal_temp: channel@12 {
104*4882a593Smuzhiyun						reg = <0x12>;
105*4882a593Smuzhiyun					};
106*4882a593Smuzhiyun					vbat_true_meas: channel@13 {
107*4882a593Smuzhiyun						reg = <0x13>;
108*4882a593Smuzhiyun					};
109*4882a593Smuzhiyun					bat_ctrl_and_ibat: channel@1c {
110*4882a593Smuzhiyun						reg = <0x1c>;
111*4882a593Smuzhiyun					};
112*4882a593Smuzhiyun					vbat_meas_and_ibat: channel@1d {
113*4882a593Smuzhiyun						reg = <0x1d>;
114*4882a593Smuzhiyun					};
115*4882a593Smuzhiyun					vbat_true_meas_and_ibat: channel@1e {
116*4882a593Smuzhiyun						reg = <0x1e>;
117*4882a593Smuzhiyun					};
118*4882a593Smuzhiyun					bat_temp_and_ibat: channel@1f {
119*4882a593Smuzhiyun						reg = <0x1f>;
120*4882a593Smuzhiyun					};
121*4882a593Smuzhiyun				};
122*4882a593Smuzhiyun
123*4882a593Smuzhiyun				ab8500_temp {
124*4882a593Smuzhiyun					compatible = "stericsson,abx500-temp";
125*4882a593Smuzhiyun					io-channels = <&gpadc 0x06>,
126*4882a593Smuzhiyun						      <&gpadc 0x07>;
127*4882a593Smuzhiyun					io-channel-name = "aux1", "aux2";
128*4882a593Smuzhiyun				};
129*4882a593Smuzhiyun
130*4882a593Smuzhiyun				ab8500_battery: ab8500_battery {
131*4882a593Smuzhiyun					stericsson,battery-type = "LIPO";
132*4882a593Smuzhiyun					thermistor-on-batctrl;
133*4882a593Smuzhiyun				};
134*4882a593Smuzhiyun
135*4882a593Smuzhiyun				ab8500_fg {
136*4882a593Smuzhiyun					compatible = "stericsson,ab8500-fg";
137*4882a593Smuzhiyun					battery	   = <&ab8500_battery>;
138*4882a593Smuzhiyun					io-channels = <&gpadc 0x08>;
139*4882a593Smuzhiyun					io-channel-name = "main_bat_v";
140*4882a593Smuzhiyun				};
141*4882a593Smuzhiyun
142*4882a593Smuzhiyun				ab8500_btemp {
143*4882a593Smuzhiyun					compatible = "stericsson,ab8500-btemp";
144*4882a593Smuzhiyun					battery	   = <&ab8500_battery>;
145*4882a593Smuzhiyun					io-channels = <&gpadc 0x02>,
146*4882a593Smuzhiyun						      <&gpadc 0x01>;
147*4882a593Smuzhiyun					io-channel-name = "btemp_ball",
148*4882a593Smuzhiyun							"bat_ctrl";
149*4882a593Smuzhiyun				};
150*4882a593Smuzhiyun
151*4882a593Smuzhiyun				ab8500_charger {
152*4882a593Smuzhiyun					compatible	= "stericsson,ab8500-charger";
153*4882a593Smuzhiyun					battery		= <&ab8500_battery>;
154*4882a593Smuzhiyun					vddadc-supply	= <&ab8500_ldo_tvout_reg>;
155*4882a593Smuzhiyun					io-channels = <&gpadc 0x03>,
156*4882a593Smuzhiyun						      <&gpadc 0x0a>,
157*4882a593Smuzhiyun						      <&gpadc 0x09>,
158*4882a593Smuzhiyun						      <&gpadc 0x0b>;
159*4882a593Smuzhiyun					io-channel-name = "main_charger_v",
160*4882a593Smuzhiyun							"main_charger_c",
161*4882a593Smuzhiyun							"vbus_v",
162*4882a593Smuzhiyun							"usb_charger_c";
163*4882a593Smuzhiyun				};
164*4882a593Smuzhiyun
165*4882a593Smuzhiyun				ab8500_chargalg {
166*4882a593Smuzhiyun					compatible	= "stericsson,ab8500-chargalg";
167*4882a593Smuzhiyun					battery		= <&ab8500_battery>;
168*4882a593Smuzhiyun				};
169*4882a593Smuzhiyun
170*4882a593Smuzhiyun				ab8500_usb {
171*4882a593Smuzhiyun					compatible = "stericsson,ab8500-usb";
172*4882a593Smuzhiyun					interrupts = <90 IRQ_TYPE_LEVEL_HIGH>,
173*4882a593Smuzhiyun						     <96 IRQ_TYPE_LEVEL_HIGH>,
174*4882a593Smuzhiyun						     <14 IRQ_TYPE_LEVEL_HIGH>,
175*4882a593Smuzhiyun						     <15 IRQ_TYPE_LEVEL_HIGH>,
176*4882a593Smuzhiyun						     <79 IRQ_TYPE_LEVEL_HIGH>,
177*4882a593Smuzhiyun						     <74 IRQ_TYPE_LEVEL_HIGH>,
178*4882a593Smuzhiyun						     <75 IRQ_TYPE_LEVEL_HIGH>;
179*4882a593Smuzhiyun					interrupt-names = "ID_WAKEUP_R",
180*4882a593Smuzhiyun							  "ID_WAKEUP_F",
181*4882a593Smuzhiyun							  "VBUS_DET_F",
182*4882a593Smuzhiyun							  "VBUS_DET_R",
183*4882a593Smuzhiyun							  "USB_LINK_STATUS",
184*4882a593Smuzhiyun							  "USB_ADP_PROBE_PLUG",
185*4882a593Smuzhiyun							  "USB_ADP_PROBE_UNPLUG";
186*4882a593Smuzhiyun					vddulpivio18-supply = <&ab8500_ldo_intcore_reg>;
187*4882a593Smuzhiyun					v-ape-supply = <&db8500_vape_reg>;
188*4882a593Smuzhiyun					musb_1v8-supply = <&db8500_vsmps2_reg>;
189*4882a593Smuzhiyun					clocks = <&prcmu_clk PRCMU_SYSCLK>;
190*4882a593Smuzhiyun					clock-names = "sysclk";
191*4882a593Smuzhiyun				};
192*4882a593Smuzhiyun
193*4882a593Smuzhiyun				ab8500-ponkey {
194*4882a593Smuzhiyun					compatible = "stericsson,ab8500-poweron-key";
195*4882a593Smuzhiyun					interrupts = <6 IRQ_TYPE_LEVEL_HIGH>,
196*4882a593Smuzhiyun						     <7 IRQ_TYPE_LEVEL_HIGH>;
197*4882a593Smuzhiyun					interrupt-names = "ONKEY_DBF", "ONKEY_DBR";
198*4882a593Smuzhiyun				};
199*4882a593Smuzhiyun
200*4882a593Smuzhiyun				ab8500-sysctrl {
201*4882a593Smuzhiyun					compatible = "stericsson,ab8500-sysctrl";
202*4882a593Smuzhiyun				};
203*4882a593Smuzhiyun
204*4882a593Smuzhiyun				ab8500-pwm-1 {
205*4882a593Smuzhiyun					compatible = "stericsson,ab8500-pwm";
206*4882a593Smuzhiyun					clocks = <&ab8500_clock AB8500_SYSCLK_INT>;
207*4882a593Smuzhiyun					clock-names = "intclk";
208*4882a593Smuzhiyun				};
209*4882a593Smuzhiyun
210*4882a593Smuzhiyun				ab8500-pwm-2 {
211*4882a593Smuzhiyun					compatible = "stericsson,ab8500-pwm";
212*4882a593Smuzhiyun					clocks = <&ab8500_clock AB8500_SYSCLK_INT>;
213*4882a593Smuzhiyun					clock-names = "intclk";
214*4882a593Smuzhiyun				};
215*4882a593Smuzhiyun
216*4882a593Smuzhiyun				ab8500-pwm-3 {
217*4882a593Smuzhiyun					compatible = "stericsson,ab8500-pwm";
218*4882a593Smuzhiyun					clocks = <&ab8500_clock AB8500_SYSCLK_INT>;
219*4882a593Smuzhiyun					clock-names = "intclk";
220*4882a593Smuzhiyun				};
221*4882a593Smuzhiyun
222*4882a593Smuzhiyun				ab8500-debugfs {
223*4882a593Smuzhiyun					compatible = "stericsson,ab8500-debug";
224*4882a593Smuzhiyun				};
225*4882a593Smuzhiyun
226*4882a593Smuzhiyun				codec: ab8500-codec {
227*4882a593Smuzhiyun					compatible = "stericsson,ab8500-codec";
228*4882a593Smuzhiyun
229*4882a593Smuzhiyun					V-AUD-supply = <&ab8500_ldo_audio_reg>;
230*4882a593Smuzhiyun					V-AMIC1-supply = <&ab8500_ldo_anamic1_reg>;
231*4882a593Smuzhiyun					V-AMIC2-supply = <&ab8500_ldo_anamic2_reg>;
232*4882a593Smuzhiyun					V-DMIC-supply = <&ab8500_ldo_dmic_reg>;
233*4882a593Smuzhiyun
234*4882a593Smuzhiyun					clocks = <&ab8500_clock AB8500_SYSCLK_AUDIO>;
235*4882a593Smuzhiyun					clock-names = "audioclk";
236*4882a593Smuzhiyun
237*4882a593Smuzhiyun					stericsson,earpeice-cmv = <950>; /* Units in mV. */
238*4882a593Smuzhiyun				};
239*4882a593Smuzhiyun
240*4882a593Smuzhiyun				ext_regulators: ab8500-ext-regulators {
241*4882a593Smuzhiyun					compatible = "stericsson,ab8500-ext-regulator";
242*4882a593Smuzhiyun
243*4882a593Smuzhiyun					ab8500_ext1_reg: ab8500_ext1 {
244*4882a593Smuzhiyun						regulator-min-microvolt = <1800000>;
245*4882a593Smuzhiyun						regulator-max-microvolt = <1800000>;
246*4882a593Smuzhiyun						regulator-boot-on;
247*4882a593Smuzhiyun						regulator-always-on;
248*4882a593Smuzhiyun					};
249*4882a593Smuzhiyun
250*4882a593Smuzhiyun					ab8500_ext2_reg: ab8500_ext2 {
251*4882a593Smuzhiyun						regulator-min-microvolt = <1360000>;
252*4882a593Smuzhiyun						regulator-max-microvolt = <1360000>;
253*4882a593Smuzhiyun						regulator-boot-on;
254*4882a593Smuzhiyun						regulator-always-on;
255*4882a593Smuzhiyun					};
256*4882a593Smuzhiyun
257*4882a593Smuzhiyun					ab8500_ext3_reg: ab8500_ext3 {
258*4882a593Smuzhiyun						regulator-min-microvolt = <3400000>;
259*4882a593Smuzhiyun						regulator-max-microvolt = <3400000>;
260*4882a593Smuzhiyun						regulator-boot-on;
261*4882a593Smuzhiyun					};
262*4882a593Smuzhiyun				};
263*4882a593Smuzhiyun
264*4882a593Smuzhiyun				ab8500-regulators {
265*4882a593Smuzhiyun					compatible = "stericsson,ab8500-regulator";
266*4882a593Smuzhiyun					vin-supply = <&ab8500_ext3_reg>;
267*4882a593Smuzhiyun
268*4882a593Smuzhiyun					// supplies to the display/camera
269*4882a593Smuzhiyun					ab8500_ldo_aux1_reg: ab8500_ldo_aux1 {
270*4882a593Smuzhiyun						regulator-min-microvolt = <2500000>;
271*4882a593Smuzhiyun						regulator-max-microvolt = <2900000>;
272*4882a593Smuzhiyun						regulator-boot-on;
273*4882a593Smuzhiyun						/* BUG: If turned off MMC will be affected. */
274*4882a593Smuzhiyun						regulator-always-on;
275*4882a593Smuzhiyun					};
276*4882a593Smuzhiyun
277*4882a593Smuzhiyun					// supplies to the on-board eMMC
278*4882a593Smuzhiyun					ab8500_ldo_aux2_reg: ab8500_ldo_aux2 {
279*4882a593Smuzhiyun						regulator-min-microvolt = <1100000>;
280*4882a593Smuzhiyun						regulator-max-microvolt = <3300000>;
281*4882a593Smuzhiyun					};
282*4882a593Smuzhiyun
283*4882a593Smuzhiyun					// supply for VAUX3; SDcard slots
284*4882a593Smuzhiyun					ab8500_ldo_aux3_reg: ab8500_ldo_aux3 {
285*4882a593Smuzhiyun						regulator-min-microvolt = <1100000>;
286*4882a593Smuzhiyun						regulator-max-microvolt = <3300000>;
287*4882a593Smuzhiyun					};
288*4882a593Smuzhiyun
289*4882a593Smuzhiyun					// supply for v-intcore12; VINTCORE12 LDO
290*4882a593Smuzhiyun					ab8500_ldo_intcore_reg: ab8500_ldo_intcore {
291*4882a593Smuzhiyun					};
292*4882a593Smuzhiyun
293*4882a593Smuzhiyun					// supply for tvout; gpadc; TVOUT LDO
294*4882a593Smuzhiyun					ab8500_ldo_tvout_reg: ab8500_ldo_tvout {
295*4882a593Smuzhiyun					};
296*4882a593Smuzhiyun
297*4882a593Smuzhiyun					// supply for ab8500-vaudio; VAUDIO LDO
298*4882a593Smuzhiyun					ab8500_ldo_audio_reg: ab8500_ldo_audio {
299*4882a593Smuzhiyun					};
300*4882a593Smuzhiyun
301*4882a593Smuzhiyun					// supply for v-anamic1 VAMIC1 LDO
302*4882a593Smuzhiyun					ab8500_ldo_anamic1_reg: ab8500_ldo_anamic1 {
303*4882a593Smuzhiyun					};
304*4882a593Smuzhiyun
305*4882a593Smuzhiyun					// supply for v-amic2; VAMIC2 LDO; reuse constants for AMIC1
306*4882a593Smuzhiyun					ab8500_ldo_anamic2_reg: ab8500_ldo_anamic2 {
307*4882a593Smuzhiyun					};
308*4882a593Smuzhiyun
309*4882a593Smuzhiyun					// supply for v-dmic; VDMIC LDO
310*4882a593Smuzhiyun					ab8500_ldo_dmic_reg: ab8500_ldo_dmic {
311*4882a593Smuzhiyun					};
312*4882a593Smuzhiyun
313*4882a593Smuzhiyun					// supply for U8500 CSI/DSI; VANA LDO
314*4882a593Smuzhiyun					ab8500_ldo_ana_reg: ab8500_ldo_ana {
315*4882a593Smuzhiyun					};
316*4882a593Smuzhiyun				};
317*4882a593Smuzhiyun			};
318*4882a593Smuzhiyun		};
319*4882a593Smuzhiyun
320*4882a593Smuzhiyun		sound {
321*4882a593Smuzhiyun			stericsson,audio-codec = <&codec>;
322*4882a593Smuzhiyun			clocks = <&prcmu_clk PRCMU_SYSCLK>, <&ab8500_clock AB8500_SYSCLK_ULP>, <&ab8500_clock AB8500_SYSCLK_INT>;
323*4882a593Smuzhiyun			clock-names = "sysclk", "ulpclk", "intclk";
324*4882a593Smuzhiyun		};
325*4882a593Smuzhiyun
326*4882a593Smuzhiyun		mcde@a0350000 {
327*4882a593Smuzhiyun			vana-supply = <&ab8500_ldo_ana_reg>;
328*4882a593Smuzhiyun
329*4882a593Smuzhiyun			dsi-controller@a0351000 {
330*4882a593Smuzhiyun				vana-supply = <&ab8500_ldo_ana_reg>;
331*4882a593Smuzhiyun			};
332*4882a593Smuzhiyun			dsi-controller@a0352000 {
333*4882a593Smuzhiyun				vana-supply = <&ab8500_ldo_ana_reg>;
334*4882a593Smuzhiyun			};
335*4882a593Smuzhiyun			dsi-controller@a0353000 {
336*4882a593Smuzhiyun				vana-supply = <&ab8500_ldo_ana_reg>;
337*4882a593Smuzhiyun			};
338*4882a593Smuzhiyun		};
339*4882a593Smuzhiyun	};
340*4882a593Smuzhiyun};
341