2 * Copyright 2016 Linaro Ltd
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:
11 * The above copyright notice and this permission notice shall be included in
12 * all copies or substantial portions of the Software.
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
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"
30 model = "Qualcomm APQ8060 Dragonboard";
31 compatible = "qcom,apq8060-dragonboard", "qcom,msm8660";
34 serial0 = &gsbi12_serial;
38 stdout-path = "serial0:115200n8";
42 compatible = "simple-bus";
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";
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>;
62 gpio = <&pm8058_gpio 40 GPIO_ACTIVE_HIGH>;
64 pinctrl-names = "default";
65 pinctrl-0 = <&dragon_veth_gpios>;
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>;
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>;
88 * Capella CM3605 light and proximity sensor mounted directly
89 * on the sensor board.
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 /* GPIO34 has interrupt 225 on the PM8058 */
97 /* Trig on both edges - getting close or far away */
98 interrupts-extended = <&pm8058 225 IRQ_TYPE_EDGE_BOTH>;
99 /* MPP05 analog input to the XOADC */
100 io-channels = <&xoadc 0x00 0x05>;
101 io-channel-names = "aout";
102 pinctrl-names = "default";
103 pinctrl-0 = <&dragon_cm3605_gpios>, <&dragon_cm3605_mpps>;
108 /* eMMMC pins, all 8 data lines connected */
109 dragon_sdcc1_pins: sdcc1 {
111 pins = "gpio159", "gpio160", "gpio161",
112 "gpio162", "gpio163", "gpio164",
113 "gpio165", "gpio166", "gpio167",
118 pins = "gpio167"; /* SDC1 CLK */
119 drive-strength = <16>;
123 pins = "gpio168"; /* SDC1 CMD */
124 drive-strength = <10>;
129 pins = "gpio159", "gpio160", "gpio161", "gpio162",
130 "gpio163", "gpio164", "gpio165", "gpio166";
131 drive-strength = <10>;
137 * The SDCC3 pins are hardcoded (non-muxable) but need some pin
140 dragon_sdcc3_pins: sdcc3 {
143 drive-strength = <8>;
148 drive-strength = <8>;
153 drive-strength = <8>;
158 /* Second SD card slot pins */
159 dragon_sdcc5_pins: sdcc5 {
161 pins = "gpio95", "gpio96", "gpio97",
162 "gpio98", "gpio99", "gpio100";
166 pins = "gpio97"; /* SDC5 CLK */
167 drive-strength = <16>;
171 pins = "gpio95"; /* SDC5 CMD */
172 drive-strength = <10>;
177 pins = "gpio96", "gpio98", "gpio99", "gpio100";
178 drive-strength = <10>;
183 dragon_gsbi8_i2c_pins: gsbi8_i2c {
185 pins = "gpio64", "gpio65";
189 pins = "gpio64", "gpio65";
190 drive-strength = <16>;
191 /* These have external pull-up 2.2kOhm to 1.8V */
196 dragon_gsbi12_i2c_pins: gsbi12_i2c {
198 pins = "gpio115", "gpio116";
202 pins = "gpio115", "gpio116";
203 drive-strength = <16>;
204 /* These have external pull-up 4.7kOhm to 1.8V */
209 /* Primary serial port uart 0 pins */
210 dragon_gsbi12_serial_pins: gsbi12_serial {
212 pins = "gpio117", "gpio118";
217 drive-strength = <8>;
222 drive-strength = <2>;
227 dragon_ebi2_pins: ebi2 {
229 * Pins used by EBI2 on the Dragonboard, actually only
230 * CS2 is used by a real peripheral. CS0 is just
231 * routed to a test point.
235 /* "gpio39", CS1A_N this is not good to mux */
236 "gpio40", /* CS2A_N */
237 "gpio134"; /* CS0_N testpoint TP29 */
242 /* EBI2_ADDR_7 downto EBI2_ADDR_0 address bus */
243 "gpio123", "gpio124", "gpio125", "gpio126",
244 "gpio127", "gpio128", "gpio129", "gpio130",
245 /* EBI2_DATA_15 downto EBI2_DATA_0 data bus */
246 "gpio135", "gpio136", "gpio137", "gpio138",
247 "gpio139", "gpio140", "gpio141", "gpio142",
248 "gpio143", "gpio144", "gpio145", "gpio146",
249 "gpio147", "gpio148", "gpio149", "gpio150",
250 "gpio151", /* EBI2_OE_N */
251 "gpio153", /* EBI2_ADV */
252 "gpio157"; /* EBI2_WE_N */
257 /* Interrupt line for the KXSD9 accelerometer */
258 dragon_kxsd9_gpios: kxsd9 {
260 pins = "gpio57"; /* IRQ line */
270 MATRIX_KEY(0, 0, KEY_MENU)
271 MATRIX_KEY(0, 2, KEY_1)
272 MATRIX_KEY(0, 3, KEY_4)
273 MATRIX_KEY(0, 4, KEY_7)
274 MATRIX_KEY(1, 0, KEY_UP)
275 MATRIX_KEY(1, 1, KEY_LEFT)
276 MATRIX_KEY(1, 2, KEY_DOWN)
277 MATRIX_KEY(1, 3, KEY_5)
278 MATRIX_KEY(1, 3, KEY_8)
279 MATRIX_KEY(2, 0, KEY_HOME)
280 MATRIX_KEY(2, 1, KEY_REPLY)
281 MATRIX_KEY(2, 2, KEY_2)
282 MATRIX_KEY(2, 3, KEY_6)
283 MATRIX_KEY(3, 0, KEY_VOLUMEUP)
284 MATRIX_KEY(3, 1, KEY_RIGHT)
285 MATRIX_KEY(3, 2, KEY_3)
286 MATRIX_KEY(3, 3, KEY_9)
287 MATRIX_KEY(3, 4, KEY_SWITCHVIDEOMODE)
288 MATRIX_KEY(4, 0, KEY_VOLUMEDOWN)
289 MATRIX_KEY(4, 1, KEY_BACK)
290 MATRIX_KEY(4, 2, KEY_CAMERA)
291 MATRIX_KEY(4, 3, KEY_KBDILLUMTOGGLE)
293 keypad,num-rows = <6>;
294 keypad,num-columns = <5>;
298 dragon_ethernet_gpios: ethernet-gpios {
304 power-source = <PM8058_GPIO_S3>;
307 dragon_bmp085_gpios: bmp085-gpios {
313 power-source = <PM8058_GPIO_S3>;
316 dragon_mpu3050_gpios: mpu3050-gpios {
322 power-source = <PM8058_GPIO_S3>;
325 dragon_sdcc3_gpios: sdcc3-gpios {
331 power-source = <PM8058_GPIO_S3>;
334 dragon_sdcc5_gpios: sdcc5-gpios {
340 qcom,pull-up-strength = <PMIC_GPIO_PULL_UP_30>;
341 power-source = <PM8058_GPIO_S3>;
344 dragon_ak8975_gpios: ak8975-gpios {
350 power-source = <PM8058_GPIO_S3>;
353 dragon_cm3605_gpios: cm3605-gpios {
354 /* Pin 34 connected to the proxy IRQ */
360 power-source = <PM8058_GPIO_S3>;
362 /* Pin 35 connected to ASET */
368 power-source = <PM8058_GPIO_S3>;
371 dragon_veth_gpios: veth-gpios {
382 dragon_cm3605_mpps: cm3605-mpps {
388 /* Let's use channel 5 */
389 qcom,amux-route = <PMIC_MPP_AMUX_ROUTE_CH5>;
390 power-source = <PM8058_GPIO_S3>;
396 /* Reference voltage 2.2 V */
397 xoadc-ref-supply = <&pm8058_l18>;
399 /* Board-specific channels */
401 /* Connected to AOUT of ALS sensor */
405 /* Connected to test point TP43 */
409 /* Connected to battery thermistor */
413 /* Connected to battery ID detector */
417 /* Connected to XO thermistor */
424 * The keypad LED @0x48 is routed to
425 * the sensor board where it is
426 * connected to an infrared LED
427 * SFH4650 (60mW, @850nm) next to the
428 * ambient light and proximity sensor
429 * Capella Microsystems CM3605.
431 compatible = "qcom,pm8058-keypad-led";
433 label = "pm8058:infrared:proximitysensor";
434 default-state = "off";
435 linux,default-trigger = "cm3605";
438 compatible = "qcom,pm8058-led";
440 label = "pm8058:red";
441 default-state = "off";
445 * This is actually green too on my
446 * board, but documented as yellow.
448 compatible = "qcom,pm8058-led";
450 label = "pm8058:yellow";
451 default-state = "off";
452 linux,default-trigger = "mmc0";
455 compatible = "qcom,pm8058-led";
457 label = "pm8058:green";
458 default-state = "on";
459 linux,default-trigger = "heartbeat";
466 qcom,mode = <GSBI_PROT_I2C>;
470 pinctrl-names = "default";
471 pinctrl-0 = <&dragon_gsbi8_i2c_pins>;
474 /* A 16KiB Platform ID EEPROM on the CPU carrier board */
475 compatible = "atmel,24c128";
477 vcc-supply = <&pm8058_s3>;
481 /* This Woolfson Micro device has an unrouted interrupt line */
482 compatible = "wlf,wm8903";
485 AVDD-supply = <&pm8058_l16>;
486 CPVDD-supply = <&pm8058_l16>;
487 DBVDD-supply = <&pm8058_s3>;
488 DCVDD-supply = <&pm8058_l0>;
494 micdet-delay = <100>;
495 gpio-cfg = <0xffffffff 0xffffffff 0 0xffffffff 0xffffffff>;
502 qcom,mode = <GSBI_PROT_I2C_UART>;
506 pinctrl-names = "default";
507 pinctrl-0 = <&dragon_gsbi12_serial_pins>;
512 pinctrl-names = "default";
513 pinctrl-0 = <&dragon_gsbi12_i2c_pins>;
516 compatible = "asahi-kasei,ak8975";
518 /* FIXME: GPIO33 has interrupt 224 on the PM8058 */
519 interrupt-parent = <&pm8058>;
520 interrupts = <224 IRQ_TYPE_EDGE_RISING>;
521 pinctrl-names = "default";
522 pinctrl-0 = <&dragon_ak8975_gpios>;
523 vid-supply = <&pm8058_lvs0>; // 1.8V
524 vdd-supply = <&pm8058_l14>; // 2.85V
527 compatible = "bosch,bmp085";
529 /* FIXME: GPIO16 has interrupt 207 on the PM8058 */
530 interrupt-parent = <&pm8058>;
531 interrupts = <207 IRQ_TYPE_EDGE_RISING>;
532 reset-gpios = <&tlmm 86 GPIO_ACTIVE_LOW>;
533 pinctrl-names = "default";
534 pinctrl-0 = <&dragon_bmp085_gpios>;
535 vddd-supply = <&pm8058_lvs0>; // 1.8V
536 vdda-supply = <&pm8058_l14>; // 2.85V
539 compatible = "invensense,mpu3050";
542 * GPIO17 has interrupt 208 on the
543 * PM8058, it is pulled high by a 10k
544 * resistor to VLOGIC so needs to be
545 * active low/falling edge.
547 interrupts-extended = <&pm8058 208 IRQ_TYPE_EDGE_FALLING>;
548 pinctrl-names = "default";
549 pinctrl-0 = <&dragon_mpu3050_gpios>;
550 vlogic-supply = <&pm8058_lvs0>; // 1.8V
551 vdd-supply = <&pm8058_l14>; // 2.85V
554 * The MPU-3050 acts as a hub for the
558 #address-cells = <1>;
562 compatible = "kionix,kxsd9";
564 interrupt-parent = <&tlmm>;
565 interrupts = <57 IRQ_TYPE_EDGE_FALLING>;
566 pinctrl-names = "default";
567 pinctrl-0 = <&dragon_kxsd9_gpios>;
568 iovdd-supply = <&pm8058_lvs0>; // 1.8V
569 vdd-supply = <&pm8058_l14>; // 2.85V
576 external-bus@1a100000 {
577 /* The EBI2 will instantiate first, then populate its children */
579 pinctrl-names = "default";
580 pinctrl-0 = <&dragon_ebi2_pins>;
583 * An on-board SMSC LAN9221 chip for "debug ethernet",
584 * which is actually just an ordinary ethernet on the
585 * EBI2. This has a 25MHz chrystal next to it, so no
586 * clocking is needed.
589 compatible = "smsc,lan9221", "smsc,lan9115";
592 * GPIO7 has interrupt 198 on the PM8058
593 * The second interrupt is the PME interrupt
594 * for network wakeup, connected to the TLMM.
596 interrupts-extended = <&pm8058 198 IRQ_TYPE_EDGE_FALLING>,
597 <&tlmm 29 IRQ_TYPE_EDGE_RISING>;
598 reset-gpios = <&tlmm 30 GPIO_ACTIVE_LOW>;
599 vdd33a-supply = <&dragon_veth>;
600 vddvario-supply = <&dragon_vario>;
601 pinctrl-names = "default";
602 pinctrl-0 = <&dragon_ethernet_gpios>;
605 smsc,force-external-phy;
606 /* IRQ on edge falling = active low */
611 * SLOW chipselect config
612 * Delay 9 cycles (140ns@64MHz) between SMSC
613 * LAN9221 Ethernet controller reads and writes
616 qcom,xmem-recovery-cycles = <0>;
617 qcom,xmem-write-hold-cycles = <3>;
618 qcom,xmem-write-delta-cycles = <31>;
619 qcom,xmem-read-delta-cycles = <28>;
620 qcom,xmem-write-wait-cycles = <9>;
621 qcom,xmem-read-wait-cycles = <9>;
627 * Set up of the PMIC RPM regulators for this board
628 * PM8901 supplies "preliminary regulators" whatever
632 vdd_l0-supply = <&pm8901_s4>;
633 vdd_l1-supply = <&vph>;
634 vdd_l2-supply = <&vph>;
635 vdd_l3-supply = <&vph>;
636 vdd_l4-supply = <&vph>;
637 vdd_l5-supply = <&vph>;
638 vdd_l6-supply = <&vph>;
639 /* vdd_s0-supply, vdd_s1-supply: SAW regulators */
640 vdd_s2-supply = <&vph>;
641 vdd_s3-supply = <&vph>;
642 vdd_s4-supply = <&vph>;
643 lvs0_in-supply = <&pm8058_s3>;
644 lvs1_in-supply = <&pm8901_s4>;
645 lvs2_in-supply = <&pm8058_l0>;
646 lvs3_in-supply = <&pm8058_s2>;
647 mvs_in-supply = <&pm8058_s3>;
650 regulator-min-microvolt = <1200000>;
651 regulator-max-microvolt = <1200000>;
655 regulator-min-microvolt = <3300000>;
656 regulator-max-microvolt = <3300000>;
660 regulator-min-microvolt = <2850000>;
661 regulator-max-microvolt = <3300000>;
665 regulator-min-microvolt = <3300000>;
666 regulator-max-microvolt = <3300000>;
670 regulator-min-microvolt = <2600000>;
671 regulator-max-microvolt = <2600000>;
675 regulator-min-microvolt = <2850000>;
676 regulator-max-microvolt = <2850000>;
680 regulator-min-microvolt = <2200000>;
681 regulator-max-microvolt = <2200000>;
685 /* s0 and s1 are SAW regulators controlled over SPM */
687 regulator-min-microvolt = <1300000>;
688 regulator-max-microvolt = <1300000>;
689 qcom,switch-mode-frequency = <1600000>;
693 regulator-min-microvolt = <1100000>;
694 regulator-max-microvolt = <1100000>;
695 qcom,switch-mode-frequency = <1600000>;
699 regulator-min-microvolt = <1225000>;
700 regulator-max-microvolt = <1225000>;
701 qcom,switch-mode-frequency = <1600000>;
705 /* LVS0 thru 3 and mvs0 are just switches */
717 vdd_l0_l1_lvs-supply = <&pm8058_s3>;
718 vdd_l2_l11_l12-supply = <&vph>;
719 vdd_l3_l4_l5-supply = <&vph>;
720 vdd_l6_l7-supply = <&vph>;
721 vdd_l8-supply = <&vph>;
722 vdd_l9-supply = <&vph>;
723 vdd_l10-supply = <&vph>;
724 vdd_l13_l16-supply = <&pm8058_s4>;
725 vdd_l14_l15-supply = <&vph>;
726 vdd_l17_l18-supply = <&vph>;
727 vdd_l19_l20-supply = <&vph>;
728 vdd_l21-supply = <&pm8058_s3>;
729 vdd_l22-supply = <&pm8058_s3>;
730 vdd_l23_l24_l25-supply = <&pm8058_s3>;
731 vdd_s0-supply = <&vph>;
732 vdd_s1-supply = <&vph>;
733 vdd_s2-supply = <&vph>;
734 vdd_s3-supply = <&vph>;
735 vdd_s4-supply = <&vph>;
736 vdd_ncp-supply = <&vph>;
739 regulator-min-microvolt = <1200000>;
740 regulator-max-microvolt = <1200000>;
744 regulator-min-microvolt = <1200000>;
745 regulator-max-microvolt = <1200000>;
749 regulator-min-microvolt = <1800000>;
750 regulator-max-microvolt = <2600000>;
754 regulator-min-microvolt = <1800000>;
755 regulator-max-microvolt = <1800000>;
759 regulator-min-microvolt = <2850000>;
760 regulator-max-microvolt = <2850000>;
764 regulator-min-microvolt = <2850000>;
765 regulator-max-microvolt = <2850000>;
769 regulator-min-microvolt = <3000000>;
770 regulator-max-microvolt = <3600000>;
774 regulator-min-microvolt = <1800000>;
775 regulator-max-microvolt = <1800000>;
779 regulator-min-microvolt = <2900000>;
780 regulator-max-microvolt = <3050000>;
784 regulator-min-microvolt = <1800000>;
785 regulator-max-microvolt = <1800000>;
789 regulator-min-microvolt = <2600000>;
790 regulator-max-microvolt = <2600000>;
794 regulator-min-microvolt = <1500000>;
795 regulator-max-microvolt = <1500000>;
799 regulator-min-microvolt = <2900000>;
800 regulator-max-microvolt = <2900000>;
804 regulator-min-microvolt = <2050000>;
805 regulator-max-microvolt = <2050000>;
809 regulator-min-microvolt = <2850000>;
810 regulator-max-microvolt = <2850000>;
813 regulator-min-microvolt = <2850000>;
814 regulator-max-microvolt = <2850000>;
818 regulator-min-microvolt = <1800000>;
819 regulator-max-microvolt = <1800000>;
824 // 1.5V according to schematic
825 regulator-min-microvolt = <2600000>;
826 regulator-max-microvolt = <2600000>;
830 regulator-min-microvolt = <2200000>;
831 regulator-max-microvolt = <2200000>;
835 regulator-min-microvolt = <2500000>;
836 regulator-max-microvolt = <2500000>;
840 regulator-min-microvolt = <1800000>;
841 regulator-max-microvolt = <1800000>;
845 // 1.1 V according to schematic
846 regulator-min-microvolt = <1200000>;
847 regulator-max-microvolt = <1200000>;
852 // 1.2 V according to schematic
853 regulator-min-microvolt = <1150000>;
854 regulator-max-microvolt = <1150000>;
859 regulator-min-microvolt = <1200000>;
860 regulator-max-microvolt = <1200000>;
865 regulator-min-microvolt = <1200000>;
866 regulator-max-microvolt = <1200000>;
870 regulator-min-microvolt = <1200000>;
871 regulator-max-microvolt = <1200000>;
876 // regulator-min-microvolt = <500000>;
877 // regulator-max-microvolt = <1325000>;
878 regulator-min-microvolt = <1100000>;
879 regulator-max-microvolt = <1100000>;
880 qcom,switch-mode-frequency = <1600000>;
884 // regulator-min-microvolt = <500000>;
885 // regulator-max-microvolt = <1250000>;
886 regulator-min-microvolt = <1100000>;
887 regulator-max-microvolt = <1100000>;
888 qcom,switch-mode-frequency = <1600000>;
892 // 1.3 V according to schematic
893 regulator-min-microvolt = <1200000>;
894 regulator-max-microvolt = <1400000>;
895 qcom,switch-mode-frequency = <1600000>;
899 regulator-min-microvolt = <1800000>;
900 regulator-max-microvolt = <1800000>;
901 qcom,switch-mode-frequency = <1600000>;
906 regulator-min-microvolt = <2200000>;
907 regulator-max-microvolt = <2200000>;
908 qcom,switch-mode-frequency = <1600000>;
913 /* LVS0 and LVS1 are just switches */
922 regulator-min-microvolt = <1800000>;
923 regulator-max-microvolt = <1800000>;
924 qcom,switch-mode-frequency = <1600000>;
929 /* Internal 3.69 GiB eMMC */
932 pinctrl-names = "default";
933 pinctrl-0 = <&dragon_sdcc1_pins>;
934 vmmc-supply = <&pm8901_l5>;
935 vqmmc-supply = <&pm8901_lvs0>;
938 /* External micro SD card, directly connected, pulled up to 2.85 V */
941 /* Enable SSBI GPIO 22 as input, use for card detect */
942 pinctrl-names = "default";
943 pinctrl-0 = <&dragon_sdcc3_pins>, <&dragon_sdcc3_gpios>;
944 cd-gpios = <&pm8058_gpio 22 GPIO_ACTIVE_LOW>;
945 wp-gpios = <&tlmm 110 GPIO_ACTIVE_HIGH>;
946 vmmc-supply = <&pm8058_l14>;
950 * Second external micro SD card, using two TXB104RGYR levelshifters
951 * to lift from 1.8 V to 2.85 V
955 /* Enable SSBI GPIO 26 as input, use for card detect */
956 pinctrl-names = "default";
957 pinctrl-0 = <&dragon_sdcc5_pins>, <&dragon_sdcc5_gpios>;
958 cd-gpios = <&pm8058_gpio 26 GPIO_ACTIVE_LOW>;
959 wp-gpios = <&tlmm 106 GPIO_ACTIVE_HIGH>;
960 vmmc-supply = <&pm8058_l14>;
961 vqmmc-supply = <&dragon_vio_txb>;