// SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
#include <dt-bindings/input/input.h>
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/leds/common.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>;
		/* Trig on both edges - getting close or far away */
		interrupts-extended = <&pm8058_gpio 34 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>;
	};
};

&ebi2 {
	/* The EBI2 will instantiate first, then populate its children */
	pinctrl-names = "default";
	pinctrl-0 = <&dragon_ebi2_pins>;
	status = "okay";

	/*
	 * 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@2,0 {
		compatible = "smsc,lan9221", "smsc,lan9115";
		reg = <2 0x0 0x100>;
		/*
		 * The second interrupt is the PME interrupt
		 * for network wakeup, connected to the TLMM.
		 */
		interrupts-extended = <&pm8058_gpio 7 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;
		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>;
	};
};

&gsbi3 {
	qcom,mode = <GSBI_PROT_I2C>;
	status = "okay";
};

&gsbi3_i2c {
	pinctrl-names = "default";
	pinctrl-0 = <&dragon_gsbi3_i2c_pins>;
	status = "okay";

	touchscreen@24 {
		compatible = "cypress,cy8ctma340";
		reg = <0x24>;
		/* Certainly we can do at least 400 kHz */
		clock-frequency = <400000>;
		/* IRQ on GPIO61 called /CTP_INT */
		interrupt-parent = <&tlmm>;
		interrupts = <61 IRQ_TYPE_EDGE_FALLING>;
		/*
		 * The I2C bus is using a PCA9306 level translator from L16A
		 * to L2B so these two voltages are needed and L16A is
		 * kind of the IO voltage, however L16Aisn't really fed to
		 * the TMA340, which relies entirely on L2B (PM8901 L2).
		 */
		vcpin-supply = <&pm8058_l16>;
		vdd-supply = <&pm8901_l2>;
		/* GPIO58, called WAKE_CTP */
		reset-gpios = <&tlmm 58 GPIO_ACTIVE_LOW>;
		touchscreen-size-x = <480>;
		touchscreen-size-y = <800>;
		active-interval-ms = <0>;
		touch-timeout-ms = <255>;
		lowpower-interval-ms = <10>;
		bootloader-key = /bits/ 8 <0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07>;
		pinctrl-names = "default";
		pinctrl-0 = <&dragon_tma340_gpios>;
	};
};

&gsbi8 {
	qcom,mode = <GSBI_PROT_I2C>;
	status = "okay";
};

&gsbi8_i2c {
	pinctrl-names = "default";
	pinctrl-0 = <&dragon_gsbi8_i2c_pins>;
	status = "okay";

	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>;
	};
};

&gsbi12 {
	qcom,mode = <GSBI_PROT_I2C_UART>;
	status = "okay";
};

&gsbi12_serial {
	pinctrl-names = "default";
	pinctrl-0 = <&dragon_gsbi12_serial_pins>;
	status = "okay";
};

&gsbi12_i2c {
	pinctrl-names = "default";
	pinctrl-0 = <&dragon_gsbi12_i2c_pins>;
	status = "okay";

	ak8975@c {
		compatible = "asahi-kasei,ak8975";
		reg = <0x0c>;
		interrupt-parent = <&pm8058_gpio>;
		interrupts = <33 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>;
		interrupt-parent = <&pm8058_gpio>;
		interrupts = <16 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 is pulled high by a 10k
		 * resistor to VLOGIC so needs to be
		 * active low/falling edge.
		 */
		interrupts-extended = <&pm8058_gpio 17 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
			};
		};
	};
};

