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