1// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause) 2/* 3 * Copyright (c) 2025, Arduino SRL 4 */ 5 6/dts-v1/; 7 8#include <dt-bindings/leds/common.h> 9#include <dt-bindings/usb/pd.h> 10#include "agatti.dtsi" 11#include "pm4125.dtsi" 12 13/delete-node/ &cont_splash_memory; 14 15/ { 16 model = "Arduino UnoQ"; 17 compatible = "arduino,imola", "qcom,qrb2210", "qcom,qcm2290"; 18 chassis-type = "embedded"; 19 20 aliases { 21 serial0 = &uart4; 22 serial1 = &uart2; 23 serial2 = &uart3; 24 sdhc1 = &sdhc_1; 25 }; 26 27 chosen { 28 stdout-path = "serial0:115200n8"; 29 }; 30 31 gpio-keys { 32 compatible = "gpio-keys"; 33 label = "gpio-keys"; 34 pinctrl-0 = <&key_volp_n>, <&key_vold_n>; 35 pinctrl-names = "default"; 36 37 key-volume-up { 38 label = "Volume Up"; 39 linux,code = <KEY_VOLUMEUP>; 40 gpios = <&tlmm 96 GPIO_ACTIVE_LOW>; 41 debounce-interval = <15>; 42 linux,can-disable; 43 wakeup-source; 44 }; 45 46 key-volume-down { 47 label = "Volume Down"; 48 linux,code = <KEY_VOLUMEDOWN>; 49 gpios = <&tlmm 36 GPIO_ACTIVE_LOW>; 50 debounce-interval = <15>; 51 linux,can-disable; 52 wakeup-source; 53 }; 54 }; 55 56 leds: leds { 57 compatible = "gpio-leds"; 58 59 led-bt { 60 label = "unoq:bt-blue2"; 61 function = LED_FUNCTION_BLUETOOTH; 62 color = <LED_COLOR_ID_BLUE>; 63 gpios = <&tlmm 47 GPIO_ACTIVE_HIGH>; 64 linux,default-trigger = "bluetooth-power"; 65 default-state = "off"; 66 }; 67 68 led-panic { 69 label = "unoq:panic-red2"; 70 function = LED_FUNCTION_INDICATOR; 71 color = <LED_COLOR_ID_RED>; 72 gpios = <&tlmm 39 GPIO_ACTIVE_HIGH>; 73 linux,default-trigger = "none"; 74 default-state = "off"; 75 panic-indicator; 76 }; 77 78 led-wlan { 79 label = "unoq:wlan-green2"; 80 function = LED_FUNCTION_WLAN; 81 color = <LED_COLOR_ID_GREEN>; 82 gpios = <&tlmm 40 GPIO_ACTIVE_HIGH>; 83 linux,default-trigger = "phy0tx"; 84 default-state = "off"; 85 }; 86 87 ledb: led-user-blue { 88 label = "unoq:user-blue1"; 89 gpios = <&tlmm 60 GPIO_ACTIVE_HIGH>; 90 color = <LED_COLOR_ID_BLUE>; 91 }; 92 93 ledg: led-user-green { 94 label = "unoq:user-green1"; 95 gpios = <&tlmm 42 GPIO_ACTIVE_HIGH>; 96 color = <LED_COLOR_ID_GREEN>; 97 }; 98 99 ledr: led-user-red { 100 label = "unoq:user-red1"; 101 gpios = <&tlmm 41 GPIO_ACTIVE_HIGH>; 102 color = <LED_COLOR_ID_RED>; 103 }; 104 }; 105 106 multi-led { 107 compatible = "leds-group-multicolor"; 108 color = <LED_COLOR_ID_RGB>; 109 function = LED_FUNCTION_INDICATOR; 110 leds = <&ledr>, <&ledg>, <&ledb>; 111 }; 112 113 vreg_anx_30: regulator-anx-30 { 114 compatible = "regulator-fixed"; 115 regulator-name = "anx30"; 116 regulator-min-microvolt = <3000000>; 117 regulator-max-microvolt = <3000000>; 118 regulator-always-on; 119 regulator-boot-on; 120 }; 121 122 /* PM4125 charger out, supplied by VBAT */ 123 vph_pwr: regulator-vph-pwr { 124 compatible = "regulator-fixed"; 125 regulator-name = "vph_pwr"; 126 regulator-min-microvolt = <3700000>; 127 regulator-max-microvolt = <3700000>; 128 regulator-always-on; 129 regulator-boot-on; 130 }; 131}; 132 133&gpi_dma0 { 134 status = "okay"; 135}; 136 137&gpu { 138 status = "okay"; 139}; 140 141&gpu_zap_shader { 142 firmware-name = "qcom/qcm2290/a702_zap.mbn"; 143}; 144 145&i2c0 { 146 clock-frequency = <100000>; 147 148 status = "okay"; 149}; 150 151&i2c1 { 152 clock-frequency = <100000>; 153 154 status = "okay"; 155 156 anx7625: encoder@58 { 157 compatible = "analogix,anx7625"; 158 reg = <0x58>; 159 interrupts-extended = <&tlmm 81 IRQ_TYPE_EDGE_FALLING>; 160 vdd10-supply = <&pm4125_l11>; 161 vdd18-supply = <&pm4125_l15>; 162 vdd33-supply = <&vreg_anx_30>; 163 analogix,audio-enable; 164 analogix,lane0-swing = /bits/ 8 <0x14 0x54 0x64 0x74>; 165 analogix,lane1-swing = /bits/ 8 <0x14 0x54 0x64 0x74>; 166 167 pinctrl-0 = <&anx7625_int_pin>, <&anx7625_cable_det_pin>; 168 169 connector { 170 compatible = "usb-c-connector"; 171 power-role = "sink"; 172 data-role = "dual"; 173 try-power-role = "sink"; 174 175 pd-revision = /bits/ 8 <0x03 0x00 0x00 0x00>; 176 op-sink-microwatt = <15000000>; 177 sink-pdos = <PDO_FIXED(5000, 3000, PDO_FIXED_USB_COMM) 178 PDO_VAR(5000, 20000, 3000)>; 179 180 ports { 181 #address-cells = <1>; 182 #size-cells = <0>; 183 184 port@0 { 185 reg = <0>; 186 187 anx_hs_in: endpoint { 188 remote-endpoint = <&usb_dwc3_hs>; 189 }; 190 }; 191 192 port@1 { 193 reg = <1>; 194 195 anx_ss_in: endpoint { 196 remote-endpoint = <&usb_qmpphy_out>; 197 }; 198 }; 199 }; 200 }; 201 202 ports { 203 #address-cells = <1>; 204 #size-cells = <0>; 205 206 port@0 { 207 reg = <0>; 208 209 anx_dsi0_in: endpoint { 210 remote-endpoint = <&mdss_dsi0_out>; 211 data-lanes = <0 1 2 3>; 212 }; 213 }; 214 }; 215 }; 216}; 217 218&mdss { 219 status = "okay"; 220}; 221 222&mdss_dsi0 { 223 vdda-supply = <&pm4125_l5>; 224 225 status = "okay"; 226}; 227 228&mdss_dsi0_out { 229 remote-endpoint = <&anx_dsi0_in>; 230 data-lanes = <0 1 2 3>; 231}; 232 233&mdss_dsi0_phy { 234 status = "okay"; 235}; 236 237&pm4125_vbus { 238 regulator-min-microamp = <500000>; 239 regulator-max-microamp = <500000>; 240 241 status = "okay"; 242}; 243 244&qupv3_id_0 { 245 status = "okay"; 246}; 247 248&remoteproc_adsp { 249 firmware-name = "qcom/qcm2290/adsp.mbn"; 250 251 status = "okay"; 252}; 253 254&remoteproc_mpss { 255 firmware-name = "qcom/qcm2290/modem.mbn"; 256 257 status = "okay"; 258}; 259 260&rpm_requests { 261 regulators { 262 compatible = "qcom,rpm-pm2250-regulators"; 263 vdd_s3-supply = <&vph_pwr>; 264 vdd_s4-supply = <&vph_pwr>; 265 vdd_l1_l2_l3_l5_l6_l7_l8_l9_l10_l11_l12-supply = <&pm4125_s3>; 266 vdd_l4_l17_l18_l19_l20_l21_l22-supply = <&vph_pwr>; 267 vdd_l13_l14_l15_l16-supply = <&pm4125_s4>; 268 269 pm4125_s3: s3 { 270 /* 0.4V-1.6625V -> 1.3V (Power tree requirements) */ 271 regulator-min-microvolt = <1352000>; 272 regulator-max-microvolt = <1352000>; 273 regulator-boot-on; 274 }; 275 276 pm4125_s4: s4 { 277 /* 1.2V-2.35V -> 2.05V (Power tree requirements) */ 278 regulator-min-microvolt = <2072000>; 279 regulator-max-microvolt = <2072000>; 280 regulator-boot-on; 281 }; 282 283 pm4125_l2: l2 { 284 /* LPDDR4X VDD2 */ 285 regulator-min-microvolt = <1136000>; 286 regulator-max-microvolt = <1136000>; 287 regulator-always-on; 288 regulator-boot-on; 289 }; 290 291 pm4125_l3: l3 { 292 /* LPDDR4X VDDQ */ 293 regulator-min-microvolt = <616000>; 294 regulator-max-microvolt = <616000>; 295 regulator-always-on; 296 regulator-boot-on; 297 }; 298 299 pm4125_l4: l4 { 300 /* max = 3.05V -> max = 2.7 to disable 3V signaling (SDHCI2) */ 301 regulator-min-microvolt = <1800000>; 302 regulator-max-microvolt = <2700000>; 303 regulator-allow-set-load; 304 }; 305 306 pm4125_l5: l5 { 307 /* CSI/DSI */ 308 regulator-min-microvolt = <1232000>; 309 regulator-max-microvolt = <1232000>; 310 regulator-allow-set-load; 311 regulator-boot-on; 312 }; 313 314 pm4125_l6: l6 { 315 /* DRAM PLL */ 316 regulator-min-microvolt = <928000>; 317 regulator-max-microvolt = <928000>; 318 regulator-always-on; 319 regulator-boot-on; 320 }; 321 322 pm4125_l7: l7 { 323 /* Wi-Fi CX */ 324 regulator-min-microvolt = <664000>; 325 regulator-max-microvolt = <664000>; 326 }; 327 328 pm4125_l10: l10 { 329 /* Wi-Fi RFA */ 330 regulator-min-microvolt = <1304000>; 331 regulator-max-microvolt = <1304000>; 332 }; 333 334 pm4125_l11: l11 { 335 /* ANX7625 DVDD1P0V/AVDD1P0V */ 336 regulator-min-microvolt = <1000000>; 337 regulator-max-microvolt = <1000000>; 338 regulator-boot-on; 339 regulator-always-on; 340 }; 341 342 pm4125_l12: l12 { 343 /* USB PHYs */ 344 regulator-min-microvolt = <928000>; 345 regulator-max-microvolt = <928000>; 346 regulator-allow-set-load; 347 regulator-boot-on; 348 }; 349 350 pm4125_l13: l13 { 351 /* USB/QFPROM/PLLs */ 352 regulator-min-microvolt = <1800000>; 353 regulator-max-microvolt = <1800000>; 354 regulator-allow-set-load; 355 regulator-boot-on; 356 }; 357 358 pm4125_l14: l14 { 359 /* SDHCI1 EMMC VCCQ */ 360 regulator-min-microvolt = <1800000>; 361 regulator-max-microvolt = <1800000>; 362 regulator-allow-set-load; 363 /* Broken hardware, never turn it off! */ 364 regulator-always-on; 365 }; 366 367 pm4125_l15: l15 { 368 /* VDDIO */ 369 regulator-min-microvolt = <1800000>; 370 regulator-max-microvolt = <1800000>; 371 regulator-allow-set-load; 372 regulator-always-on; 373 regulator-boot-on; 374 }; 375 376 pm4125_l20: l20 { 377 /* SDHCI1 EMMC */ 378 regulator-min-microvolt = <2400000>; 379 regulator-max-microvolt = <3600000>; 380 regulator-allow-set-load; 381 }; 382 383 pm4125_l21: l21 { 384 /* USB HS */ 385 regulator-min-microvolt = <2960000>; 386 regulator-max-microvolt = <3300000>; 387 regulator-allow-set-load; 388 regulator-boot-on; 389 }; 390 391 pm4125_l22: l22 { 392 /* Wi-Fi VDD */ 393 regulator-min-microvolt = <3312000>; 394 regulator-max-microvolt = <3312000>; 395 }; 396 }; 397}; 398 399&sdhc_1 { 400 vmmc-supply = <&pm4125_l20>; 401 vqmmc-supply = <&pm4125_l14>; 402 pinctrl-0 = <&sdc1_state_on>; 403 pinctrl-1 = <&sdc1_state_off>; 404 pinctrl-names = "default", "sleep"; 405 mmc-hs400-1_8v; 406 mmc-hs200-1_8v; 407 non-removable; 408 supports-cqe; 409 no-sdio; 410 no-sd; 411 412 status = "okay"; 413}; 414 415&spi5 { 416 status = "okay"; 417 418 mcu@0 { 419 compatible = "arduino,unoq-mcu"; 420 reg = <0>; 421 }; 422}; 423 424&tlmm { 425 jmisc_gpio18: jmisc-gpio18-state { 426 pins = "gpio18"; 427 function = "gpio"; 428 drive-strength = <2>; 429 bias-pull-down; 430 }; 431 432 jmisc_gpio28: jmisc-gpio28-state { 433 pins = "gpio28"; 434 function = "gpio"; 435 drive-strength = <2>; 436 bias-pull-down; 437 }; 438 439 key_vold_n: key-vold-n-state { 440 pins = "gpio36"; 441 function = "gpio"; 442 bias-pull-up; 443 output-disable; 444 }; 445 446 anx7625_cable_det_pin: anx7625-cable-det-pins-state { 447 pins = "gpio46"; 448 function = "gpio"; 449 drive-strength = <16>; 450 output-disable; 451 bias-pull-up; 452 }; 453 454 anx7625_int_pin: anx7625-int-pins-state { 455 pins = "gpio81"; 456 function = "gpio"; 457 drive-strength = <16>; 458 output-disable; 459 bias-pull-up; 460 }; 461 462 key_volp_n: key-volp-n-state { 463 pins = "gpio96"; 464 function = "gpio"; 465 bias-pull-up; 466 output-disable; 467 }; 468 469 jmisc_gpio98: jmisc-gpio98-state { 470 pins = "gpio98"; 471 function = "gpio"; 472 drive-strength = <2>; 473 bias-pull-down; 474 }; 475 476 jmisc_gpio99: jmisc-gpio99-state { 477 pins = "gpio99"; 478 function = "gpio"; 479 drive-strength = <2>; 480 bias-pull-down; 481 }; 482 483 jmisc_gpio100: jmisc-gpio100-state { 484 pins = "gpio100"; 485 function = "gpio"; 486 drive-strength = <2>; 487 bias-pull-down; 488 }; 489 490 jmisc_gpio101: jmisc-gpio101-state { 491 pins = "gpio101"; 492 function = "gpio"; 493 drive-strength = <2>; 494 bias-pull-down; 495 }; 496}; 497 498&uart2 { 499 status = "okay"; 500}; 501 502/* UART connected to Bluetooth */ 503&uart3 { 504 status = "okay"; 505 506 bluetooth { 507 compatible = "qcom,wcn3988-bt"; 508 509 vddio-supply = <&pm4125_l15>; 510 vddxo-supply = <&pm4125_l13>; 511 vddrf-supply = <&pm4125_l10>; 512 vddch0-supply = <&pm4125_l22>; 513 enable-gpios = <&tlmm 87 GPIO_ACTIVE_HIGH>; 514 max-speed = <3000000>; 515 }; 516}; 517 518/* UART exposed in JCTL */ 519&uart4 { 520 compatible = "qcom,geni-debug-uart"; 521 522 status = "okay"; 523}; 524 525&usb { 526 status = "okay"; 527}; 528 529&usb_dwc3_hs { 530 remote-endpoint = <&anx_hs_in>; 531}; 532 533&usb_hsphy { 534 vdd-supply = <&pm4125_l12>; 535 vdda-pll-supply = <&pm4125_l13>; 536 vdda-phy-dpdm-supply = <&pm4125_l21>; 537 538 status = "okay"; 539}; 540 541&usb_qmpphy { 542 vdda-phy-supply = <&pm4125_l12>; 543 vdda-pll-supply = <&pm4125_l13>; 544 545 status = "okay"; 546}; 547 548&usb_qmpphy_out { 549 remote-endpoint = <&anx_ss_in>; 550}; 551 552&wifi { 553 vdd-0.8-cx-mx-supply = <&pm4125_l7>; 554 vdd-1.8-xo-supply = <&pm4125_l13>; 555 vdd-1.3-rfa-supply = <&pm4125_l10>; 556 vdd-3.3-ch0-supply = <&pm4125_l22>; 557 qcom,ath10k-calibration-variant = "ArduinoImola"; 558 firmware-name = "qcm2290"; 559 560 status = "okay"; 561}; 562 563&xo_board { 564 clock-frequency = <38400000>; 565}; 566