Merge remote-tracking branch 'selinux/next'
[deliverable/linux.git] / arch / arm / boot / dts / qcom-apq8060-dragonboard.dts
CommitLineData
4892e075
LW
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 "qcom-msm8660.dtsi"
27
28/ {
29 model = "Qualcomm APQ8060 Dragonboard";
30 compatible = "qcom,apq8060-dragonboard", "qcom,msm8660";
31
32 aliases {
33 serial0 = &gsbi12_serial;
34 };
35
36 chosen {
37 stdout-path = "serial0:115200n8";
38 };
39
40 regulators {
41 compatible = "simple-bus";
42
43 /* Main power of the board: 3.7V */
44 vph: regulator-fixed {
45 compatible = "regulator-fixed";
46 regulator-min-microvolt = <3700000>;
47 regulator-max-microvolt = <3700000>;
48 regulator-name = "VPH";
49 regulator-type = "voltage";
50 regulator-always-on;
51 regulator-boot-on;
52 };
53
54 /* This is a levelshifter for SDCC5 */
55 dragon_vio_txb: txb0104rgyr {
56 compatible = "regulator-fixed";
57 regulator-name = "Dragon SDCC levelshifter";
58 vin-supply = <&pm8058_l14>;
59 regulator-always-on;
60 };
61 };
62
63 soc {
64 pinctrl@800000 {
65 /* eMMMC pins, all 8 data lines connected */
66 dragon_sdcc1_pins: sdcc1 {
67 mux {
68 pins = "gpio159", "gpio160", "gpio161",
69 "gpio162", "gpio163", "gpio164",
70 "gpio165", "gpio166", "gpio167",
71 "gpio168";
72 function = "sdc1";
73 };
74 clk {
75 pins = "gpio167"; /* SDC5 CLK */
76 drive-strength = <16>;
77 bias-disable;
78 };
79 cmd {
80 pins = "gpio168"; /* SDC5 CMD */
81 drive-strength = <10>;
82 bias-pull-up;
83 };
84 data {
85 /* SDC5 D0 to D7 */
86 pins = "gpio159", "gpio160", "gpio161", "gpio162",
87 "gpio163", "gpio164", "gpio165", "gpio166";
88 drive-strength = <10>;
89 bias-pull-up;
90 };
91 };
92
93 /*
94 * The SDCC3 pins are hardcoded (non-muxable) but need some pin
95 * configuration.
96 */
97 dragon_sdcc3_pins: sdcc3 {
98 clk {
99 pins = "sdc3_clk";
100 drive-strength = <8>;
101 bias-disable;
102 };
103 cmd {
104 pins = "sdc3_cmd";
105 drive-strength = <8>;
106 bias-pull-up;
107 };
108 data {
109 pins = "sdc3_data";
110 drive-strength = <8>;
111 bias-pull-up;
112 };
113 };
114
115 /* Second SD card slot pins */
116 dragon_sdcc5_pins: sdcc5 {
117 mux {
118 pins = "gpio95", "gpio96", "gpio97",
119 "gpio98", "gpio99", "gpio100";
120 function = "sdc5";
121 };
122 clk {
123 pins = "gpio97"; /* SDC5 CLK */
124 drive-strength = <16>;
125 bias-disable;
126 };
127 cmd {
128 pins = "gpio95"; /* SDC5 CMD */
129 drive-strength = <10>;
130 bias-pull-up;
131 };
132 data {
133 /* SDC5 D0 to D3 */
134 pins = "gpio96", "gpio98", "gpio99", "gpio100";
135 drive-strength = <10>;
136 bias-pull-up;
137 };
138 };
139
140 dragon_gsbi12_i2c_pins: gsbi12_i2c {
141 mux {
142 pins = "gpio115", "gpio116";
143 function = "gsbi12";
144 };
145 pinconf {
146 pins = "gpio115", "gpio116";
147 drive-strength = <16>;
148 /* These have external pull-up 4.7kOhm to 1.8V */
149 bias-disable;
150 };
151 };
152
153 /* Primary serial port uart 0 pins */
154 dragon_gsbi12_serial_pins: gsbi12_serial {
155 mux {
156 pins = "gpio117", "gpio118";
157 function = "gsbi12";
158 };
159 tx {
160 pins = "gpio117";
161 drive-strength = <8>;
162 bias-disable;
163 };
164 rx {
165 pins = "gpio118";
166 drive-strength = <2>;
167 bias-pull-up;
168 };
169 };
170 };
171
172 qcom,ssbi@500000 {
173 pmic@0 {
174 keypad@148 {
175 linux,keymap = <
176 MATRIX_KEY(0, 0, KEY_MENU)
177 MATRIX_KEY(0, 2, KEY_1)
178 MATRIX_KEY(0, 3, KEY_4)
179 MATRIX_KEY(0, 4, KEY_7)
180 MATRIX_KEY(1, 0, KEY_UP)
181 MATRIX_KEY(1, 1, KEY_LEFT)
182 MATRIX_KEY(1, 2, KEY_DOWN)
183 MATRIX_KEY(1, 3, KEY_5)
184 MATRIX_KEY(1, 3, KEY_8)
185 MATRIX_KEY(2, 0, KEY_HOME)
186 MATRIX_KEY(2, 1, KEY_REPLY)
187 MATRIX_KEY(2, 2, KEY_2)
188 MATRIX_KEY(2, 3, KEY_6)
189 MATRIX_KEY(3, 0, KEY_VOLUMEUP)
190 MATRIX_KEY(3, 1, KEY_RIGHT)
191 MATRIX_KEY(3, 2, KEY_3)
192 MATRIX_KEY(3, 3, KEY_9)
193 MATRIX_KEY(3, 4, KEY_SWITCHVIDEOMODE)
194 MATRIX_KEY(4, 0, KEY_VOLUMEDOWN)
195 MATRIX_KEY(4, 1, KEY_BACK)
196 MATRIX_KEY(4, 2, KEY_CAMERA)
197 MATRIX_KEY(4, 3, KEY_KBDILLUMTOGGLE)
198 >;
199 keypad,num-rows = <6>;
200 keypad,num-columns = <5>;
201 };
202
203 gpio@150 {
204 dragon_bmp085_gpios: bmp085-gpios {
205 pinconf {
206 pins = "gpio16";
207 function = "normal";
208 input-enable;
209 bias-disable;
210 power-source = <PM8058_GPIO_S3>;
211 };
212 };
213 dragon_sdcc3_gpios: sdcc3-gpios {
214 pinconf {
215 pins = "gpio22";
216 function = "normal";
217 input-enable;
218 bias-disable;
219 power-source = <PM8058_GPIO_S3>;
220 };
221 };
222 dragon_sdcc5_gpios: sdcc5-gpios {
223 pinconf {
224 pins = "gpio26";
225 function = "normal";
226 input-enable;
227 bias-pull-up;
228 qcom,pull-up-strength = <PMIC_GPIO_PULL_UP_30>;
229 power-source = <PM8058_GPIO_S3>;
230 };
231 };
232 dragon_ak8975_gpios: ak8975-gpios {
233 pinconf {
234 pins = "gpio33";
235 function = "normal";
236 input-enable;
237 bias-disable;
238 power-source = <PM8058_GPIO_S3>;
239 };
240 };
241 };
20fac0ce
LW
242
243 led@48 {
244 /*
245 * The keypad LED @0x48 is routed to
246 * the sensor board where it is
247 * connected to an infrared LED
248 * SFH4650 (60mW, @850nm) next to the
249 * ambient light and proximity sensor
250 * Capella Microsystems CM3605.
251 */
252 compatible = "qcom,pm8058-keypad-led";
253 reg = <0x48>;
254 label = "pm8058:infrared:proximitysensor";
255 default-state = "off";
256 };
257 led@131 {
258 compatible = "qcom,pm8058-led";
259 reg = <0x131>;
260 label = "pm8058:red";
261 default-state = "off";
262 };
263 led@132 {
264 /*
265 * This is actually green too on my
266 * board, but documented as yellow.
267 */
268 compatible = "qcom,pm8058-led";
269 reg = <0x132>;
270 label = "pm8058:yellow";
271 default-state = "off";
272 linux,default-trigger = "mmc0";
273 };
274 led@133 {
275 compatible = "qcom,pm8058-led";
276 reg = <0x133>;
277 label = "pm8058:green";
278 default-state = "on";
279 linux,default-trigger = "heartbeat";
280 };
4892e075
LW
281 };
282 };
283
284 gsbi@19c00000 {
285 status = "ok";
286 qcom,mode = <GSBI_PROT_I2C_UART>;
287
288 serial@19c40000 {
289 status = "ok";
290 pinctrl-names = "default";
291 pinctrl-0 = <&dragon_gsbi12_serial_pins>;
292 };
293
294 i2c@19c80000 {
295 status = "ok";
296 pinctrl-names = "default";
297 pinctrl-0 = <&dragon_gsbi12_i2c_pins>;
298
299 ak8975@0c {
300 compatible = "asahi-kasei,ak8975";
301 reg = <0x0c>;
302 /* GPIO33 has interrupt 224 on the PM8058 */
303 interrupt-parent = <&pm8058_gpio>;
304 interrupts = <224 IRQ_TYPE_EDGE_RISING>;
305 pinctrl-names = "default";
306 pinctrl-0 = <&dragon_ak8975_gpios>;
307 vid-supply = <&pm8058_lvs0>; // 1.8V
308 vdd-supply = <&pm8058_l14>; // 2.85V
309 };
310 bmp085@77 {
311 compatible = "bosch,bmp085";
312 reg = <0x77>;
313 /* GPIO16 has interrupt 207 on the PM8058 */
314 interrupt-parent = <&pm8058_gpio>;
315 interrupts = <207 IRQ_TYPE_EDGE_RISING>;
316 reset-gpios = <&tlmm 86 GPIO_ACTIVE_LOW>;
317 pinctrl-names = "default";
318 pinctrl-0 = <&dragon_bmp085_gpios>;
319 vddd-supply = <&pm8058_lvs0>; // 1.8V
320 vdda-supply = <&pm8058_l14>; // 2.85V
321 };
322 };
323 };
324
325 rpm@104000 {
326 /*
327 * Set up of the PMIC RPM regulators for this board
328 * PM8901 supplies "preliminary regulators" whatever
329 * that means
330 */
331 pm8901-regulators {
332 vdd_l0-supply = <&pm8901_s4>;
333 vdd_l1-supply = <&vph>;
334 vdd_l2-supply = <&vph>;
335 vdd_l3-supply = <&vph>;
336 vdd_l4-supply = <&vph>;
337 vdd_l5-supply = <&vph>;
338 vdd_l6-supply = <&vph>;
339 /* vdd_s0-supply, vdd_s1-supply: SAW regulators */
340 vdd_s2-supply = <&vph>;
341 vdd_s3-supply = <&vph>;
342 vdd_s4-supply = <&vph>;
343 lvs0_in-supply = <&pm8058_s3>;
344 lvs1_in-supply = <&pm8901_s4>;
345 lvs2_in-supply = <&pm8058_l0>;
346 lvs3_in-supply = <&pm8058_s2>;
347 mvs_in-supply = <&pm8058_s3>;
348
349 l0 {
350 regulator-min-microvolt = <1200000>;
351 regulator-max-microvolt = <1200000>;
352 bias-pull-down;
353 };
354 l1 {
355 regulator-min-microvolt = <3300000>;
356 regulator-max-microvolt = <3300000>;
357 bias-pull-down;
358 };
359 l2 {
360 regulator-min-microvolt = <2850000>;
361 regulator-max-microvolt = <3300000>;
362 bias-pull-down;
363 };
364 l3 {
365 regulator-min-microvolt = <3300000>;
366 regulator-max-microvolt = <3300000>;
367 bias-pull-down;
368 };
369 l4 {
370 regulator-min-microvolt = <2600000>;
371 regulator-max-microvolt = <2600000>;
372 bias-pull-down;
373 };
374 l5 {
375 regulator-min-microvolt = <2850000>;
376 regulator-max-microvolt = <2850000>;
377 bias-pull-down;
378 };
379 l6 {
380 regulator-min-microvolt = <2200000>;
381 regulator-max-microvolt = <2200000>;
382 bias-pull-down;
383 };
384
385 /* s0 and s1 are SAW regulators controlled over SPM */
386 s2 {
387 regulator-min-microvolt = <1300000>;
388 regulator-max-microvolt = <1300000>;
389 qcom,switch-mode-frequency = <1600000>;
390 bias-pull-down;
391 };
392 s3 {
393 regulator-min-microvolt = <1100000>;
394 regulator-max-microvolt = <1100000>;
395 qcom,switch-mode-frequency = <1600000>;
396 bias-pull-down;
397 };
398 s4 {
399 regulator-min-microvolt = <1225000>;
400 regulator-max-microvolt = <1225000>;
401 qcom,switch-mode-frequency = <1600000>;
402 bias-pull-down;
403 };
404
405 /* LVS0 thru 3 and mvs0 are just switches */
406 lvs0 {
407 regulator-always-on;
408 };
409 lvs1 { };
410 lvs2 { };
411 lvs3 { };
412 mvs0 {};
413
414 };
415
416 pm8058-regulators {
417 vdd_l0_l1_lvs-supply = <&pm8058_s3>;
418 vdd_l2_l11_l12-supply = <&vph>;
419 vdd_l3_l4_l5-supply = <&vph>;
420 vdd_l6_l7-supply = <&vph>;
421 vdd_l8-supply = <&vph>;
422 vdd_l9-supply = <&vph>;
423 vdd_l10-supply = <&vph>;
424 vdd_l13_l16-supply = <&pm8058_s4>;
425 vdd_l14_l15-supply = <&vph>;
426 vdd_l17_l18-supply = <&vph>;
427 vdd_l19_l20-supply = <&vph>;
428 vdd_l21-supply = <&pm8058_s3>;
429 vdd_l22-supply = <&pm8058_s3>;
430 vdd_l23_l24_l25-supply = <&pm8058_s3>;
431 vdd_s0-supply = <&vph>;
432 vdd_s1-supply = <&vph>;
433 vdd_s2-supply = <&vph>;
434 vdd_s3-supply = <&vph>;
435 vdd_s4-supply = <&vph>;
436 vdd_ncp-supply = <&vph>;
437
438 l0 {
439 regulator-min-microvolt = <1200000>;
440 regulator-max-microvolt = <1200000>;
441 bias-pull-down;
442 };
443 l1 {
444 regulator-min-microvolt = <1200000>;
445 regulator-max-microvolt = <1200000>;
446 bias-pull-down;
447 };
448 l2 {
449 regulator-min-microvolt = <1800000>;
450 regulator-max-microvolt = <2600000>;
451 bias-pull-down;
452 };
453 l3 {
454 regulator-min-microvolt = <1800000>;
455 regulator-max-microvolt = <1800000>;
456 bias-pull-down;
457 };
458 l4 {
459 regulator-min-microvolt = <2850000>;
460 regulator-max-microvolt = <2850000>;
461 bias-pull-down;
462 };
463 l5 {
464 regulator-min-microvolt = <2850000>;
465 regulator-max-microvolt = <2850000>;
466 bias-pull-down;
467 };
468 l6 {
469 regulator-min-microvolt = <3000000>;
470 regulator-max-microvolt = <3600000>;
471 bias-pull-down;
472 };
473 l7 {
474 regulator-min-microvolt = <1800000>;
475 regulator-max-microvolt = <1800000>;
476 bias-pull-down;
477 };
478 l8 {
479 regulator-min-microvolt = <2900000>;
480 regulator-max-microvolt = <3050000>;
481 bias-pull-down;
482 };
483 l9 {
484 regulator-min-microvolt = <1800000>;
485 regulator-max-microvolt = <1800000>;
486 bias-pull-down;
487 };
488 l10 {
489 regulator-min-microvolt = <2600000>;
490 regulator-max-microvolt = <2600000>;
491 bias-pull-down;
492 };
493 l11 {
494 regulator-min-microvolt = <1500000>;
495 regulator-max-microvolt = <1500000>;
496 bias-pull-down;
497 };
498 l12 {
499 regulator-min-microvolt = <2900000>;
500 regulator-max-microvolt = <2900000>;
501 bias-pull-down;
502 };
503 l13 {
504 regulator-min-microvolt = <2050000>;
505 regulator-max-microvolt = <2050000>;
506 bias-pull-down;
507 };
508 l14 {
509 regulator-min-microvolt = <2850000>;
510 regulator-max-microvolt = <2850000>;
511 };
512 l15 {
513 regulator-min-microvolt = <2850000>;
514 regulator-max-microvolt = <2850000>;
515 bias-pull-down;
516 };
517 l16 {
518 regulator-min-microvolt = <1800000>;
519 regulator-max-microvolt = <1800000>;
520 bias-pull-down;
521 regulator-always-on;
522 };
523 l17 {
524 // 1.5V according to schematic
525 regulator-min-microvolt = <2600000>;
526 regulator-max-microvolt = <2600000>;
527 bias-pull-down;
528 };
529 l18 {
530 regulator-min-microvolt = <2200000>;
531 regulator-max-microvolt = <2200000>;
532 bias-pull-down;
533 };
534 l19 {
535 regulator-min-microvolt = <2500000>;
536 regulator-max-microvolt = <2500000>;
537 bias-pull-down;
538 };
539 l20 {
540 regulator-min-microvolt = <1800000>;
541 regulator-max-microvolt = <1800000>;
542 bias-pull-down;
543 };
544 l21 {
545 // 1.1 V according to schematic
546 regulator-min-microvolt = <1200000>;
547 regulator-max-microvolt = <1200000>;
548 bias-pull-down;
549 regulator-always-on;
550 };
551 l22 {
552 // 1.2 V according to schematic
553 regulator-min-microvolt = <1150000>;
554 regulator-max-microvolt = <1150000>;
555 bias-pull-down;
556 };
557 l23 {
558 // Unused
559 regulator-min-microvolt = <1200000>;
560 regulator-max-microvolt = <1200000>;
561 bias-pull-down;
562 };
563 l24 {
564 // Unused
565 regulator-min-microvolt = <1200000>;
566 regulator-max-microvolt = <1200000>;
567 bias-pull-down;
568 };
569 l25 {
570 regulator-min-microvolt = <1200000>;
571 regulator-max-microvolt = <1200000>;
572 bias-pull-down;
573 };
574
575 s0 {
576 // regulator-min-microvolt = <500000>;
577 // regulator-max-microvolt = <1325000>;
578 regulator-min-microvolt = <1100000>;
579 regulator-max-microvolt = <1100000>;
580 qcom,switch-mode-frequency = <1600000>;
581 bias-pull-down;
582 };
583 s1 {
584 // regulator-min-microvolt = <500000>;
585 // regulator-max-microvolt = <1250000>;
586 regulator-min-microvolt = <1100000>;
587 regulator-max-microvolt = <1100000>;
588 qcom,switch-mode-frequency = <1600000>;
589 bias-pull-down;
590 };
591 s2 {
592 // 1.3 V according to schematic
593 regulator-min-microvolt = <1200000>;
594 regulator-max-microvolt = <1400000>;
595 qcom,switch-mode-frequency = <1600000>;
596 bias-pull-down;
597 };
598 s3 {
599 regulator-min-microvolt = <1800000>;
600 regulator-max-microvolt = <1800000>;
601 qcom,switch-mode-frequency = <1600000>;
602 regulator-always-on;
603 bias-pull-down;
604 };
605 s4 {
606 regulator-min-microvolt = <2200000>;
607 regulator-max-microvolt = <2200000>;
608 qcom,switch-mode-frequency = <1600000>;
609 regulator-always-on;
610 bias-pull-down;
611 };
612
613 /* LVS0 and LVS1 are just switches */
614 lvs0 {
615 bias-pull-down;
616 };
617 lvs1 {
618 bias-pull-down;
619 };
620
621 ncp {
622 regulator-min-microvolt = <1800000>;
623 regulator-max-microvolt = <1800000>;
624 qcom,switch-mode-frequency = <1600000>;
625 };
626 };
627 };
628 amba {
629 /* Internal 3.69 GiB eMMC */
630 sdcc@12400000 {
631 status = "okay";
632 pinctrl-names = "default";
633 pinctrl-0 = <&dragon_sdcc1_pins>;
634 vmmc-supply = <&pm8901_l5>;
635 vqmmc-supply = <&pm8901_lvs0>;
636 };
637
638 /* External micro SD card, directly connected, pulled up to 2.85 V */
639 sdcc@12180000 {
640 status = "okay";
641 /* Enable SSBI GPIO 22 as input, use for card detect */
642 pinctrl-names = "default";
643 pinctrl-0 = <&dragon_sdcc3_pins>, <&dragon_sdcc3_gpios>;
644 cd-gpios = <&pm8058_gpio 22 GPIO_ACTIVE_LOW>;
645 wp-gpios = <&tlmm 110 GPIO_ACTIVE_HIGH>;
646 vmmc-supply = <&pm8058_l14>;
647 };
648
649 /*
650 * Second external micro SD card, using two TXB104RGYR levelshifters
651 * to lift from 1.8 V to 2.85 V
652 */
653 sdcc@12200000 {
654 status = "okay";
655 /* Enable SSBI GPIO 26 as input, use for card detect */
656 pinctrl-names = "default";
657 pinctrl-0 = <&dragon_sdcc5_pins>, <&dragon_sdcc5_gpios>;
658 cd-gpios = <&pm8058_gpio 26 GPIO_ACTIVE_LOW>;
659 wp-gpios = <&tlmm 106 GPIO_ACTIVE_HIGH>;
660 vmmc-supply = <&pm8058_l14>;
661 vqmmc-supply = <&dragon_vio_txb>;
662 };
663 };
664 };
665};
This page took 0.061641 seconds and 5 git commands to generate.