&pm8058_gpio {
	dragon_ethernet_gpios: ethernet-state {
		pinconf {
			pins = "gpio7";
			function = "normal";
			input-enable;
			bias-disable;
			power-source = <PM8058_GPIO_S3>;
		};
	};
	dragon_bmp085_gpios: bmp085-state {
		pinconf {
			pins = "gpio16";
			function = "normal";
			input-enable;
			bias-disable;
			power-source = <PM8058_GPIO_S3>;
		};
	};
	dragon_mpu3050_gpios: mpu3050-state {
		pinconf {
			pins = "gpio17";
			function = "normal";
			input-enable;
			bias-disable;
			power-source = <PM8058_GPIO_S3>;
		};
	};
	dragon_sdcc3_gpios: sdcc3-state {
		pinconf {
			pins = "gpio22";
			function = "normal";
			input-enable;
			bias-disable;
			power-source = <PM8058_GPIO_S3>;
		};
	};
	dragon_sdcc5_gpios: sdcc5-state {
		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-state {
		pinconf {
			pins = "gpio33";
			function = "normal";
			input-enable;
			bias-disable;
			power-source = <PM8058_GPIO_S3>;
		};
	};
	dragon_cm3605_gpios: cm3605-state {
		/* Pin 34 connected to the proxy IRQ */
		gpio34-pins {
			pins = "gpio34";
			function = "normal";
			input-enable;
			bias-disable;
			power-source = <PM8058_GPIO_S3>;
		};
		/* Pin 35 connected to ASET */
		gpio35-pins {
			pins = "gpio35";
			function = "normal";
			output-high;
			bias-disable;
			power-source = <PM8058_GPIO_S3>;
		};
	};
	dragon_veth_gpios: veth-state {
		pinconf {
			pins = "gpio40";
			function = "normal";
			bias-disable;
			drive-push-pull;
		};
	};
};

&pm8058_keypad {
	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>;
};

&pm8058_led48 {
	/*
	 * 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.
	 */
	label = "pm8058:infrared:proximitysensor";
	default-state = "off";
	linux,default-trigger = "cm3605";
	status = "okay";
};

&pm8058_led131 {
	label = "pm8058:red";
	color = <LED_COLOR_ID_RED>;
	default-state = "off";
	status = "okay";
};

&pm8058_led132 {
	/*
	 * This is actually green too on my
	 * board, but documented as yellow.
	 */
	label = "pm8058:yellow";
	color = <LED_COLOR_ID_YELLOW>;
	default-state = "off";
	linux,default-trigger = "mmc0";
	status = "okay";
};

&pm8058_led133 {
	label = "pm8058:green";
	function = LED_FUNCTION_HEARTBEAT;
	color = <LED_COLOR_ID_GREEN>;
	default-state = "on";
	linux,default-trigger = "heartbeat";
	status = "okay";
};

&pm8058_mpps {
	dragon_cm3605_mpps: cm3605-mpps-state {
		mpp5 {
			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>;
		};
	};
};

&rpm {
	/*
	 * 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 {
			/* TMA340 requires strictly 3.3V */
			regulator-min-microvolt = <3300000>;
			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 mvs are just switches */
		lvs0 {
			regulator-always-on;
		};
		lvs1 { };
		lvs2 { };
		lvs3 { };
		mvs { };

	};

	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>;
		};
	};
};

/* Internal 3.69 GiB eMMC */
&sdcc1 {
	pinctrl-names = "default";
	pinctrl-0 = <&dragon_sdcc1_pins>;
	vmmc-supply = <&pm8901_l5>;
	vqmmc-supply = <&pm8901_lvs0>;
	status = "okay";
};

/* External micro SD card, directly connected, pulled up to 2.85 V */
&sdcc3 {
	/* 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>;
	status = "okay";
};

/*
 * Second external micro SD card, using two TXB104RGYR levelshifters
 * to lift from 1.8 V to 2.85 V
 */
&sdcc5 {
	/* 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>;
	status = "okay";
};

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

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

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

	dragon_gsbi3_i2c_pins: gsbi3-i2c-state {
		pins = "gpio43", "gpio44";
		function = "gsbi3";
		drive-strength = <8>;
		/* These have external pull-up 2.2kOhm to 1.8V */
		bias-disable;
	};

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

	dragon_gsbi12_i2c_pins: gsbi12-i2c-state {
		pins = "gpio115", "gpio116";
		function = "gsbi12";
		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-state {
		tx-pins {
			pins = "gpio117";
			function = "gsbi12";
			drive-strength = <8>;
			bias-disable;
		};
		rx-pins {
			pins = "gpio118";
			function = "gsbi12";
			drive-strength = <2>;
			bias-pull-up;
		};
	};

	dragon_ebi2_pins: ebi2-state {
		/*
		 * 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 {
			pins =
			    /* "gpio39", CS1A_N this is not good to mux */
			    "gpio40", /* CS2A_N */
			    "gpio134"; /* CS0_N testpoint TP29 */
			function = "ebi2cs";
		};
		mux1-pins {
			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-state {
		pins = "gpio57"; /* IRQ line */
		function = "gpio";
		bias-pull-up;
	};

	dragon_tma340_gpios: tma340-state {
		reset-pins {
			/* RESET line, TS_ATTN, WAKE_CTP */
			pins = "gpio58";
			function = "gpio";
			drive-strength = <6>;
			bias-disable;
		};
		irq-pins {
			pins = "gpio61"; /* IRQ line */
			function = "gpio";
			drive-strength = <2>;
			bias-pull-up;
		};
	};
};

&xoadc {
	/* 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>;
	};
};
