Linux Audio

Check our new training course

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