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