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