blob: 009afd8212c223231c783e90bf973a4882c31d36 [file] [log] [blame]
Tom Rini53633a82024-02-29 12:33:36 -05001// 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"
Tom Rini93743d22024-04-01 09:08:13 -04008#include "pm8058.dtsi"
Tom Rini53633a82024-02-29 12:33:36 -05009
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 */
Tom Rini93743d22024-04-01 09:08:13 -040075 io-channels = <&pm8058_xoadc 0x00 0x05>;
Tom Rini53633a82024-02-29 12:33:36 -050076 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
Tom Rini93743d22024-04-01 09:08:13 -0400276&pm8058 {
277 interrupts-extended = <&tlmm 88 IRQ_TYPE_LEVEL_LOW>;
278};
279
Tom Rini53633a82024-02-29 12:33:36 -0500280&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 {
Tom Rini93743d22024-04-01 09:08:13 -0400455 compatible = "qcom,rpm-pm8901-regulators";
456
Tom Rini53633a82024-02-29 12:33:36 -0500457 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
Tom Rini93743d22024-04-01 09:08:13 -0400474 pm8901_l0: l0 {
Tom Rini53633a82024-02-29 12:33:36 -0500475 regulator-min-microvolt = <1200000>;
476 regulator-max-microvolt = <1200000>;
477 bias-pull-down;
478 };
Tom Rini93743d22024-04-01 09:08:13 -0400479
480 pm8901_l1: l1 {
Tom Rini53633a82024-02-29 12:33:36 -0500481 regulator-min-microvolt = <3300000>;
482 regulator-max-microvolt = <3300000>;
483 bias-pull-down;
484 };
Tom Rini93743d22024-04-01 09:08:13 -0400485
486 pm8901_l2: l2 {
Tom Rini53633a82024-02-29 12:33:36 -0500487 /* TMA340 requires strictly 3.3V */
488 regulator-min-microvolt = <3300000>;
489 regulator-max-microvolt = <3300000>;
490 bias-pull-down;
491 };
Tom Rini93743d22024-04-01 09:08:13 -0400492
493 pm8901_l3: l3 {
Tom Rini53633a82024-02-29 12:33:36 -0500494 regulator-min-microvolt = <3300000>;
495 regulator-max-microvolt = <3300000>;
496 bias-pull-down;
497 };
Tom Rini93743d22024-04-01 09:08:13 -0400498
499 pm8901_l4: l4 {
Tom Rini53633a82024-02-29 12:33:36 -0500500 regulator-min-microvolt = <2600000>;
501 regulator-max-microvolt = <2600000>;
502 bias-pull-down;
503 };
Tom Rini93743d22024-04-01 09:08:13 -0400504
505 pm8901_l5: l5 {
Tom Rini53633a82024-02-29 12:33:36 -0500506 regulator-min-microvolt = <2850000>;
507 regulator-max-microvolt = <2850000>;
508 bias-pull-down;
509 };
Tom Rini93743d22024-04-01 09:08:13 -0400510
511 pm8901_l6: l6 {
Tom Rini53633a82024-02-29 12:33:36 -0500512 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 */
Tom Rini93743d22024-04-01 09:08:13 -0400518 pm8901_s2: s2 {
Tom Rini53633a82024-02-29 12:33:36 -0500519 regulator-min-microvolt = <1300000>;
520 regulator-max-microvolt = <1300000>;
521 qcom,switch-mode-frequency = <1600000>;
522 bias-pull-down;
523 };
Tom Rini93743d22024-04-01 09:08:13 -0400524 pm8901_s3: s3 {
Tom Rini53633a82024-02-29 12:33:36 -0500525 regulator-min-microvolt = <1100000>;
526 regulator-max-microvolt = <1100000>;
527 qcom,switch-mode-frequency = <1600000>;
528 bias-pull-down;
529 };
Tom Rini93743d22024-04-01 09:08:13 -0400530 pm8901_s4: s4 {
Tom Rini53633a82024-02-29 12:33:36 -0500531 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 */
Tom Rini93743d22024-04-01 09:08:13 -0400538 pm8901_lvs0: lvs0 {
Tom Rini53633a82024-02-29 12:33:36 -0500539 regulator-always-on;
540 };
Tom Rini93743d22024-04-01 09:08:13 -0400541
542 pm8901_lvs1: lvs1 { };
543
544 pm8901_lvs2: lvs2 { };
545
546 pm8901_lvs3: lvs3 { };
Tom Rini53633a82024-02-29 12:33:36 -0500547
Tom Rini93743d22024-04-01 09:08:13 -0400548 pm8901_mvs: mvs { };
Tom Rini53633a82024-02-29 12:33:36 -0500549 };
550
551 regulators-1 {
Tom Rini93743d22024-04-01 09:08:13 -0400552 compatible = "qcom,rpm-pm8058-regulators";
553
Tom Rini53633a82024-02-29 12:33:36 -0500554 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
Tom Rini93743d22024-04-01 09:08:13 -0400575 pm8058_l0: l0 {
Tom Rini53633a82024-02-29 12:33:36 -0500576 regulator-min-microvolt = <1200000>;
577 regulator-max-microvolt = <1200000>;
578 bias-pull-down;
579 };
Tom Rini93743d22024-04-01 09:08:13 -0400580
581 pm8058_l1: l1 {
Tom Rini53633a82024-02-29 12:33:36 -0500582 regulator-min-microvolt = <1200000>;
583 regulator-max-microvolt = <1200000>;
584 bias-pull-down;
585 };
Tom Rini93743d22024-04-01 09:08:13 -0400586
587 pm8058_l2: l2 {
Tom Rini53633a82024-02-29 12:33:36 -0500588 regulator-min-microvolt = <1800000>;
589 regulator-max-microvolt = <2600000>;
590 bias-pull-down;
591 };
Tom Rini93743d22024-04-01 09:08:13 -0400592
593 pm8058_l3: l3 {
Tom Rini53633a82024-02-29 12:33:36 -0500594 regulator-min-microvolt = <1800000>;
595 regulator-max-microvolt = <1800000>;
596 bias-pull-down;
597 };
Tom Rini93743d22024-04-01 09:08:13 -0400598
599 pm8058_l4: l4 {
Tom Rini53633a82024-02-29 12:33:36 -0500600 regulator-min-microvolt = <2850000>;
601 regulator-max-microvolt = <2850000>;
602 bias-pull-down;
603 };
Tom Rini93743d22024-04-01 09:08:13 -0400604
605 pm8058_l5: l5 {
Tom Rini53633a82024-02-29 12:33:36 -0500606 regulator-min-microvolt = <2850000>;
607 regulator-max-microvolt = <2850000>;
608 bias-pull-down;
609 };
Tom Rini93743d22024-04-01 09:08:13 -0400610
611 pm8058_l6: l6 {
Tom Rini53633a82024-02-29 12:33:36 -0500612 regulator-min-microvolt = <3000000>;
613 regulator-max-microvolt = <3600000>;
614 bias-pull-down;
615 };
Tom Rini93743d22024-04-01 09:08:13 -0400616
617 pm8058_l7: l7 {
Tom Rini53633a82024-02-29 12:33:36 -0500618 regulator-min-microvolt = <1800000>;
619 regulator-max-microvolt = <1800000>;
620 bias-pull-down;
621 };
Tom Rini93743d22024-04-01 09:08:13 -0400622
623 pm8058_l8: l8 {
Tom Rini53633a82024-02-29 12:33:36 -0500624 regulator-min-microvolt = <2900000>;
625 regulator-max-microvolt = <3050000>;
626 bias-pull-down;
627 };
Tom Rini93743d22024-04-01 09:08:13 -0400628
629 pm8058_l9: l9 {
Tom Rini53633a82024-02-29 12:33:36 -0500630 regulator-min-microvolt = <1800000>;
631 regulator-max-microvolt = <1800000>;
632 bias-pull-down;
633 };
Tom Rini93743d22024-04-01 09:08:13 -0400634
635 pm8058_l10: l10 {
Tom Rini53633a82024-02-29 12:33:36 -0500636 regulator-min-microvolt = <2600000>;
637 regulator-max-microvolt = <2600000>;
638 bias-pull-down;
639 };
Tom Rini93743d22024-04-01 09:08:13 -0400640
641 pm8058_l11: l11 {
Tom Rini53633a82024-02-29 12:33:36 -0500642 regulator-min-microvolt = <1500000>;
643 regulator-max-microvolt = <1500000>;
644 bias-pull-down;
645 };
Tom Rini93743d22024-04-01 09:08:13 -0400646
647 pm8058_l12: l12 {
Tom Rini53633a82024-02-29 12:33:36 -0500648 regulator-min-microvolt = <2900000>;
649 regulator-max-microvolt = <2900000>;
650 bias-pull-down;
651 };
Tom Rini93743d22024-04-01 09:08:13 -0400652
653 pm8058_l13: l13 {
Tom Rini53633a82024-02-29 12:33:36 -0500654 regulator-min-microvolt = <2050000>;
655 regulator-max-microvolt = <2050000>;
656 bias-pull-down;
657 };
Tom Rini93743d22024-04-01 09:08:13 -0400658
659 pm8058_l14: l14 {
Tom Rini53633a82024-02-29 12:33:36 -0500660 regulator-min-microvolt = <2850000>;
661 regulator-max-microvolt = <2850000>;
662 };
Tom Rini93743d22024-04-01 09:08:13 -0400663
664 pm8058_l15: l15 {
Tom Rini53633a82024-02-29 12:33:36 -0500665 regulator-min-microvolt = <2850000>;
666 regulator-max-microvolt = <2850000>;
667 bias-pull-down;
668 };
Tom Rini93743d22024-04-01 09:08:13 -0400669
670 pm8058_l16: l16 {
Tom Rini53633a82024-02-29 12:33:36 -0500671 regulator-min-microvolt = <1800000>;
672 regulator-max-microvolt = <1800000>;
673 bias-pull-down;
674 regulator-always-on;
675 };
Tom Rini93743d22024-04-01 09:08:13 -0400676
677 pm8058_l17: l17 {
Tom Rini53633a82024-02-29 12:33:36 -0500678 // 1.5V according to schematic
679 regulator-min-microvolt = <2600000>;
680 regulator-max-microvolt = <2600000>;
681 bias-pull-down;
682 };
Tom Rini93743d22024-04-01 09:08:13 -0400683
684 pm8058_l18: l18 {
Tom Rini53633a82024-02-29 12:33:36 -0500685 regulator-min-microvolt = <2200000>;
686 regulator-max-microvolt = <2200000>;
687 bias-pull-down;
688 };
Tom Rini93743d22024-04-01 09:08:13 -0400689
690 pm8058_l19: l19 {
Tom Rini53633a82024-02-29 12:33:36 -0500691 regulator-min-microvolt = <2500000>;
692 regulator-max-microvolt = <2500000>;
693 bias-pull-down;
694 };
Tom Rini93743d22024-04-01 09:08:13 -0400695
696 pm8058_l20: l20 {
Tom Rini53633a82024-02-29 12:33:36 -0500697 regulator-min-microvolt = <1800000>;
698 regulator-max-microvolt = <1800000>;
699 bias-pull-down;
700 };
Tom Rini93743d22024-04-01 09:08:13 -0400701
702 pm8058_l21: l21 {
Tom Rini53633a82024-02-29 12:33:36 -0500703 // 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 };
Tom Rini93743d22024-04-01 09:08:13 -0400709
710 pm8058_l22: l22 {
Tom Rini53633a82024-02-29 12:33:36 -0500711 // 1.2 V according to schematic
712 regulator-min-microvolt = <1150000>;
713 regulator-max-microvolt = <1150000>;
714 bias-pull-down;
715 };
Tom Rini93743d22024-04-01 09:08:13 -0400716
717 pm8058_l23: l23 {
Tom Rini53633a82024-02-29 12:33:36 -0500718 // Unused
719 regulator-min-microvolt = <1200000>;
720 regulator-max-microvolt = <1200000>;
721 bias-pull-down;
722 };
Tom Rini93743d22024-04-01 09:08:13 -0400723
724 pm8058_l24: l24 {
Tom Rini53633a82024-02-29 12:33:36 -0500725 // Unused
726 regulator-min-microvolt = <1200000>;
727 regulator-max-microvolt = <1200000>;
728 bias-pull-down;
729 };
Tom Rini93743d22024-04-01 09:08:13 -0400730
731 pm8058_l25: l25 {
Tom Rini53633a82024-02-29 12:33:36 -0500732 regulator-min-microvolt = <1200000>;
733 regulator-max-microvolt = <1200000>;
734 bias-pull-down;
735 };
736
Tom Rini93743d22024-04-01 09:08:13 -0400737 pm8058_s0: s0 {
Tom Rini53633a82024-02-29 12:33:36 -0500738 // 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 };
Tom Rini93743d22024-04-01 09:08:13 -0400745
746 pm8058_s1: s1 {
Tom Rini53633a82024-02-29 12:33:36 -0500747 // 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 };
Tom Rini93743d22024-04-01 09:08:13 -0400754
755 pm8058_s2: s2 {
Tom Rini53633a82024-02-29 12:33:36 -0500756 // 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 };
Tom Rini93743d22024-04-01 09:08:13 -0400762
763 pm8058_s3: s3 {
Tom Rini53633a82024-02-29 12:33:36 -0500764 regulator-min-microvolt = <1800000>;
765 regulator-max-microvolt = <1800000>;
766 qcom,switch-mode-frequency = <1600000>;
767 regulator-always-on;
768 bias-pull-down;
769 };
Tom Rini93743d22024-04-01 09:08:13 -0400770
771 pm8058_s4: s4 {
Tom Rini53633a82024-02-29 12:33:36 -0500772 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 */
Tom Rini93743d22024-04-01 09:08:13 -0400780 pm8058_lvs0: lvs0 {
Tom Rini53633a82024-02-29 12:33:36 -0500781 bias-pull-down;
782 };
Tom Rini93743d22024-04-01 09:08:13 -0400783
784 pm8058_lvs1: lvs1 {
Tom Rini53633a82024-02-29 12:33:36 -0500785 bias-pull-down;
786 };
787
Tom Rini93743d22024-04-01 09:08:13 -0400788 pm8058_ncp: ncp {
Tom Rini53633a82024-02-29 12:33:36 -0500789 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
Tom Rini93743d22024-04-01 09:08:13 -0400995&pm8058_xoadc {
Tom Rini53633a82024-02-29 12:33:36 -0500996 /* Reference voltage 2.2 V */
997 xoadc-ref-supply = <&pm8058_l18>;
998
999 /* Board-specific channels */
Tom Rini93743d22024-04-01 09:08:13 -04001000 adc-channel@5 {
Tom Rini53633a82024-02-29 12:33:36 -05001001 /* Connected to AOUT of ALS sensor */
1002 reg = <0x00 0x05>;
1003 };
Tom Rini93743d22024-04-01 09:08:13 -04001004
1005 adc-channel@6 {
Tom Rini53633a82024-02-29 12:33:36 -05001006 /* Connected to test point TP43 */
1007 reg = <0x00 0x06>;
1008 };
Tom Rini93743d22024-04-01 09:08:13 -04001009
1010 adc-channel@7 {
Tom Rini53633a82024-02-29 12:33:36 -05001011 /* Connected to battery thermistor */
1012 reg = <0x00 0x07>;
1013 };
Tom Rini93743d22024-04-01 09:08:13 -04001014
1015 adc-channel@8 {
Tom Rini53633a82024-02-29 12:33:36 -05001016 /* Connected to battery ID detector */
1017 reg = <0x00 0x08>;
1018 };
Tom Rini93743d22024-04-01 09:08:13 -04001019
1020 adc-channel@9 {
Tom Rini53633a82024-02-29 12:33:36 -05001021 /* Connected to XO thermistor */
1022 reg = <0x00 0x09>;
1023 };
1024};