xref: /OK3568_Linux_fs/kernel/arch/arm/boot/dts/qcom-apq8060-dragonboard.dts (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun/*
2*4882a593Smuzhiyun * Copyright 2016 Linaro Ltd
3*4882a593Smuzhiyun *
4*4882a593Smuzhiyun * Permission is hereby granted, free of charge, to any person obtaining a copy
5*4882a593Smuzhiyun * of this software and associated documentation files (the "Software"), to deal
6*4882a593Smuzhiyun * in the Software without restriction, including without limitation the rights
7*4882a593Smuzhiyun * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8*4882a593Smuzhiyun * copies of the Software, and to permit persons to whom the Software is
9*4882a593Smuzhiyun * furnished to do so, subject to the following conditions:
10*4882a593Smuzhiyun *
11*4882a593Smuzhiyun * The above copyright notice and this permission notice shall be included in
12*4882a593Smuzhiyun * all copies or substantial portions of the Software.
13*4882a593Smuzhiyun *
14*4882a593Smuzhiyun * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15*4882a593Smuzhiyun * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16*4882a593Smuzhiyun * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
17*4882a593Smuzhiyun * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18*4882a593Smuzhiyun * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19*4882a593Smuzhiyun * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
20*4882a593Smuzhiyun * THE SOFTWARE.
21*4882a593Smuzhiyun */
22*4882a593Smuzhiyun
23*4882a593Smuzhiyun#include <dt-bindings/input/input.h>
24*4882a593Smuzhiyun#include <dt-bindings/gpio/gpio.h>
25*4882a593Smuzhiyun#include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
26*4882a593Smuzhiyun#include <dt-bindings/pinctrl/qcom,pmic-mpp.h>
27*4882a593Smuzhiyun#include "qcom-msm8660.dtsi"
28*4882a593Smuzhiyun
29*4882a593Smuzhiyun/ {
30*4882a593Smuzhiyun	model = "Qualcomm APQ8060 Dragonboard";
31*4882a593Smuzhiyun	compatible = "qcom,apq8060-dragonboard", "qcom,msm8660";
32*4882a593Smuzhiyun
33*4882a593Smuzhiyun	aliases {
34*4882a593Smuzhiyun		serial0 = &gsbi12_serial;
35*4882a593Smuzhiyun	};
36*4882a593Smuzhiyun
37*4882a593Smuzhiyun	chosen {
38*4882a593Smuzhiyun		stdout-path = "serial0:115200n8";
39*4882a593Smuzhiyun	};
40*4882a593Smuzhiyun
41*4882a593Smuzhiyun	regulators {
42*4882a593Smuzhiyun		compatible = "simple-bus";
43*4882a593Smuzhiyun
44*4882a593Smuzhiyun		/* Main power of the board: 3.7V */
45*4882a593Smuzhiyun		vph: regulator-fixed {
46*4882a593Smuzhiyun			compatible = "regulator-fixed";
47*4882a593Smuzhiyun			regulator-min-microvolt = <3700000>;
48*4882a593Smuzhiyun			regulator-max-microvolt = <3700000>;
49*4882a593Smuzhiyun			regulator-name = "VPH";
50*4882a593Smuzhiyun			regulator-type = "voltage";
51*4882a593Smuzhiyun			regulator-always-on;
52*4882a593Smuzhiyun			regulator-boot-on;
53*4882a593Smuzhiyun		};
54*4882a593Smuzhiyun
55*4882a593Smuzhiyun		/* GPIO controlled ethernet power regulator */
56*4882a593Smuzhiyun		dragon_veth: xc622a331mrg {
57*4882a593Smuzhiyun			compatible = "regulator-fixed";
58*4882a593Smuzhiyun			regulator-name = "XC6222A331MR-G";
59*4882a593Smuzhiyun			regulator-min-microvolt = <3300000>;
60*4882a593Smuzhiyun			regulator-max-microvolt = <3300000>;
61*4882a593Smuzhiyun			vin-supply = <&vph>;
62*4882a593Smuzhiyun			gpio = <&pm8058_gpio 40 GPIO_ACTIVE_HIGH>;
63*4882a593Smuzhiyun			enable-active-high;
64*4882a593Smuzhiyun			pinctrl-names = "default";
65*4882a593Smuzhiyun			pinctrl-0 = <&dragon_veth_gpios>;
66*4882a593Smuzhiyun			regulator-always-on;
67*4882a593Smuzhiyun		};
68*4882a593Smuzhiyun
69*4882a593Smuzhiyun		/* VDDvario fixed regulator */
70*4882a593Smuzhiyun		dragon_vario: nds332p {
71*4882a593Smuzhiyun			compatible = "regulator-fixed";
72*4882a593Smuzhiyun			regulator-name = "NDS332P";
73*4882a593Smuzhiyun			regulator-min-microvolt = <1800000>;
74*4882a593Smuzhiyun			regulator-max-microvolt = <1800000>;
75*4882a593Smuzhiyun			vin-supply = <&pm8058_s3>;
76*4882a593Smuzhiyun		};
77*4882a593Smuzhiyun
78*4882a593Smuzhiyun		/* This is a levelshifter for SDCC5 */
79*4882a593Smuzhiyun		dragon_vio_txb: txb0104rgyr {
80*4882a593Smuzhiyun			compatible = "regulator-fixed";
81*4882a593Smuzhiyun			regulator-name = "Dragon SDCC levelshifter";
82*4882a593Smuzhiyun			vin-supply = <&pm8058_l14>;
83*4882a593Smuzhiyun			regulator-always-on;
84*4882a593Smuzhiyun		};
85*4882a593Smuzhiyun	};
86*4882a593Smuzhiyun
87*4882a593Smuzhiyun	/*
88*4882a593Smuzhiyun	 * Capella CM3605 light and proximity sensor mounted directly
89*4882a593Smuzhiyun	 * on the sensor board.
90*4882a593Smuzhiyun	 */
91*4882a593Smuzhiyun	cm3605 {
92*4882a593Smuzhiyun		compatible = "capella,cm3605";
93*4882a593Smuzhiyun		vdd-supply = <&pm8058_l14>; // 2.85V
94*4882a593Smuzhiyun		aset-gpios = <&pm8058_gpio 35 GPIO_ACTIVE_LOW>;
95*4882a593Smuzhiyun		capella,aset-resistance-ohms = <100000>;
96*4882a593Smuzhiyun		/* Trig on both edges - getting close or far away */
97*4882a593Smuzhiyun		interrupts-extended = <&pm8058_gpio 34 IRQ_TYPE_EDGE_BOTH>;
98*4882a593Smuzhiyun		/* MPP05 analog input to the XOADC */
99*4882a593Smuzhiyun		io-channels = <&xoadc 0x00 0x05>;
100*4882a593Smuzhiyun		io-channel-names = "aout";
101*4882a593Smuzhiyun		pinctrl-names = "default";
102*4882a593Smuzhiyun		pinctrl-0 = <&dragon_cm3605_gpios>, <&dragon_cm3605_mpps>;
103*4882a593Smuzhiyun	};
104*4882a593Smuzhiyun
105*4882a593Smuzhiyun	soc {
106*4882a593Smuzhiyun		pinctrl@800000 {
107*4882a593Smuzhiyun			/* eMMMC pins, all 8 data lines connected */
108*4882a593Smuzhiyun			dragon_sdcc1_pins: sdcc1 {
109*4882a593Smuzhiyun				mux {
110*4882a593Smuzhiyun					pins = "gpio159", "gpio160", "gpio161",
111*4882a593Smuzhiyun					     "gpio162", "gpio163", "gpio164",
112*4882a593Smuzhiyun					     "gpio165", "gpio166", "gpio167",
113*4882a593Smuzhiyun					     "gpio168";
114*4882a593Smuzhiyun					     function = "sdc1";
115*4882a593Smuzhiyun				};
116*4882a593Smuzhiyun				clk {
117*4882a593Smuzhiyun					pins = "gpio167"; /* SDC1 CLK */
118*4882a593Smuzhiyun					drive-strength = <16>;
119*4882a593Smuzhiyun					bias-disable;
120*4882a593Smuzhiyun				};
121*4882a593Smuzhiyun				cmd {
122*4882a593Smuzhiyun					pins = "gpio168"; /* SDC1 CMD */
123*4882a593Smuzhiyun					drive-strength = <10>;
124*4882a593Smuzhiyun					bias-pull-up;
125*4882a593Smuzhiyun				};
126*4882a593Smuzhiyun				data {
127*4882a593Smuzhiyun					/* SDC1 D0 to D7 */
128*4882a593Smuzhiyun					pins = "gpio159", "gpio160", "gpio161", "gpio162",
129*4882a593Smuzhiyun					     "gpio163", "gpio164", "gpio165", "gpio166";
130*4882a593Smuzhiyun					drive-strength = <10>;
131*4882a593Smuzhiyun					bias-pull-up;
132*4882a593Smuzhiyun				};
133*4882a593Smuzhiyun			};
134*4882a593Smuzhiyun
135*4882a593Smuzhiyun			/*
136*4882a593Smuzhiyun			 * The SDCC3 pins are hardcoded (non-muxable) but need some pin
137*4882a593Smuzhiyun			 * configuration.
138*4882a593Smuzhiyun			 */
139*4882a593Smuzhiyun			dragon_sdcc3_pins: sdcc3 {
140*4882a593Smuzhiyun				clk {
141*4882a593Smuzhiyun					pins = "sdc3_clk";
142*4882a593Smuzhiyun					drive-strength = <8>;
143*4882a593Smuzhiyun					bias-disable;
144*4882a593Smuzhiyun				};
145*4882a593Smuzhiyun				cmd {
146*4882a593Smuzhiyun					pins = "sdc3_cmd";
147*4882a593Smuzhiyun					drive-strength = <8>;
148*4882a593Smuzhiyun					bias-pull-up;
149*4882a593Smuzhiyun				};
150*4882a593Smuzhiyun				data {
151*4882a593Smuzhiyun					pins = "sdc3_data";
152*4882a593Smuzhiyun					drive-strength = <8>;
153*4882a593Smuzhiyun					bias-pull-up;
154*4882a593Smuzhiyun				};
155*4882a593Smuzhiyun			};
156*4882a593Smuzhiyun
157*4882a593Smuzhiyun			/* Second SD card slot pins */
158*4882a593Smuzhiyun			dragon_sdcc5_pins: sdcc5 {
159*4882a593Smuzhiyun				mux {
160*4882a593Smuzhiyun					pins = "gpio95", "gpio96", "gpio97",
161*4882a593Smuzhiyun					    "gpio98", "gpio99", "gpio100";
162*4882a593Smuzhiyun					function = "sdc5";
163*4882a593Smuzhiyun				};
164*4882a593Smuzhiyun				clk {
165*4882a593Smuzhiyun					pins = "gpio97"; /* SDC5 CLK */
166*4882a593Smuzhiyun					drive-strength = <16>;
167*4882a593Smuzhiyun					bias-disable;
168*4882a593Smuzhiyun				};
169*4882a593Smuzhiyun				cmd {
170*4882a593Smuzhiyun					pins = "gpio95"; /* SDC5 CMD */
171*4882a593Smuzhiyun					drive-strength = <10>;
172*4882a593Smuzhiyun					bias-pull-up;
173*4882a593Smuzhiyun				};
174*4882a593Smuzhiyun				data {
175*4882a593Smuzhiyun					/* SDC5 D0 to D3 */
176*4882a593Smuzhiyun					pins = "gpio96", "gpio98", "gpio99", "gpio100";
177*4882a593Smuzhiyun					drive-strength = <10>;
178*4882a593Smuzhiyun					bias-pull-up;
179*4882a593Smuzhiyun				};
180*4882a593Smuzhiyun			};
181*4882a593Smuzhiyun
182*4882a593Smuzhiyun			dragon_gsbi8_i2c_pins: gsbi8_i2c {
183*4882a593Smuzhiyun				mux {
184*4882a593Smuzhiyun					pins = "gpio64", "gpio65";
185*4882a593Smuzhiyun					function = "gsbi8";
186*4882a593Smuzhiyun				};
187*4882a593Smuzhiyun				pinconf {
188*4882a593Smuzhiyun					pins = "gpio64", "gpio65";
189*4882a593Smuzhiyun					drive-strength = <16>;
190*4882a593Smuzhiyun					/* These have external pull-up 2.2kOhm to 1.8V */
191*4882a593Smuzhiyun					bias-disable;
192*4882a593Smuzhiyun				};
193*4882a593Smuzhiyun			};
194*4882a593Smuzhiyun
195*4882a593Smuzhiyun			dragon_gsbi12_i2c_pins: gsbi12_i2c {
196*4882a593Smuzhiyun				mux {
197*4882a593Smuzhiyun					pins = "gpio115", "gpio116";
198*4882a593Smuzhiyun					function = "gsbi12";
199*4882a593Smuzhiyun				};
200*4882a593Smuzhiyun				pinconf {
201*4882a593Smuzhiyun					pins = "gpio115", "gpio116";
202*4882a593Smuzhiyun					drive-strength = <16>;
203*4882a593Smuzhiyun					/* These have external pull-up 4.7kOhm to 1.8V */
204*4882a593Smuzhiyun					bias-disable;
205*4882a593Smuzhiyun				};
206*4882a593Smuzhiyun			};
207*4882a593Smuzhiyun
208*4882a593Smuzhiyun			/* Primary serial port uart 0 pins */
209*4882a593Smuzhiyun			dragon_gsbi12_serial_pins: gsbi12_serial {
210*4882a593Smuzhiyun				mux {
211*4882a593Smuzhiyun					pins = "gpio117", "gpio118";
212*4882a593Smuzhiyun					function = "gsbi12";
213*4882a593Smuzhiyun				};
214*4882a593Smuzhiyun				tx {
215*4882a593Smuzhiyun					pins = "gpio117";
216*4882a593Smuzhiyun					drive-strength = <8>;
217*4882a593Smuzhiyun					bias-disable;
218*4882a593Smuzhiyun				};
219*4882a593Smuzhiyun				rx {
220*4882a593Smuzhiyun					pins = "gpio118";
221*4882a593Smuzhiyun					drive-strength = <2>;
222*4882a593Smuzhiyun					bias-pull-up;
223*4882a593Smuzhiyun				};
224*4882a593Smuzhiyun			};
225*4882a593Smuzhiyun
226*4882a593Smuzhiyun			dragon_ebi2_pins: ebi2 {
227*4882a593Smuzhiyun				/*
228*4882a593Smuzhiyun				 * Pins used by EBI2 on the Dragonboard, actually only
229*4882a593Smuzhiyun				 * CS2 is used by a real peripheral. CS0 is just
230*4882a593Smuzhiyun				 * routed to a test point.
231*4882a593Smuzhiyun				 */
232*4882a593Smuzhiyun				mux0 {
233*4882a593Smuzhiyun					pins =
234*4882a593Smuzhiyun					    /* "gpio39", CS1A_N this is not good to mux */
235*4882a593Smuzhiyun					    "gpio40", /* CS2A_N */
236*4882a593Smuzhiyun					    "gpio134"; /* CS0_N testpoint TP29 */
237*4882a593Smuzhiyun					function = "ebi2cs";
238*4882a593Smuzhiyun				};
239*4882a593Smuzhiyun				mux1 {
240*4882a593Smuzhiyun					pins =
241*4882a593Smuzhiyun					    /* EBI2_ADDR_7 downto EBI2_ADDR_0 address bus */
242*4882a593Smuzhiyun					    "gpio123", "gpio124", "gpio125", "gpio126",
243*4882a593Smuzhiyun					    "gpio127", "gpio128", "gpio129", "gpio130",
244*4882a593Smuzhiyun					    /* EBI2_DATA_15 downto EBI2_DATA_0 data bus */
245*4882a593Smuzhiyun					    "gpio135", "gpio136", "gpio137", "gpio138",
246*4882a593Smuzhiyun					    "gpio139", "gpio140", "gpio141", "gpio142",
247*4882a593Smuzhiyun					    "gpio143", "gpio144", "gpio145", "gpio146",
248*4882a593Smuzhiyun					    "gpio147", "gpio148", "gpio149", "gpio150",
249*4882a593Smuzhiyun					    "gpio151", /* EBI2_OE_N */
250*4882a593Smuzhiyun					    "gpio153", /* EBI2_ADV */
251*4882a593Smuzhiyun					    "gpio157"; /* EBI2_WE_N */
252*4882a593Smuzhiyun					function = "ebi2";
253*4882a593Smuzhiyun				};
254*4882a593Smuzhiyun			};
255*4882a593Smuzhiyun
256*4882a593Smuzhiyun			/* Interrupt line for the KXSD9 accelerometer */
257*4882a593Smuzhiyun			dragon_kxsd9_gpios: kxsd9 {
258*4882a593Smuzhiyun				irq {
259*4882a593Smuzhiyun					pins = "gpio57"; /* IRQ line */
260*4882a593Smuzhiyun					bias-pull-up;
261*4882a593Smuzhiyun				};
262*4882a593Smuzhiyun			};
263*4882a593Smuzhiyun		};
264*4882a593Smuzhiyun
265*4882a593Smuzhiyun		qcom,ssbi@500000 {
266*4882a593Smuzhiyun			pmic@0 {
267*4882a593Smuzhiyun				keypad@148 {
268*4882a593Smuzhiyun					linux,keymap = <
269*4882a593Smuzhiyun					MATRIX_KEY(0, 0, KEY_MENU)
270*4882a593Smuzhiyun					MATRIX_KEY(0, 2, KEY_1)
271*4882a593Smuzhiyun					MATRIX_KEY(0, 3, KEY_4)
272*4882a593Smuzhiyun					MATRIX_KEY(0, 4, KEY_7)
273*4882a593Smuzhiyun					MATRIX_KEY(1, 0, KEY_UP)
274*4882a593Smuzhiyun					MATRIX_KEY(1, 1, KEY_LEFT)
275*4882a593Smuzhiyun					MATRIX_KEY(1, 2, KEY_DOWN)
276*4882a593Smuzhiyun					MATRIX_KEY(1, 3, KEY_5)
277*4882a593Smuzhiyun					MATRIX_KEY(1, 3, KEY_8)
278*4882a593Smuzhiyun					MATRIX_KEY(2, 0, KEY_HOME)
279*4882a593Smuzhiyun					MATRIX_KEY(2, 1, KEY_REPLY)
280*4882a593Smuzhiyun					MATRIX_KEY(2, 2, KEY_2)
281*4882a593Smuzhiyun					MATRIX_KEY(2, 3, KEY_6)
282*4882a593Smuzhiyun					MATRIX_KEY(3, 0, KEY_VOLUMEUP)
283*4882a593Smuzhiyun					MATRIX_KEY(3, 1, KEY_RIGHT)
284*4882a593Smuzhiyun					MATRIX_KEY(3, 2, KEY_3)
285*4882a593Smuzhiyun					MATRIX_KEY(3, 3, KEY_9)
286*4882a593Smuzhiyun					MATRIX_KEY(3, 4, KEY_SWITCHVIDEOMODE)
287*4882a593Smuzhiyun					MATRIX_KEY(4, 0, KEY_VOLUMEDOWN)
288*4882a593Smuzhiyun					MATRIX_KEY(4, 1, KEY_BACK)
289*4882a593Smuzhiyun					MATRIX_KEY(4, 2, KEY_CAMERA)
290*4882a593Smuzhiyun					MATRIX_KEY(4, 3, KEY_KBDILLUMTOGGLE)
291*4882a593Smuzhiyun					>;
292*4882a593Smuzhiyun					keypad,num-rows = <6>;
293*4882a593Smuzhiyun					keypad,num-columns = <5>;
294*4882a593Smuzhiyun				};
295*4882a593Smuzhiyun
296*4882a593Smuzhiyun				gpio@150 {
297*4882a593Smuzhiyun					dragon_ethernet_gpios: ethernet-gpios {
298*4882a593Smuzhiyun						pinconf {
299*4882a593Smuzhiyun							pins = "gpio7";
300*4882a593Smuzhiyun							function = "normal";
301*4882a593Smuzhiyun							input-enable;
302*4882a593Smuzhiyun							bias-disable;
303*4882a593Smuzhiyun							power-source = <PM8058_GPIO_S3>;
304*4882a593Smuzhiyun						};
305*4882a593Smuzhiyun					};
306*4882a593Smuzhiyun					dragon_bmp085_gpios: bmp085-gpios {
307*4882a593Smuzhiyun						pinconf {
308*4882a593Smuzhiyun							pins = "gpio16";
309*4882a593Smuzhiyun							function = "normal";
310*4882a593Smuzhiyun							input-enable;
311*4882a593Smuzhiyun							bias-disable;
312*4882a593Smuzhiyun							power-source = <PM8058_GPIO_S3>;
313*4882a593Smuzhiyun						};
314*4882a593Smuzhiyun					};
315*4882a593Smuzhiyun					dragon_mpu3050_gpios: mpu3050-gpios {
316*4882a593Smuzhiyun						pinconf {
317*4882a593Smuzhiyun							pins = "gpio17";
318*4882a593Smuzhiyun							function = "normal";
319*4882a593Smuzhiyun							input-enable;
320*4882a593Smuzhiyun							bias-disable;
321*4882a593Smuzhiyun							power-source = <PM8058_GPIO_S3>;
322*4882a593Smuzhiyun						};
323*4882a593Smuzhiyun					};
324*4882a593Smuzhiyun					dragon_sdcc3_gpios: sdcc3-gpios {
325*4882a593Smuzhiyun						pinconf {
326*4882a593Smuzhiyun							pins = "gpio22";
327*4882a593Smuzhiyun							function = "normal";
328*4882a593Smuzhiyun							input-enable;
329*4882a593Smuzhiyun							bias-disable;
330*4882a593Smuzhiyun							power-source = <PM8058_GPIO_S3>;
331*4882a593Smuzhiyun						};
332*4882a593Smuzhiyun					};
333*4882a593Smuzhiyun					dragon_sdcc5_gpios: sdcc5-gpios {
334*4882a593Smuzhiyun						pinconf {
335*4882a593Smuzhiyun							pins = "gpio26";
336*4882a593Smuzhiyun							function = "normal";
337*4882a593Smuzhiyun							input-enable;
338*4882a593Smuzhiyun							bias-pull-up;
339*4882a593Smuzhiyun							qcom,pull-up-strength = <PMIC_GPIO_PULL_UP_30>;
340*4882a593Smuzhiyun							power-source = <PM8058_GPIO_S3>;
341*4882a593Smuzhiyun						};
342*4882a593Smuzhiyun					};
343*4882a593Smuzhiyun					dragon_ak8975_gpios: ak8975-gpios {
344*4882a593Smuzhiyun						pinconf {
345*4882a593Smuzhiyun							pins = "gpio33";
346*4882a593Smuzhiyun							function = "normal";
347*4882a593Smuzhiyun							input-enable;
348*4882a593Smuzhiyun							bias-disable;
349*4882a593Smuzhiyun							power-source = <PM8058_GPIO_S3>;
350*4882a593Smuzhiyun						};
351*4882a593Smuzhiyun					};
352*4882a593Smuzhiyun					dragon_cm3605_gpios: cm3605-gpios {
353*4882a593Smuzhiyun						/* Pin 34 connected to the proxy IRQ */
354*4882a593Smuzhiyun						pinconf_gpio34 {
355*4882a593Smuzhiyun							pins = "gpio34";
356*4882a593Smuzhiyun							function = "normal";
357*4882a593Smuzhiyun							input-enable;
358*4882a593Smuzhiyun							bias-disable;
359*4882a593Smuzhiyun							power-source = <PM8058_GPIO_S3>;
360*4882a593Smuzhiyun						};
361*4882a593Smuzhiyun						/* Pin 35 connected to ASET */
362*4882a593Smuzhiyun						pinconf_gpio35 {
363*4882a593Smuzhiyun							pins = "gpio35";
364*4882a593Smuzhiyun							function = "normal";
365*4882a593Smuzhiyun							output-high;
366*4882a593Smuzhiyun							bias-disable;
367*4882a593Smuzhiyun							power-source = <PM8058_GPIO_S3>;
368*4882a593Smuzhiyun						};
369*4882a593Smuzhiyun					};
370*4882a593Smuzhiyun					dragon_veth_gpios: veth-gpios {
371*4882a593Smuzhiyun						pinconf {
372*4882a593Smuzhiyun							pins = "gpio40";
373*4882a593Smuzhiyun							function = "normal";
374*4882a593Smuzhiyun							bias-disable;
375*4882a593Smuzhiyun							drive-push-pull;
376*4882a593Smuzhiyun						};
377*4882a593Smuzhiyun					};
378*4882a593Smuzhiyun				};
379*4882a593Smuzhiyun
380*4882a593Smuzhiyun				mpps@50 {
381*4882a593Smuzhiyun					dragon_cm3605_mpps: cm3605-mpps {
382*4882a593Smuzhiyun						pinconf {
383*4882a593Smuzhiyun							pins = "mpp5";
384*4882a593Smuzhiyun							function = "analog";
385*4882a593Smuzhiyun							input-enable;
386*4882a593Smuzhiyun							bias-high-impedance;
387*4882a593Smuzhiyun							/* Let's use channel 5 */
388*4882a593Smuzhiyun							qcom,amux-route = <PMIC_MPP_AMUX_ROUTE_CH5>;
389*4882a593Smuzhiyun							power-source = <PM8058_GPIO_S3>;
390*4882a593Smuzhiyun						};
391*4882a593Smuzhiyun					};
392*4882a593Smuzhiyun				};
393*4882a593Smuzhiyun
394*4882a593Smuzhiyun				xoadc@197 {
395*4882a593Smuzhiyun					/* Reference voltage 2.2 V */
396*4882a593Smuzhiyun					xoadc-ref-supply = <&pm8058_l18>;
397*4882a593Smuzhiyun
398*4882a593Smuzhiyun					/* Board-specific channels */
399*4882a593Smuzhiyun					mpp5@5 {
400*4882a593Smuzhiyun						/* Connected to AOUT of ALS sensor */
401*4882a593Smuzhiyun						reg = <0x00 0x05>;
402*4882a593Smuzhiyun					};
403*4882a593Smuzhiyun					mpp6@6 {
404*4882a593Smuzhiyun						/* Connected to test point TP43 */
405*4882a593Smuzhiyun						reg = <0x00 0x06>;
406*4882a593Smuzhiyun					};
407*4882a593Smuzhiyun					mpp7@7 {
408*4882a593Smuzhiyun						/* Connected to battery thermistor */
409*4882a593Smuzhiyun						reg = <0x00 0x07>;
410*4882a593Smuzhiyun					};
411*4882a593Smuzhiyun					mpp8@8 {
412*4882a593Smuzhiyun						/* Connected to battery ID detector */
413*4882a593Smuzhiyun						reg = <0x00 0x08>;
414*4882a593Smuzhiyun					};
415*4882a593Smuzhiyun					mpp9@9 {
416*4882a593Smuzhiyun						/* Connected to XO thermistor */
417*4882a593Smuzhiyun						reg = <0x00 0x09>;
418*4882a593Smuzhiyun					};
419*4882a593Smuzhiyun				};
420*4882a593Smuzhiyun
421*4882a593Smuzhiyun				led@48 {
422*4882a593Smuzhiyun					/*
423*4882a593Smuzhiyun					 * The keypad LED @0x48 is routed to
424*4882a593Smuzhiyun					 * the sensor board where it is
425*4882a593Smuzhiyun					 * connected to an infrared LED
426*4882a593Smuzhiyun					 * SFH4650 (60mW, @850nm) next to the
427*4882a593Smuzhiyun					 * ambient light and proximity sensor
428*4882a593Smuzhiyun					 * Capella Microsystems CM3605.
429*4882a593Smuzhiyun					 */
430*4882a593Smuzhiyun					compatible = "qcom,pm8058-keypad-led";
431*4882a593Smuzhiyun					reg = <0x48>;
432*4882a593Smuzhiyun					label = "pm8058:infrared:proximitysensor";
433*4882a593Smuzhiyun					default-state = "off";
434*4882a593Smuzhiyun					linux,default-trigger = "cm3605";
435*4882a593Smuzhiyun				};
436*4882a593Smuzhiyun				led@131 {
437*4882a593Smuzhiyun					compatible = "qcom,pm8058-led";
438*4882a593Smuzhiyun					reg = <0x131>;
439*4882a593Smuzhiyun					label = "pm8058:red";
440*4882a593Smuzhiyun					default-state = "off";
441*4882a593Smuzhiyun				};
442*4882a593Smuzhiyun				led@132 {
443*4882a593Smuzhiyun					/*
444*4882a593Smuzhiyun					 * This is actually green too on my
445*4882a593Smuzhiyun					 * board, but documented as yellow.
446*4882a593Smuzhiyun					 */
447*4882a593Smuzhiyun					compatible = "qcom,pm8058-led";
448*4882a593Smuzhiyun					reg = <0x132>;
449*4882a593Smuzhiyun					label = "pm8058:yellow";
450*4882a593Smuzhiyun					default-state = "off";
451*4882a593Smuzhiyun					linux,default-trigger = "mmc0";
452*4882a593Smuzhiyun				};
453*4882a593Smuzhiyun				led@133 {
454*4882a593Smuzhiyun					compatible = "qcom,pm8058-led";
455*4882a593Smuzhiyun					reg = <0x133>;
456*4882a593Smuzhiyun					label = "pm8058:green";
457*4882a593Smuzhiyun					default-state = "on";
458*4882a593Smuzhiyun					linux,default-trigger = "heartbeat";
459*4882a593Smuzhiyun				};
460*4882a593Smuzhiyun			};
461*4882a593Smuzhiyun		};
462*4882a593Smuzhiyun
463*4882a593Smuzhiyun		gsbi@19800000 {
464*4882a593Smuzhiyun			status = "ok";
465*4882a593Smuzhiyun			qcom,mode = <GSBI_PROT_I2C>;
466*4882a593Smuzhiyun
467*4882a593Smuzhiyun			i2c@19880000 {
468*4882a593Smuzhiyun				status = "ok";
469*4882a593Smuzhiyun				pinctrl-names = "default";
470*4882a593Smuzhiyun				pinctrl-0 = <&dragon_gsbi8_i2c_pins>;
471*4882a593Smuzhiyun
472*4882a593Smuzhiyun				eeprom@52 {
473*4882a593Smuzhiyun					/* A 16KiB Platform ID EEPROM on the CPU carrier board */
474*4882a593Smuzhiyun					compatible = "atmel,24c128";
475*4882a593Smuzhiyun					reg = <0x52>;
476*4882a593Smuzhiyun					vcc-supply = <&pm8058_s3>;
477*4882a593Smuzhiyun					pagesize = <64>;
478*4882a593Smuzhiyun				};
479*4882a593Smuzhiyun				wm8903: wm8903@1a {
480*4882a593Smuzhiyun					/* This Woolfson Micro device has an unrouted interrupt line */
481*4882a593Smuzhiyun					compatible = "wlf,wm8903";
482*4882a593Smuzhiyun					reg = <0x1a>;
483*4882a593Smuzhiyun
484*4882a593Smuzhiyun					AVDD-supply = <&pm8058_l16>;
485*4882a593Smuzhiyun					CPVDD-supply = <&pm8058_l16>;
486*4882a593Smuzhiyun					DBVDD-supply = <&pm8058_s3>;
487*4882a593Smuzhiyun					DCVDD-supply = <&pm8058_l0>;
488*4882a593Smuzhiyun
489*4882a593Smuzhiyun					gpio-controller;
490*4882a593Smuzhiyun					#gpio-cells = <2>;
491*4882a593Smuzhiyun
492*4882a593Smuzhiyun					micdet-cfg = <0>;
493*4882a593Smuzhiyun					micdet-delay = <100>;
494*4882a593Smuzhiyun					gpio-cfg = <0xffffffff 0xffffffff 0 0xffffffff 0xffffffff>;
495*4882a593Smuzhiyun				};
496*4882a593Smuzhiyun			};
497*4882a593Smuzhiyun		};
498*4882a593Smuzhiyun
499*4882a593Smuzhiyun		gsbi@19c00000 {
500*4882a593Smuzhiyun			status = "ok";
501*4882a593Smuzhiyun			qcom,mode = <GSBI_PROT_I2C_UART>;
502*4882a593Smuzhiyun
503*4882a593Smuzhiyun			serial@19c40000 {
504*4882a593Smuzhiyun				status = "ok";
505*4882a593Smuzhiyun				pinctrl-names = "default";
506*4882a593Smuzhiyun				pinctrl-0 = <&dragon_gsbi12_serial_pins>;
507*4882a593Smuzhiyun			};
508*4882a593Smuzhiyun
509*4882a593Smuzhiyun			i2c@19c80000 {
510*4882a593Smuzhiyun				status = "ok";
511*4882a593Smuzhiyun				pinctrl-names = "default";
512*4882a593Smuzhiyun				pinctrl-0 = <&dragon_gsbi12_i2c_pins>;
513*4882a593Smuzhiyun
514*4882a593Smuzhiyun				ak8975@c {
515*4882a593Smuzhiyun					compatible = "asahi-kasei,ak8975";
516*4882a593Smuzhiyun					reg = <0x0c>;
517*4882a593Smuzhiyun					interrupt-parent = <&pm8058_gpio>;
518*4882a593Smuzhiyun					interrupts = <33 IRQ_TYPE_EDGE_RISING>;
519*4882a593Smuzhiyun					pinctrl-names = "default";
520*4882a593Smuzhiyun					pinctrl-0 = <&dragon_ak8975_gpios>;
521*4882a593Smuzhiyun					vid-supply = <&pm8058_lvs0>; // 1.8V
522*4882a593Smuzhiyun					vdd-supply = <&pm8058_l14>; // 2.85V
523*4882a593Smuzhiyun				};
524*4882a593Smuzhiyun				bmp085@77 {
525*4882a593Smuzhiyun					compatible = "bosch,bmp085";
526*4882a593Smuzhiyun					reg = <0x77>;
527*4882a593Smuzhiyun					interrupt-parent = <&pm8058_gpio>;
528*4882a593Smuzhiyun					interrupts = <16 IRQ_TYPE_EDGE_RISING>;
529*4882a593Smuzhiyun					reset-gpios = <&tlmm 86 GPIO_ACTIVE_LOW>;
530*4882a593Smuzhiyun					pinctrl-names = "default";
531*4882a593Smuzhiyun					pinctrl-0 = <&dragon_bmp085_gpios>;
532*4882a593Smuzhiyun					vddd-supply = <&pm8058_lvs0>; // 1.8V
533*4882a593Smuzhiyun					vdda-supply = <&pm8058_l14>; // 2.85V
534*4882a593Smuzhiyun				};
535*4882a593Smuzhiyun				mpu3050@68 {
536*4882a593Smuzhiyun					compatible = "invensense,mpu3050";
537*4882a593Smuzhiyun					reg = <0x68>;
538*4882a593Smuzhiyun					/*
539*4882a593Smuzhiyun					 * GPIO17 is pulled high by a 10k
540*4882a593Smuzhiyun					 * resistor to VLOGIC so needs to be
541*4882a593Smuzhiyun					 * active low/falling edge.
542*4882a593Smuzhiyun					 */
543*4882a593Smuzhiyun					interrupts-extended = <&pm8058_gpio 17 IRQ_TYPE_EDGE_FALLING>;
544*4882a593Smuzhiyun					pinctrl-names = "default";
545*4882a593Smuzhiyun					pinctrl-0 = <&dragon_mpu3050_gpios>;
546*4882a593Smuzhiyun					vlogic-supply = <&pm8058_lvs0>; // 1.8V
547*4882a593Smuzhiyun					vdd-supply = <&pm8058_l14>; // 2.85V
548*4882a593Smuzhiyun
549*4882a593Smuzhiyun					/*
550*4882a593Smuzhiyun					 * The MPU-3050 acts as a hub for the
551*4882a593Smuzhiyun					 * accelerometer.
552*4882a593Smuzhiyun					 */
553*4882a593Smuzhiyun					i2c-gate {
554*4882a593Smuzhiyun						#address-cells = <1>;
555*4882a593Smuzhiyun						#size-cells = <0>;
556*4882a593Smuzhiyun
557*4882a593Smuzhiyun						kxsd9@18 {
558*4882a593Smuzhiyun							compatible = "kionix,kxsd9";
559*4882a593Smuzhiyun							reg = <0x18>;
560*4882a593Smuzhiyun							interrupt-parent = <&tlmm>;
561*4882a593Smuzhiyun							interrupts = <57 IRQ_TYPE_EDGE_FALLING>;
562*4882a593Smuzhiyun							pinctrl-names = "default";
563*4882a593Smuzhiyun							pinctrl-0 = <&dragon_kxsd9_gpios>;
564*4882a593Smuzhiyun							iovdd-supply = <&pm8058_lvs0>; // 1.8V
565*4882a593Smuzhiyun							vdd-supply = <&pm8058_l14>; // 2.85V
566*4882a593Smuzhiyun						};
567*4882a593Smuzhiyun					};
568*4882a593Smuzhiyun				};
569*4882a593Smuzhiyun			};
570*4882a593Smuzhiyun		};
571*4882a593Smuzhiyun
572*4882a593Smuzhiyun		external-bus@1a100000 {
573*4882a593Smuzhiyun			/* The EBI2 will instantiate first, then populate its children */
574*4882a593Smuzhiyun			status = "ok";
575*4882a593Smuzhiyun			pinctrl-names = "default";
576*4882a593Smuzhiyun			pinctrl-0 = <&dragon_ebi2_pins>;
577*4882a593Smuzhiyun
578*4882a593Smuzhiyun			/*
579*4882a593Smuzhiyun			 * An on-board SMSC LAN9221 chip for "debug ethernet",
580*4882a593Smuzhiyun			 * which is actually just an ordinary ethernet on the
581*4882a593Smuzhiyun			 * EBI2. This has a 25MHz chrystal next to it, so no
582*4882a593Smuzhiyun			 * clocking is needed.
583*4882a593Smuzhiyun			 */
584*4882a593Smuzhiyun			ethernet-ebi2@2,0 {
585*4882a593Smuzhiyun				compatible = "smsc,lan9221", "smsc,lan9115";
586*4882a593Smuzhiyun				reg = <2 0x0 0x100>;
587*4882a593Smuzhiyun				/*
588*4882a593Smuzhiyun				 * The second interrupt is the PME interrupt
589*4882a593Smuzhiyun				 * for network wakeup, connected to the TLMM.
590*4882a593Smuzhiyun				 */
591*4882a593Smuzhiyun				interrupts-extended = <&pm8058_gpio 7 IRQ_TYPE_EDGE_FALLING>,
592*4882a593Smuzhiyun						    <&tlmm 29 IRQ_TYPE_EDGE_RISING>;
593*4882a593Smuzhiyun				reset-gpios = <&tlmm 30 GPIO_ACTIVE_LOW>;
594*4882a593Smuzhiyun				vdd33a-supply = <&dragon_veth>;
595*4882a593Smuzhiyun				vddvario-supply = <&dragon_vario>;
596*4882a593Smuzhiyun				pinctrl-names = "default";
597*4882a593Smuzhiyun				pinctrl-0 = <&dragon_ethernet_gpios>;
598*4882a593Smuzhiyun				phy-mode = "mii";
599*4882a593Smuzhiyun				reg-io-width = <2>;
600*4882a593Smuzhiyun				smsc,force-external-phy;
601*4882a593Smuzhiyun				/* IRQ on edge falling = active low */
602*4882a593Smuzhiyun				smsc,irq-active-low;
603*4882a593Smuzhiyun				smsc,irq-push-pull;
604*4882a593Smuzhiyun
605*4882a593Smuzhiyun				/*
606*4882a593Smuzhiyun				 * SLOW chipselect config
607*4882a593Smuzhiyun				 * Delay 9 cycles (140ns@64MHz) between SMSC
608*4882a593Smuzhiyun				 * LAN9221 Ethernet controller reads and writes
609*4882a593Smuzhiyun				 * on CS2.
610*4882a593Smuzhiyun				 */
611*4882a593Smuzhiyun				qcom,xmem-recovery-cycles = <0>;
612*4882a593Smuzhiyun				qcom,xmem-write-hold-cycles = <3>;
613*4882a593Smuzhiyun				qcom,xmem-write-delta-cycles = <31>;
614*4882a593Smuzhiyun				qcom,xmem-read-delta-cycles = <28>;
615*4882a593Smuzhiyun				qcom,xmem-write-wait-cycles = <9>;
616*4882a593Smuzhiyun				qcom,xmem-read-wait-cycles = <9>;
617*4882a593Smuzhiyun			};
618*4882a593Smuzhiyun		};
619*4882a593Smuzhiyun
620*4882a593Smuzhiyun		rpm@104000 {
621*4882a593Smuzhiyun			/*
622*4882a593Smuzhiyun			 * Set up of the PMIC RPM regulators for this board
623*4882a593Smuzhiyun			 * PM8901 supplies "preliminary regulators" whatever
624*4882a593Smuzhiyun			 * that means
625*4882a593Smuzhiyun			 */
626*4882a593Smuzhiyun			pm8901-regulators {
627*4882a593Smuzhiyun				vdd_l0-supply = <&pm8901_s4>;
628*4882a593Smuzhiyun				vdd_l1-supply = <&vph>;
629*4882a593Smuzhiyun				vdd_l2-supply = <&vph>;
630*4882a593Smuzhiyun				vdd_l3-supply = <&vph>;
631*4882a593Smuzhiyun				vdd_l4-supply = <&vph>;
632*4882a593Smuzhiyun				vdd_l5-supply = <&vph>;
633*4882a593Smuzhiyun				vdd_l6-supply = <&vph>;
634*4882a593Smuzhiyun				/* vdd_s0-supply, vdd_s1-supply: SAW regulators */
635*4882a593Smuzhiyun				vdd_s2-supply = <&vph>;
636*4882a593Smuzhiyun				vdd_s3-supply = <&vph>;
637*4882a593Smuzhiyun				vdd_s4-supply = <&vph>;
638*4882a593Smuzhiyun				lvs0_in-supply = <&pm8058_s3>;
639*4882a593Smuzhiyun				lvs1_in-supply = <&pm8901_s4>;
640*4882a593Smuzhiyun				lvs2_in-supply = <&pm8058_l0>;
641*4882a593Smuzhiyun				lvs3_in-supply = <&pm8058_s2>;
642*4882a593Smuzhiyun				mvs_in-supply = <&pm8058_s3>;
643*4882a593Smuzhiyun
644*4882a593Smuzhiyun				l0 {
645*4882a593Smuzhiyun					regulator-min-microvolt = <1200000>;
646*4882a593Smuzhiyun					regulator-max-microvolt = <1200000>;
647*4882a593Smuzhiyun					bias-pull-down;
648*4882a593Smuzhiyun				};
649*4882a593Smuzhiyun				l1 {
650*4882a593Smuzhiyun					regulator-min-microvolt = <3300000>;
651*4882a593Smuzhiyun					regulator-max-microvolt = <3300000>;
652*4882a593Smuzhiyun					bias-pull-down;
653*4882a593Smuzhiyun				};
654*4882a593Smuzhiyun				l2 {
655*4882a593Smuzhiyun					regulator-min-microvolt = <2850000>;
656*4882a593Smuzhiyun					regulator-max-microvolt = <3300000>;
657*4882a593Smuzhiyun					bias-pull-down;
658*4882a593Smuzhiyun				};
659*4882a593Smuzhiyun				l3 {
660*4882a593Smuzhiyun					regulator-min-microvolt = <3300000>;
661*4882a593Smuzhiyun					regulator-max-microvolt = <3300000>;
662*4882a593Smuzhiyun					bias-pull-down;
663*4882a593Smuzhiyun				};
664*4882a593Smuzhiyun				l4 {
665*4882a593Smuzhiyun					regulator-min-microvolt = <2600000>;
666*4882a593Smuzhiyun					regulator-max-microvolt = <2600000>;
667*4882a593Smuzhiyun					bias-pull-down;
668*4882a593Smuzhiyun				};
669*4882a593Smuzhiyun				l5 {
670*4882a593Smuzhiyun					regulator-min-microvolt = <2850000>;
671*4882a593Smuzhiyun					regulator-max-microvolt = <2850000>;
672*4882a593Smuzhiyun					bias-pull-down;
673*4882a593Smuzhiyun				};
674*4882a593Smuzhiyun				l6 {
675*4882a593Smuzhiyun					regulator-min-microvolt = <2200000>;
676*4882a593Smuzhiyun					regulator-max-microvolt = <2200000>;
677*4882a593Smuzhiyun					bias-pull-down;
678*4882a593Smuzhiyun				};
679*4882a593Smuzhiyun
680*4882a593Smuzhiyun				/* s0 and s1 are SAW regulators controlled over SPM */
681*4882a593Smuzhiyun				s2 {
682*4882a593Smuzhiyun					regulator-min-microvolt = <1300000>;
683*4882a593Smuzhiyun					regulator-max-microvolt = <1300000>;
684*4882a593Smuzhiyun					qcom,switch-mode-frequency = <1600000>;
685*4882a593Smuzhiyun					bias-pull-down;
686*4882a593Smuzhiyun				};
687*4882a593Smuzhiyun				s3 {
688*4882a593Smuzhiyun					regulator-min-microvolt = <1100000>;
689*4882a593Smuzhiyun					regulator-max-microvolt = <1100000>;
690*4882a593Smuzhiyun					qcom,switch-mode-frequency = <1600000>;
691*4882a593Smuzhiyun					bias-pull-down;
692*4882a593Smuzhiyun				};
693*4882a593Smuzhiyun				s4 {
694*4882a593Smuzhiyun					regulator-min-microvolt = <1225000>;
695*4882a593Smuzhiyun					regulator-max-microvolt = <1225000>;
696*4882a593Smuzhiyun					qcom,switch-mode-frequency = <1600000>;
697*4882a593Smuzhiyun					bias-pull-down;
698*4882a593Smuzhiyun				};
699*4882a593Smuzhiyun
700*4882a593Smuzhiyun				/* LVS0 thru 3 and mvs0 are just switches */
701*4882a593Smuzhiyun				lvs0 {
702*4882a593Smuzhiyun					regulator-always-on;
703*4882a593Smuzhiyun				};
704*4882a593Smuzhiyun				lvs1 { };
705*4882a593Smuzhiyun				lvs2 { };
706*4882a593Smuzhiyun				lvs3 { };
707*4882a593Smuzhiyun				mvs0 {};
708*4882a593Smuzhiyun
709*4882a593Smuzhiyun			};
710*4882a593Smuzhiyun
711*4882a593Smuzhiyun			pm8058-regulators {
712*4882a593Smuzhiyun				vdd_l0_l1_lvs-supply = <&pm8058_s3>;
713*4882a593Smuzhiyun				vdd_l2_l11_l12-supply = <&vph>;
714*4882a593Smuzhiyun				vdd_l3_l4_l5-supply = <&vph>;
715*4882a593Smuzhiyun				vdd_l6_l7-supply = <&vph>;
716*4882a593Smuzhiyun				vdd_l8-supply = <&vph>;
717*4882a593Smuzhiyun				vdd_l9-supply = <&vph>;
718*4882a593Smuzhiyun				vdd_l10-supply = <&vph>;
719*4882a593Smuzhiyun				vdd_l13_l16-supply = <&pm8058_s4>;
720*4882a593Smuzhiyun				vdd_l14_l15-supply = <&vph>;
721*4882a593Smuzhiyun				vdd_l17_l18-supply = <&vph>;
722*4882a593Smuzhiyun				vdd_l19_l20-supply = <&vph>;
723*4882a593Smuzhiyun				vdd_l21-supply = <&pm8058_s3>;
724*4882a593Smuzhiyun				vdd_l22-supply = <&pm8058_s3>;
725*4882a593Smuzhiyun				vdd_l23_l24_l25-supply = <&pm8058_s3>;
726*4882a593Smuzhiyun				vdd_s0-supply = <&vph>;
727*4882a593Smuzhiyun				vdd_s1-supply = <&vph>;
728*4882a593Smuzhiyun				vdd_s2-supply = <&vph>;
729*4882a593Smuzhiyun				vdd_s3-supply = <&vph>;
730*4882a593Smuzhiyun				vdd_s4-supply = <&vph>;
731*4882a593Smuzhiyun				vdd_ncp-supply = <&vph>;
732*4882a593Smuzhiyun
733*4882a593Smuzhiyun				l0 {
734*4882a593Smuzhiyun					regulator-min-microvolt = <1200000>;
735*4882a593Smuzhiyun					regulator-max-microvolt = <1200000>;
736*4882a593Smuzhiyun					bias-pull-down;
737*4882a593Smuzhiyun				};
738*4882a593Smuzhiyun				l1 {
739*4882a593Smuzhiyun					regulator-min-microvolt = <1200000>;
740*4882a593Smuzhiyun					regulator-max-microvolt = <1200000>;
741*4882a593Smuzhiyun					bias-pull-down;
742*4882a593Smuzhiyun				};
743*4882a593Smuzhiyun				l2 {
744*4882a593Smuzhiyun					regulator-min-microvolt = <1800000>;
745*4882a593Smuzhiyun					regulator-max-microvolt = <2600000>;
746*4882a593Smuzhiyun					bias-pull-down;
747*4882a593Smuzhiyun				};
748*4882a593Smuzhiyun				l3 {
749*4882a593Smuzhiyun					regulator-min-microvolt = <1800000>;
750*4882a593Smuzhiyun					regulator-max-microvolt = <1800000>;
751*4882a593Smuzhiyun					bias-pull-down;
752*4882a593Smuzhiyun				};
753*4882a593Smuzhiyun				l4 {
754*4882a593Smuzhiyun					regulator-min-microvolt = <2850000>;
755*4882a593Smuzhiyun					regulator-max-microvolt = <2850000>;
756*4882a593Smuzhiyun					bias-pull-down;
757*4882a593Smuzhiyun				};
758*4882a593Smuzhiyun				l5 {
759*4882a593Smuzhiyun					regulator-min-microvolt = <2850000>;
760*4882a593Smuzhiyun					regulator-max-microvolt = <2850000>;
761*4882a593Smuzhiyun					bias-pull-down;
762*4882a593Smuzhiyun				};
763*4882a593Smuzhiyun				l6 {
764*4882a593Smuzhiyun					regulator-min-microvolt = <3000000>;
765*4882a593Smuzhiyun					regulator-max-microvolt = <3600000>;
766*4882a593Smuzhiyun					bias-pull-down;
767*4882a593Smuzhiyun				};
768*4882a593Smuzhiyun				l7 {
769*4882a593Smuzhiyun					regulator-min-microvolt = <1800000>;
770*4882a593Smuzhiyun					regulator-max-microvolt = <1800000>;
771*4882a593Smuzhiyun					bias-pull-down;
772*4882a593Smuzhiyun				};
773*4882a593Smuzhiyun				l8 {
774*4882a593Smuzhiyun					regulator-min-microvolt = <2900000>;
775*4882a593Smuzhiyun					regulator-max-microvolt = <3050000>;
776*4882a593Smuzhiyun					bias-pull-down;
777*4882a593Smuzhiyun				};
778*4882a593Smuzhiyun				l9 {
779*4882a593Smuzhiyun					regulator-min-microvolt = <1800000>;
780*4882a593Smuzhiyun					regulator-max-microvolt = <1800000>;
781*4882a593Smuzhiyun					bias-pull-down;
782*4882a593Smuzhiyun				};
783*4882a593Smuzhiyun				l10 {
784*4882a593Smuzhiyun					regulator-min-microvolt = <2600000>;
785*4882a593Smuzhiyun					regulator-max-microvolt = <2600000>;
786*4882a593Smuzhiyun					bias-pull-down;
787*4882a593Smuzhiyun				};
788*4882a593Smuzhiyun				l11 {
789*4882a593Smuzhiyun					regulator-min-microvolt = <1500000>;
790*4882a593Smuzhiyun					regulator-max-microvolt = <1500000>;
791*4882a593Smuzhiyun					bias-pull-down;
792*4882a593Smuzhiyun				};
793*4882a593Smuzhiyun				l12 {
794*4882a593Smuzhiyun					regulator-min-microvolt = <2900000>;
795*4882a593Smuzhiyun					regulator-max-microvolt = <2900000>;
796*4882a593Smuzhiyun					bias-pull-down;
797*4882a593Smuzhiyun				};
798*4882a593Smuzhiyun				l13 {
799*4882a593Smuzhiyun					regulator-min-microvolt = <2050000>;
800*4882a593Smuzhiyun					regulator-max-microvolt = <2050000>;
801*4882a593Smuzhiyun					bias-pull-down;
802*4882a593Smuzhiyun				};
803*4882a593Smuzhiyun				l14 {
804*4882a593Smuzhiyun					regulator-min-microvolt = <2850000>;
805*4882a593Smuzhiyun					regulator-max-microvolt = <2850000>;
806*4882a593Smuzhiyun				};
807*4882a593Smuzhiyun				l15 {
808*4882a593Smuzhiyun					regulator-min-microvolt = <2850000>;
809*4882a593Smuzhiyun					regulator-max-microvolt = <2850000>;
810*4882a593Smuzhiyun					bias-pull-down;
811*4882a593Smuzhiyun				};
812*4882a593Smuzhiyun				l16 {
813*4882a593Smuzhiyun					regulator-min-microvolt = <1800000>;
814*4882a593Smuzhiyun					regulator-max-microvolt = <1800000>;
815*4882a593Smuzhiyun					bias-pull-down;
816*4882a593Smuzhiyun					regulator-always-on;
817*4882a593Smuzhiyun				};
818*4882a593Smuzhiyun				l17 {
819*4882a593Smuzhiyun					// 1.5V according to schematic
820*4882a593Smuzhiyun					regulator-min-microvolt = <2600000>;
821*4882a593Smuzhiyun					regulator-max-microvolt = <2600000>;
822*4882a593Smuzhiyun					bias-pull-down;
823*4882a593Smuzhiyun				};
824*4882a593Smuzhiyun				l18 {
825*4882a593Smuzhiyun					regulator-min-microvolt = <2200000>;
826*4882a593Smuzhiyun					regulator-max-microvolt = <2200000>;
827*4882a593Smuzhiyun					bias-pull-down;
828*4882a593Smuzhiyun				};
829*4882a593Smuzhiyun				l19 {
830*4882a593Smuzhiyun					regulator-min-microvolt = <2500000>;
831*4882a593Smuzhiyun					regulator-max-microvolt = <2500000>;
832*4882a593Smuzhiyun					bias-pull-down;
833*4882a593Smuzhiyun				};
834*4882a593Smuzhiyun				l20 {
835*4882a593Smuzhiyun					regulator-min-microvolt = <1800000>;
836*4882a593Smuzhiyun					regulator-max-microvolt = <1800000>;
837*4882a593Smuzhiyun					bias-pull-down;
838*4882a593Smuzhiyun				};
839*4882a593Smuzhiyun				l21 {
840*4882a593Smuzhiyun					// 1.1 V according to schematic
841*4882a593Smuzhiyun					regulator-min-microvolt = <1200000>;
842*4882a593Smuzhiyun					regulator-max-microvolt = <1200000>;
843*4882a593Smuzhiyun					bias-pull-down;
844*4882a593Smuzhiyun					regulator-always-on;
845*4882a593Smuzhiyun				};
846*4882a593Smuzhiyun				l22 {
847*4882a593Smuzhiyun					// 1.2 V according to schematic
848*4882a593Smuzhiyun					regulator-min-microvolt = <1150000>;
849*4882a593Smuzhiyun					regulator-max-microvolt = <1150000>;
850*4882a593Smuzhiyun					bias-pull-down;
851*4882a593Smuzhiyun				};
852*4882a593Smuzhiyun				l23 {
853*4882a593Smuzhiyun					// Unused
854*4882a593Smuzhiyun					regulator-min-microvolt = <1200000>;
855*4882a593Smuzhiyun					regulator-max-microvolt = <1200000>;
856*4882a593Smuzhiyun					bias-pull-down;
857*4882a593Smuzhiyun				};
858*4882a593Smuzhiyun				l24 {
859*4882a593Smuzhiyun					// Unused
860*4882a593Smuzhiyun					regulator-min-microvolt = <1200000>;
861*4882a593Smuzhiyun					regulator-max-microvolt = <1200000>;
862*4882a593Smuzhiyun					bias-pull-down;
863*4882a593Smuzhiyun				};
864*4882a593Smuzhiyun				l25 {
865*4882a593Smuzhiyun					regulator-min-microvolt = <1200000>;
866*4882a593Smuzhiyun					regulator-max-microvolt = <1200000>;
867*4882a593Smuzhiyun					bias-pull-down;
868*4882a593Smuzhiyun				};
869*4882a593Smuzhiyun
870*4882a593Smuzhiyun				s0 {
871*4882a593Smuzhiyun					// regulator-min-microvolt = <500000>;
872*4882a593Smuzhiyun					// regulator-max-microvolt = <1325000>;
873*4882a593Smuzhiyun					regulator-min-microvolt = <1100000>;
874*4882a593Smuzhiyun					regulator-max-microvolt = <1100000>;
875*4882a593Smuzhiyun					qcom,switch-mode-frequency = <1600000>;
876*4882a593Smuzhiyun					bias-pull-down;
877*4882a593Smuzhiyun				};
878*4882a593Smuzhiyun				s1 {
879*4882a593Smuzhiyun					// regulator-min-microvolt = <500000>;
880*4882a593Smuzhiyun					// regulator-max-microvolt = <1250000>;
881*4882a593Smuzhiyun					regulator-min-microvolt = <1100000>;
882*4882a593Smuzhiyun					regulator-max-microvolt = <1100000>;
883*4882a593Smuzhiyun					qcom,switch-mode-frequency = <1600000>;
884*4882a593Smuzhiyun					bias-pull-down;
885*4882a593Smuzhiyun				};
886*4882a593Smuzhiyun				s2 {
887*4882a593Smuzhiyun					// 1.3 V according to schematic
888*4882a593Smuzhiyun					regulator-min-microvolt = <1200000>;
889*4882a593Smuzhiyun					regulator-max-microvolt = <1400000>;
890*4882a593Smuzhiyun					qcom,switch-mode-frequency = <1600000>;
891*4882a593Smuzhiyun					bias-pull-down;
892*4882a593Smuzhiyun				};
893*4882a593Smuzhiyun				s3 {
894*4882a593Smuzhiyun					regulator-min-microvolt = <1800000>;
895*4882a593Smuzhiyun					regulator-max-microvolt = <1800000>;
896*4882a593Smuzhiyun					qcom,switch-mode-frequency = <1600000>;
897*4882a593Smuzhiyun					regulator-always-on;
898*4882a593Smuzhiyun					bias-pull-down;
899*4882a593Smuzhiyun				};
900*4882a593Smuzhiyun				s4 {
901*4882a593Smuzhiyun					regulator-min-microvolt = <2200000>;
902*4882a593Smuzhiyun					regulator-max-microvolt = <2200000>;
903*4882a593Smuzhiyun					qcom,switch-mode-frequency = <1600000>;
904*4882a593Smuzhiyun					regulator-always-on;
905*4882a593Smuzhiyun					bias-pull-down;
906*4882a593Smuzhiyun				};
907*4882a593Smuzhiyun
908*4882a593Smuzhiyun				/* LVS0 and LVS1 are just switches */
909*4882a593Smuzhiyun				lvs0 {
910*4882a593Smuzhiyun					bias-pull-down;
911*4882a593Smuzhiyun				};
912*4882a593Smuzhiyun				lvs1 {
913*4882a593Smuzhiyun					bias-pull-down;
914*4882a593Smuzhiyun				};
915*4882a593Smuzhiyun
916*4882a593Smuzhiyun				ncp {
917*4882a593Smuzhiyun					regulator-min-microvolt = <1800000>;
918*4882a593Smuzhiyun					regulator-max-microvolt = <1800000>;
919*4882a593Smuzhiyun					qcom,switch-mode-frequency = <1600000>;
920*4882a593Smuzhiyun				};
921*4882a593Smuzhiyun			};
922*4882a593Smuzhiyun		};
923*4882a593Smuzhiyun		amba {
924*4882a593Smuzhiyun			/* Internal 3.69 GiB eMMC */
925*4882a593Smuzhiyun			sdcc@12400000 {
926*4882a593Smuzhiyun				status = "okay";
927*4882a593Smuzhiyun				pinctrl-names = "default";
928*4882a593Smuzhiyun				pinctrl-0 = <&dragon_sdcc1_pins>;
929*4882a593Smuzhiyun				vmmc-supply = <&pm8901_l5>;
930*4882a593Smuzhiyun				vqmmc-supply = <&pm8901_lvs0>;
931*4882a593Smuzhiyun			};
932*4882a593Smuzhiyun
933*4882a593Smuzhiyun			/* External micro SD card, directly connected, pulled up to 2.85 V */
934*4882a593Smuzhiyun			sdcc@12180000 {
935*4882a593Smuzhiyun				status = "okay";
936*4882a593Smuzhiyun				/* Enable SSBI GPIO 22 as input, use for card detect */
937*4882a593Smuzhiyun				pinctrl-names = "default";
938*4882a593Smuzhiyun				pinctrl-0 = <&dragon_sdcc3_pins>, <&dragon_sdcc3_gpios>;
939*4882a593Smuzhiyun				cd-gpios = <&pm8058_gpio 22 GPIO_ACTIVE_LOW>;
940*4882a593Smuzhiyun				wp-gpios = <&tlmm 110 GPIO_ACTIVE_HIGH>;
941*4882a593Smuzhiyun				vmmc-supply = <&pm8058_l14>;
942*4882a593Smuzhiyun			};
943*4882a593Smuzhiyun
944*4882a593Smuzhiyun			/*
945*4882a593Smuzhiyun			 * Second external micro SD card, using two TXB104RGYR levelshifters
946*4882a593Smuzhiyun			 * to lift from 1.8 V to 2.85 V
947*4882a593Smuzhiyun			 */
948*4882a593Smuzhiyun			sdcc@12200000 {
949*4882a593Smuzhiyun				status = "okay";
950*4882a593Smuzhiyun				/* Enable SSBI GPIO 26 as input, use for card detect */
951*4882a593Smuzhiyun				pinctrl-names = "default";
952*4882a593Smuzhiyun				pinctrl-0 = <&dragon_sdcc5_pins>, <&dragon_sdcc5_gpios>;
953*4882a593Smuzhiyun				cd-gpios = <&pm8058_gpio 26 GPIO_ACTIVE_LOW>;
954*4882a593Smuzhiyun				wp-gpios = <&tlmm 106 GPIO_ACTIVE_HIGH>;
955*4882a593Smuzhiyun				vmmc-supply = <&pm8058_l14>;
956*4882a593Smuzhiyun				vqmmc-supply = <&dragon_vio_txb>;
957*4882a593Smuzhiyun			};
958*4882a593Smuzhiyun		};
959*4882a593Smuzhiyun	};
960*4882a593Smuzhiyun};
961