/*
 * Copyright 2016 Linaro Ltd
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 * THE SOFTWARE.
 */

#include <dt-bindings/input/input.h>
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
#include <dt-bindings/pinctrl/qcom,pmic-mpp.h>
#include "qcom-msm8660.dtsi"

/ {
	model = "Qualcomm APQ8060 Dragonboard";
	compatible = "qcom,apq8060-dragonboard", "qcom,msm8660";

	aliases {
		serial0 = &gsbi12_serial;
	};

	chosen {
		stdout-path = "serial0:115200n8";
	};

	regulators {
		compatible = "simple-bus";

		/* Main power of the board: 3.7V */
		vph: regulator-fixed {
			compatible = "regulator-fixed";
			regulator-min-microvolt = <3700000>;
			regulator-max-microvolt = <3700000>;
			regulator-name = "VPH";
			regulator-type = "voltage";
			regulator-always-on;
			regulator-boot-on;
		};

		/* GPIO controlled ethernet power regulator */
		dragon_veth: xc622a331mrg {
			compatible = "regulator-fixed";
			regulator-name = "XC6222A331MR-G";
			regulator-min-microvolt = <3300000>;
			regulator-max-microvolt = <3300000>;
			vin-supply = <&vph>;
			gpio = <&pm8058_gpio 40 GPIO_ACTIVE_HIGH>;
			enable-active-high;
			pinctrl-names = "default";
			pinctrl-0 = <&dragon_veth_gpios>;
			regulator-always-on;
		};

		/* VDDvario fixed regulator */
		dragon_vario: nds332p {
			compatible = "regulator-fixed";
			regulator-name = "NDS332P";
			regulator-min-microvolt = <1800000>;
			regulator-max-microvolt = <1800000>;
			vin-supply = <&pm8058_s3>;
		};

		/* This is a levelshifter for SDCC5 */
		dragon_vio_txb: txb0104rgyr {
			compatible = "regulator-fixed";
			regulator-name = "Dragon SDCC levelshifter";
			vin-supply = <&pm8058_l14>;
			regulator-always-on;
		};
	};

	/*
	 * Capella CM3605 light and proximity sensor mounted directly
	 * on the sensor board.
	 */
	cm3605 {
		compatible = "capella,cm3605";
		vdd-supply = <&pm8058_l14>; // 2.85V
		aset-gpios = <&pm8058_gpio 35 GPIO_ACTIVE_LOW>;
		capella,aset-resistance-ohms = <100000>;
		/* GPIO34 has interrupt 225 on the PM8058 */
		/* Trig on both edges - getting close or far away */
		interrupts-extended = <&pm8058 225 IRQ_TYPE_EDGE_BOTH>;
		/* MPP05 analog input to the XOADC */
		io-channels = <&xoadc 0x00 0x05>;
		io-channel-names = "aout";
		pinctrl-names = "default";
		pinctrl-0 = <&dragon_cm3605_gpios>, <&dragon_cm3605_mpps>;
	};

	soc {
		pinctrl@800000 {
			/* eMMMC pins, all 8 data lines connected */
			dragon_sdcc1_pins: sdcc1 {
				mux {
					pins = "gpio159", "gpio160", "gpio161",
					     "gpio162", "gpio163", "gpio164",
					     "gpio165", "gpio166", "gpio167",
					     "gpio168";
					     function = "sdc1";
				};
				clk {
					pins = "gpio167"; /* SDC1 CLK */
					drive-strength = <16>;
					bias-disable;
				};
				cmd {
					pins = "gpio168"; /* SDC1 CMD */
					drive-strength = <10>;
					bias-pull-up;
				};
				data {
					/* SDC1 D0 to D7 */
					pins = "gpio159", "gpio160", "gpio161", "gpio162",
					     "gpio163", "gpio164", "gpio165", "gpio166";
					drive-strength = <10>;
					bias-pull-up;
				};
			};

			/*
			 * The SDCC3 pins are hardcoded (non-muxable) but need some pin
			 * configuration.
			 */
			dragon_sdcc3_pins: sdcc3 {
				clk {
					pins = "sdc3_clk";
					drive-strength = <8>;
					bias-disable;
				};
				cmd {
					pins = "sdc3_cmd";
					drive-strength = <8>;
					bias-pull-up;
				};
				data {
					pins = "sdc3_data";
					drive-strength = <8>;
					bias-pull-up;
				};
			};

			/* Second SD card slot pins */
			dragon_sdcc5_pins: sdcc5 {
				mux {
					pins = "gpio95", "gpio96", "gpio97",
					    "gpio98", "gpio99", "gpio100";
					function = "sdc5";
				};
				clk {
					pins = "gpio97"; /* SDC5 CLK */
					drive-strength = <16>;
					bias-disable;
				};
				cmd {
					pins = "gpio95"; /* SDC5 CMD */
					drive-strength = <10>;
					bias-pull-up;
				};
				data {
					/* SDC5 D0 to D3 */
					pins = "gpio96", "gpio98", "gpio99", "gpio100";
					drive-strength = <10>;
					bias-pull-up;
				};
			};

			dragon_gsbi8_i2c_pins: gsbi8_i2c {
				mux {
					pins = "gpio64", "gpio65";
					function = "gsbi8";
				};
				pinconf {
					pins = "gpio64", "gpio65";
					drive-strength = <16>;
					/* These have external pull-up 2.2kOhm to 1.8V */
					bias-disable;
				};
			};

			dragon_gsbi12_i2c_pins: gsbi12_i2c {
				mux {
					pins = "gpio115", "gpio116";
					function = "gsbi12";
				};
				pinconf {
					pins = "gpio115", "gpio116";
					drive-strength = <16>;
					/* These have external pull-up 4.7kOhm to 1.8V */
					bias-disable;
				};
			};

			/* Primary serial port uart 0 pins */
			dragon_gsbi12_serial_pins: gsbi12_serial {
				mux {
					pins = "gpio117", "gpio118";
					function = "gsbi12";
				};
				tx {
					pins = "gpio117";
					drive-strength = <8>;
					bias-disable;
				};
				rx {
					pins = "gpio118";
					drive-strength = <2>;
					bias-pull-up;
				};
			};

			dragon_ebi2_pins: ebi2 {
				/*
				 * Pins used by EBI2 on the Dragonboard, actually only
				 * CS2 is used by a real peripheral. CS0 is just
				 * routed to a test point.
				 */
				mux0 {
					pins =
					    /* "gpio39", CS1A_N this is not good to mux */
					    "gpio40", /* CS2A_N */
					    "gpio134"; /* CS0_N testpoint TP29 */
					function = "ebi2cs";
				};
				mux1 {
					pins =
					    /* EBI2_ADDR_7 downto EBI2_ADDR_0 address bus */
					    "gpio123", "gpio124", "gpio125", "gpio126",
					    "gpio127", "gpio128", "gpio129", "gpio130",
					    /* EBI2_DATA_15 downto EBI2_DATA_0 data bus */
					    "gpio135", "gpio136", "gpio137", "gpio138",
					    "gpio139", "gpio140", "gpio141", "gpio142",
					    "gpio143", "gpio144", "gpio145", "gpio146",
					    "gpio147", "gpio148", "gpio149", "gpio150",
					    "gpio151", /* EBI2_OE_N */
					    "gpio153", /* EBI2_ADV */
					    "gpio157"; /* EBI2_WE_N */
					function = "ebi2";
				};
			};

			/* Interrupt line for the KXSD9 accelerometer */
			dragon_kxsd9_gpios: kxsd9 {
				irq {
					pins = "gpio57"; /* IRQ line */
					bias-pull-up;
				};
			};
		};

		qcom,ssbi@500000 {
			pmic@0 {
				keypad@148 {
					linux,keymap = <
					MATRIX_KEY(0, 0, KEY_MENU)
					MATRIX_KEY(0, 2, KEY_1)
					MATRIX_KEY(0, 3, KEY_4)
					MATRIX_KEY(0, 4, KEY_7)
					MATRIX_KEY(1, 0, KEY_UP)
					MATRIX_KEY(1, 1, KEY_LEFT)
					MATRIX_KEY(1, 2, KEY_DOWN)
					MATRIX_KEY(1, 3, KEY_5)
					MATRIX_KEY(1, 3, KEY_8)
					MATRIX_KEY(2, 0, KEY_HOME)
					MATRIX_KEY(2, 1, KEY_REPLY)
					MATRIX_KEY(2, 2, KEY_2)
					MATRIX_KEY(2, 3, KEY_6)
					MATRIX_KEY(3, 0, KEY_VOLUMEUP)
					MATRIX_KEY(3, 1, KEY_RIGHT)
					MATRIX_KEY(3, 2, KEY_3)
					MATRIX_KEY(3, 3, KEY_9)
					MATRIX_KEY(3, 4, KEY_SWITCHVIDEOMODE)
					MATRIX_KEY(4, 0, KEY_VOLUMEDOWN)
					MATRIX_KEY(4, 1, KEY_BACK)
					MATRIX_KEY(4, 2, KEY_CAMERA)
					MATRIX_KEY(4, 3, KEY_KBDILLUMTOGGLE)
					>;
					keypad,num-rows = <6>;
					keypad,num-columns = <5>;
				};

				gpio@150 {
					dragon_ethernet_gpios: ethernet-gpios {
						pinconf {
							pins = "gpio7";
							function = "normal";
							input-enable;
							bias-disable;
							power-source = <PM8058_GPIO_S3>;
						};
					};
					dragon_bmp085_gpios: bmp085-gpios {
						pinconf {
							pins = "gpio16";
							function = "normal";
							input-enable;
							bias-disable;
							power-source = <PM8058_GPIO_S3>;
						};
					};
					dragon_mpu3050_gpios: mpu3050-gpios {
						pinconf {
							pins = "gpio17";
							function = "normal";
							input-enable;
							bias-disable;
							power-source = <PM8058_GPIO_S3>;
						};
					};
					dragon_sdcc3_gpios: sdcc3-gpios {
						pinconf {
							pins = "gpio22";
							function = "normal";
							input-enable;
							bias-disable;
							power-source = <PM8058_GPIO_S3>;
						};
					};
					dragon_sdcc5_gpios: sdcc5-gpios {
						pinconf {
							pins = "gpio26";
							function = "normal";
							input-enable;
							bias-pull-up;
							qcom,pull-up-strength = <PMIC_GPIO_PULL_UP_30>;
							power-source = <PM8058_GPIO_S3>;
						};
					};
					dragon_ak8975_gpios: ak8975-gpios {
						pinconf {
							pins = "gpio33";
							function = "normal";
							input-enable;
							bias-disable;
							power-source = <PM8058_GPIO_S3>;
						};
					};
					dragon_cm3605_gpios: cm3605-gpios {
						/* Pin 34 connected to the proxy IRQ */
						pinconf_gpio34 {
							pins = "gpio34";
							function = "normal";
							input-enable;
							bias-disable;
							power-source = <PM8058_GPIO_S3>;
						};
						/* Pin 35 connected to ASET */
						pinconf_gpio35 {
							pins = "gpio35";
							function = "normal";
							output-high;
							bias-disable;
							power-source = <PM8058_GPIO_S3>;
						};
					};
					dragon_veth_gpios: veth-gpios {
						pinconf {
							pins = "gpio40";
							function = "normal";
							bias-disable;
							drive-push-pull;
						};
					};
				};

				mpps@50 {
					dragon_cm3605_mpps: cm3605-mpps {
						pinconf {
							pins = "mpp5";
							function = "analog";
							input-enable;
							bias-high-impedance;
							/* Let's use channel 5 */
							qcom,amux-route = <PMIC_MPP_AMUX_ROUTE_CH5>;
							power-source = <PM8058_GPIO_S3>;
						};
					};
				};

				xoadc@197 {
					/* Reference voltage 2.2 V */
					xoadc-ref-supply = <&pm8058_l18>;

					/* Board-specific channels */
					mpp5@5 {
						/* Connected to AOUT of ALS sensor */
						reg = <0x00 0x05>;
					};
					mpp6@6 {
						/* Connected to test point TP43 */
						reg = <0x00 0x06>;
					};
					mpp7@7 {
						/* Connected to battery thermistor */
						reg = <0x00 0x07>;
					};
					mpp8@8 {
						/* Connected to battery ID detector */
						reg = <0x00 0x08>;
					};
					mpp9@9 {
						/* Connected to XO thermistor */
						reg = <0x00 0x09>;
					};
				};

				led@48 {
					/*
					 * The keypad LED @0x48 is routed to
					 * the sensor board where it is
					 * connected to an infrared LED
					 * SFH4650 (60mW, @850nm) next to the
					 * ambient light and proximity sensor
					 * Capella Microsystems CM3605.
					 */
					compatible = "qcom,pm8058-keypad-led";
					reg = <0x48>;
					label = "pm8058:infrared:proximitysensor";
					default-state = "off";
					linux,default-trigger = "cm3605";
				};
				led@131 {
					compatible = "qcom,pm8058-led";
					reg = <0x131>;
					label = "pm8058:red";
					default-state = "off";
				};
				led@132 {
					/*
					 * This is actually green too on my
					 * board, but documented as yellow.
					 */
					compatible = "qcom,pm8058-led";
					reg = <0x132>;
					label = "pm8058:yellow";
					default-state = "off";
					linux,default-trigger = "mmc0";
				};
				led@133 {
					compatible = "qcom,pm8058-led";
					reg = <0x133>;
					label = "pm8058:green";
					default-state = "on";
					linux,default-trigger = "heartbeat";
				};
			};
		};

		gsbi@19800000 {
			status = "ok";
			qcom,mode = <GSBI_PROT_I2C>;

			i2c@19880000 {
				status = "ok";
				pinctrl-names = "default";
				pinctrl-0 = <&dragon_gsbi8_i2c_pins>;

				eeprom@52 {
					/* A 16KiB Platform ID EEPROM on the CPU carrier board */
					compatible = "atmel,24c128";
					reg = <0x52>;
					vcc-supply = <&pm8058_s3>;
					pagesize = <64>;
				};
				wm8903: wm8903@1a {
					/* This Woolfson Micro device has an unrouted interrupt line */
					compatible = "wlf,wm8903";
					reg = <0x1a>;

					AVDD-supply = <&pm8058_l16>;
					CPVDD-supply = <&pm8058_l16>;
					DBVDD-supply = <&pm8058_s3>;
					DCVDD-supply = <&pm8058_l0>;

					gpio-controller;
					#gpio-cells = <2>;

					micdet-cfg = <0>;
					micdet-delay = <100>;
					gpio-cfg = <0xffffffff 0xffffffff 0 0xffffffff 0xffffffff>;
				};
			};
		};

		gsbi@19c00000 {
			status = "ok";
			qcom,mode = <GSBI_PROT_I2C_UART>;

			serial@19c40000 {
				status = "ok";
				pinctrl-names = "default";
				pinctrl-0 = <&dragon_gsbi12_serial_pins>;
			};

			i2c@19c80000 {
				status = "ok";
				pinctrl-names = "default";
				pinctrl-0 = <&dragon_gsbi12_i2c_pins>;

				ak8975@c {
					compatible = "asahi-kasei,ak8975";
					reg = <0x0c>;
					/* FIXME: GPIO33 has interrupt 224 on the PM8058 */
					interrupt-parent = <&pm8058>;
					interrupts = <224 IRQ_TYPE_EDGE_RISING>;
					pinctrl-names = "default";
					pinctrl-0 = <&dragon_ak8975_gpios>;
					vid-supply = <&pm8058_lvs0>; // 1.8V
					vdd-supply = <&pm8058_l14>; // 2.85V
				};
				bmp085@77 {
					compatible = "bosch,bmp085";
					reg = <0x77>;
					/* FIXME: GPIO16 has interrupt 207 on the PM8058 */
					interrupt-parent = <&pm8058>;
					interrupts = <207 IRQ_TYPE_EDGE_RISING>;
					reset-gpios = <&tlmm 86 GPIO_ACTIVE_LOW>;
					pinctrl-names = "default";
					pinctrl-0 = <&dragon_bmp085_gpios>;
					vddd-supply = <&pm8058_lvs0>; // 1.8V
					vdda-supply = <&pm8058_l14>; // 2.85V
				};
				mpu3050@68 {
					compatible = "invensense,mpu3050";
					reg = <0x68>;
					/*
					 * GPIO17 has interrupt 208 on the
					 * PM8058, it is pulled high by a 10k
					 * resistor to VLOGIC so needs to be
					 * active low/falling edge.
					 */
					interrupts-extended = <&pm8058 208 IRQ_TYPE_EDGE_FALLING>;
					pinctrl-names = "default";
					pinctrl-0 = <&dragon_mpu3050_gpios>;
					vlogic-supply = <&pm8058_lvs0>; // 1.8V
					vdd-supply = <&pm8058_l14>; // 2.85V

					/*
					 * The MPU-3050 acts as a hub for the
					 * accelerometer.
					 */
					i2c-gate {
						#address-cells = <1>;
						#size-cells = <0>;

						kxsd9@18 {
							compatible = "kionix,kxsd9";
							reg = <0x18>;
							interrupt-parent = <&tlmm>;
							interrupts = <57 IRQ_TYPE_EDGE_FALLING>;
							pinctrl-names = "default";
							pinctrl-0 = <&dragon_kxsd9_gpios>;
							iovdd-supply = <&pm8058_lvs0>; // 1.8V
							vdd-supply = <&pm8058_l14>; // 2.85V
						};
					};
				};
			};
		};

		external-bus@1a100000 {
			/* The EBI2 will instantiate first, then populate its children */
			status = "ok";
			pinctrl-names = "default";
			pinctrl-0 = <&dragon_ebi2_pins>;

			/*
			 * An on-board SMSC LAN9221 chip for "debug ethernet",
			 * which is actually just an ordinary ethernet on the
			 * EBI2. This has a 25MHz chrystal next to it, so no
			 * clocking is needed.
			 */
			ethernet-ebi2@2,0 {
				compatible = "smsc,lan9221", "smsc,lan9115";
				reg = <2 0x0 0x100>;
				/*
				 * GPIO7 has interrupt 198 on the PM8058
				 * The second interrupt is the PME interrupt
				 * for network wakeup, connected to the TLMM.
				 */
				interrupts-extended = <&pm8058 198 IRQ_TYPE_EDGE_FALLING>,
						    <&tlmm 29 IRQ_TYPE_EDGE_RISING>;
				reset-gpios = <&tlmm 30 GPIO_ACTIVE_LOW>;
				vdd33a-supply = <&dragon_veth>;
				vddvario-supply = <&dragon_vario>;
				pinctrl-names = "default";
				pinctrl-0 = <&dragon_ethernet_gpios>;
				phy-mode = "mii";
				reg-io-width = <2>;
				smsc,force-external-phy;
				/* IRQ on edge falling = active low */
				smsc,irq-active-low;
				smsc,irq-push-pull;

				/*
				 * SLOW chipselect config
				 * Delay 9 cycles (140ns@64MHz) between SMSC
				 * LAN9221 Ethernet controller reads and writes
				 * on CS2.
				 */
				qcom,xmem-recovery-cycles = <0>;
				qcom,xmem-write-hold-cycles = <3>;
				qcom,xmem-write-delta-cycles = <31>;
				qcom,xmem-read-delta-cycles = <28>;
				qcom,xmem-write-wait-cycles = <9>;
				qcom,xmem-read-wait-cycles = <9>;
			};
		};

		rpm@104000 {
			/*
			 * Set up of the PMIC RPM regulators for this board
			 * PM8901 supplies "preliminary regulators" whatever
			 * that means
			 */
			pm8901-regulators {
				vdd_l0-supply = <&pm8901_s4>;
				vdd_l1-supply = <&vph>;
				vdd_l2-supply = <&vph>;
				vdd_l3-supply = <&vph>;
				vdd_l4-supply = <&vph>;
				vdd_l5-supply = <&vph>;
				vdd_l6-supply = <&vph>;
				/* vdd_s0-supply, vdd_s1-supply: SAW regulators */
				vdd_s2-supply = <&vph>;
				vdd_s3-supply = <&vph>;
				vdd_s4-supply = <&vph>;
				lvs0_in-supply = <&pm8058_s3>;
				lvs1_in-supply = <&pm8901_s4>;
				lvs2_in-supply = <&pm8058_l0>;
				lvs3_in-supply = <&pm8058_s2>;
				mvs_in-supply = <&pm8058_s3>;

				l0 {
					regulator-min-microvolt = <1200000>;
					regulator-max-microvolt = <1200000>;
					bias-pull-down;
				};
				l1 {
					regulator-min-microvolt = <3300000>;
					regulator-max-microvolt = <3300000>;
					bias-pull-down;
				};
				l2 {
					regulator-min-microvolt = <2850000>;
					regulator-max-microvolt = <3300000>;
					bias-pull-down;
				};
				l3 {
					regulator-min-microvolt = <3300000>;
					regulator-max-microvolt = <3300000>;
					bias-pull-down;
				};
				l4 {
					regulator-min-microvolt = <2600000>;
					regulator-max-microvolt = <2600000>;
					bias-pull-down;
				};
				l5 {
					regulator-min-microvolt = <2850000>;
					regulator-max-microvolt = <2850000>;
					bias-pull-down;
				};
				l6 {
					regulator-min-microvolt = <2200000>;
					regulator-max-microvolt = <2200000>;
					bias-pull-down;
				};

				/* s0 and s1 are SAW regulators controlled over SPM */
				s2 {
					regulator-min-microvolt = <1300000>;
					regulator-max-microvolt = <1300000>;
					qcom,switch-mode-frequency = <1600000>;
					bias-pull-down;
				};
				s3 {
					regulator-min-microvolt = <1100000>;
					regulator-max-microvolt = <1100000>;
					qcom,switch-mode-frequency = <1600000>;
					bias-pull-down;
				};
				s4 {
					regulator-min-microvolt = <1225000>;
					regulator-max-microvolt = <1225000>;
					qcom,switch-mode-frequency = <1600000>;
					bias-pull-down;
				};

				/* LVS0 thru 3 and mvs0 are just switches */
				lvs0 {
					regulator-always-on;
				};
				lvs1 { };
				lvs2 { };
				lvs3 { };
				mvs0 {};

			};

			pm8058-regulators {
				vdd_l0_l1_lvs-supply = <&pm8058_s3>;
				vdd_l2_l11_l12-supply = <&vph>;
				vdd_l3_l4_l5-supply = <&vph>;
				vdd_l6_l7-supply = <&vph>;
				vdd_l8-supply = <&vph>;
				vdd_l9-supply = <&vph>;
				vdd_l10-supply = <&vph>;
				vdd_l13_l16-supply = <&pm8058_s4>;
				vdd_l14_l15-supply = <&vph>;
				vdd_l17_l18-supply = <&vph>;
				vdd_l19_l20-supply = <&vph>;
				vdd_l21-supply = <&pm8058_s3>;
				vdd_l22-supply = <&pm8058_s3>;
				vdd_l23_l24_l25-supply = <&pm8058_s3>;
				vdd_s0-supply = <&vph>;
				vdd_s1-supply = <&vph>;
				vdd_s2-supply = <&vph>;
				vdd_s3-supply = <&vph>;
				vdd_s4-supply = <&vph>;
				vdd_ncp-supply = <&vph>;

				l0 {
					regulator-min-microvolt = <1200000>;
					regulator-max-microvolt = <1200000>;
					bias-pull-down;
				};
				l1 {
					regulator-min-microvolt = <1200000>;
					regulator-max-microvolt = <1200000>;
					bias-pull-down;
				};
				l2 {
					regulator-min-microvolt = <1800000>;
					regulator-max-microvolt = <2600000>;
					bias-pull-down;
				};
				l3 {
					regulator-min-microvolt = <1800000>;
					regulator-max-microvolt = <1800000>;
					bias-pull-down;
				};
				l4 {
					regulator-min-microvolt = <2850000>;
					regulator-max-microvolt = <2850000>;
					bias-pull-down;
				};
				l5 {
					regulator-min-microvolt = <2850000>;
					regulator-max-microvolt = <2850000>;
					bias-pull-down;
				};
				l6 {
					regulator-min-microvolt = <3000000>;
					regulator-max-microvolt = <3600000>;
					bias-pull-down;
				};
				l7 {
					regulator-min-microvolt = <1800000>;
					regulator-max-microvolt = <1800000>;
					bias-pull-down;
				};
				l8 {
					regulator-min-microvolt = <2900000>;
					regulator-max-microvolt = <3050000>;
					bias-pull-down;
				};
				l9 {
					regulator-min-microvolt = <1800000>;
					regulator-max-microvolt = <1800000>;
					bias-pull-down;
				};
				l10 {
					regulator-min-microvolt = <2600000>;
					regulator-max-microvolt = <2600000>;
					bias-pull-down;
				};
				l11 {
					regulator-min-microvolt = <1500000>;
					regulator-max-microvolt = <1500000>;
					bias-pull-down;
				};
				l12 {
					regulator-min-microvolt = <2900000>;
					regulator-max-microvolt = <2900000>;
					bias-pull-down;
				};
				l13 {
					regulator-min-microvolt = <2050000>;
					regulator-max-microvolt = <2050000>;
					bias-pull-down;
				};
				l14 {
					regulator-min-microvolt = <2850000>;
					regulator-max-microvolt = <2850000>;
				};
				l15 {
					regulator-min-microvolt = <2850000>;
					regulator-max-microvolt = <2850000>;
					bias-pull-down;
				};
				l16 {
					regulator-min-microvolt = <1800000>;
					regulator-max-microvolt = <1800000>;
					bias-pull-down;
					regulator-always-on;
				};
				l17 {
					// 1.5V according to schematic
					regulator-min-microvolt = <2600000>;
					regulator-max-microvolt = <2600000>;
					bias-pull-down;
				};
				l18 {
					regulator-min-microvolt = <2200000>;
					regulator-max-microvolt = <2200000>;
					bias-pull-down;
				};
				l19 {
					regulator-min-microvolt = <2500000>;
					regulator-max-microvolt = <2500000>;
					bias-pull-down;
				};
				l20 {
					regulator-min-microvolt = <1800000>;
					regulator-max-microvolt = <1800000>;
					bias-pull-down;
				};
				l21 {
					// 1.1 V according to schematic
					regulator-min-microvolt = <1200000>;
					regulator-max-microvolt = <1200000>;
					bias-pull-down;
					regulator-always-on;
				};
				l22 {
					// 1.2 V according to schematic
					regulator-min-microvolt = <1150000>;
					regulator-max-microvolt = <1150000>;
					bias-pull-down;
				};
				l23 {
					// Unused
					regulator-min-microvolt = <1200000>;
					regulator-max-microvolt = <1200000>;
					bias-pull-down;
				};
				l24 {
					// Unused
					regulator-min-microvolt = <1200000>;
					regulator-max-microvolt = <1200000>;
					bias-pull-down;
				};
				l25 {
					regulator-min-microvolt = <1200000>;
					regulator-max-microvolt = <1200000>;
					bias-pull-down;
				};

				s0 {
					// regulator-min-microvolt = <500000>;
					// regulator-max-microvolt = <1325000>;
					regulator-min-microvolt = <1100000>;
					regulator-max-microvolt = <1100000>;
					qcom,switch-mode-frequency = <1600000>;
					bias-pull-down;
				};
				s1 {
					// regulator-min-microvolt = <500000>;
					// regulator-max-microvolt = <1250000>;
					regulator-min-microvolt = <1100000>;
					regulator-max-microvolt = <1100000>;
					qcom,switch-mode-frequency = <1600000>;
					bias-pull-down;
				};
				s2 {
					// 1.3 V according to schematic
					regulator-min-microvolt = <1200000>;
					regulator-max-microvolt = <1400000>;
					qcom,switch-mode-frequency = <1600000>;
					bias-pull-down;
				};
				s3 {
					regulator-min-microvolt = <1800000>;
					regulator-max-microvolt = <1800000>;
					qcom,switch-mode-frequency = <1600000>;
					regulator-always-on;
					bias-pull-down;
				};
				s4 {
					regulator-min-microvolt = <2200000>;
					regulator-max-microvolt = <2200000>;
					qcom,switch-mode-frequency = <1600000>;
					regulator-always-on;
					bias-pull-down;
				};

				/* LVS0 and LVS1 are just switches */
				lvs0 {
					bias-pull-down;
				};
				lvs1 {
					bias-pull-down;
				};

				ncp {
					regulator-min-microvolt = <1800000>;
					regulator-max-microvolt = <1800000>;
					qcom,switch-mode-frequency = <1600000>;
				};
			};
		};
		amba {
			/* Internal 3.69 GiB eMMC */
			sdcc@12400000 {
				status = "okay";
				pinctrl-names = "default";
				pinctrl-0 = <&dragon_sdcc1_pins>;
				vmmc-supply = <&pm8901_l5>;
				vqmmc-supply = <&pm8901_lvs0>;
			};

			/* External micro SD card, directly connected, pulled up to 2.85 V */
			sdcc@12180000 {
				status = "okay";
				/* Enable SSBI GPIO 22 as input, use for card detect */
				pinctrl-names = "default";
				pinctrl-0 = <&dragon_sdcc3_pins>, <&dragon_sdcc3_gpios>;
				cd-gpios = <&pm8058_gpio 22 GPIO_ACTIVE_LOW>;
				wp-gpios = <&tlmm 110 GPIO_ACTIVE_HIGH>;
				vmmc-supply = <&pm8058_l14>;
			};

			/*
			 * Second external micro SD card, using two TXB104RGYR levelshifters
			 * to lift from 1.8 V to 2.85 V
			 */
			sdcc@12200000 {
				status = "okay";
				/* Enable SSBI GPIO 26 as input, use for card detect */
				pinctrl-names = "default";
				pinctrl-0 = <&dragon_sdcc5_pins>, <&dragon_sdcc5_gpios>;
				cd-gpios = <&pm8058_gpio 26 GPIO_ACTIVE_LOW>;
				wp-gpios = <&tlmm 106 GPIO_ACTIVE_HIGH>;
				vmmc-supply = <&pm8058_l14>;
				vqmmc-supply = <&dragon_vio_txb>;
			};
		};
	};
};
