1// SPDX-License-Identifier: (GPL-2.0+ OR MIT) 2/* 3 * Copyright (c) 2018 Fuzhou Rockchip Electronics Co., Ltd 4 */ 5 6/dts-v1/; 7#include <dt-bindings/gpio/gpio.h> 8#include <dt-bindings/input/input.h> 9#include <dt-bindings/pinctrl/rockchip.h> 10#include "px30.dtsi" 11 12/ { 13 model = "Rockchip PX30 EVB"; 14 compatible = "rockchip,px30-evb", "rockchip,px30"; 15 16 aliases { 17 ethernet0 = &gmac; 18 mmc0 = &sdmmc; 19 mmc1 = &sdio; 20 mmc2 = &emmc; 21 }; 22 23 chosen { 24 stdout-path = "serial5:115200n8"; 25 }; 26 27 adc-keys { 28 compatible = "adc-keys"; 29 io-channels = <&saradc 2>; 30 io-channel-names = "buttons"; 31 keyup-threshold-microvolt = <1800000>; 32 poll-interval = <100>; 33 34 button-esc { 35 label = "esc"; 36 linux,code = <KEY_ESC>; 37 press-threshold-microvolt = <1310000>; 38 }; 39 40 button-home { 41 label = "home"; 42 linux,code = <KEY_HOME>; 43 press-threshold-microvolt = <624000>; 44 }; 45 46 button-menu { 47 label = "menu"; 48 linux,code = <KEY_MENU>; 49 press-threshold-microvolt = <987000>; 50 }; 51 52 button-down { 53 label = "volume down"; 54 linux,code = <KEY_VOLUMEDOWN>; 55 press-threshold-microvolt = <300000>; 56 }; 57 58 button-up { 59 label = "volume up"; 60 linux,code = <KEY_VOLUMEUP>; 61 press-threshold-microvolt = <17000>; 62 }; 63 }; 64 65 backlight: backlight { 66 compatible = "pwm-backlight"; 67 pwms = <&pwm1 0 25000 0>; 68 power-supply = <&vcc3v3_lcd>; 69 }; 70 71 emmc_pwrseq: emmc-pwrseq { 72 compatible = "mmc-pwrseq-emmc"; 73 pinctrl-0 = <&emmc_reset>; 74 pinctrl-names = "default"; 75 reset-gpios = <&gpio1 RK_PB3 GPIO_ACTIVE_HIGH>; 76 }; 77 78 sdio_pwrseq: sdio-pwrseq { 79 compatible = "mmc-pwrseq-simple"; 80 pinctrl-names = "default"; 81 pinctrl-0 = <&wifi_enable_h>; 82 83 /* 84 * On the module itself this is one of these (depending 85 * on the actual card populated): 86 * - SDIO_RESET_L_WL_REG_ON 87 * - PDN (power down when low) 88 */ 89 reset-gpios = <&gpio0 RK_PA2 GPIO_ACTIVE_LOW>; /* GPIO3_A4 */ 90 }; 91 92 vcc5v0_sys: regulator-vccsys { 93 compatible = "regulator-fixed"; 94 regulator-name = "vcc5v0_sys"; 95 regulator-always-on; 96 regulator-boot-on; 97 regulator-min-microvolt = <5000000>; 98 regulator-max-microvolt = <5000000>; 99 }; 100}; 101 102&cpu0 { 103 cpu-supply = <&vdd_arm>; 104}; 105 106&cpu1 { 107 cpu-supply = <&vdd_arm>; 108}; 109 110&cpu2 { 111 cpu-supply = <&vdd_arm>; 112}; 113 114&cpu3 { 115 cpu-supply = <&vdd_arm>; 116}; 117 118&csi_dphy { 119 status = "okay"; 120}; 121 122&display_subsystem { 123 status = "okay"; 124}; 125 126&dsi { 127 #address-cells = <1>; 128 #size-cells = <0>; 129 status = "okay"; 130 131 ports { 132 mipi_out: port@1 { 133 reg = <1>; 134 135 mipi_out_panel: endpoint { 136 remote-endpoint = <&mipi_in_panel>; 137 }; 138 }; 139 }; 140 141 panel@0 { 142 compatible = "xinpeng,xpp055c272"; 143 reg = <0>; 144 backlight = <&backlight>; 145 iovcc-supply = <&vcc_1v8>; 146 vci-supply = <&vcc3v3_lcd>; 147 148 port { 149 mipi_in_panel: endpoint { 150 remote-endpoint = <&mipi_out_panel>; 151 }; 152 }; 153 }; 154}; 155 156&dsi_dphy { 157 status = "okay"; 158}; 159 160&emmc { 161 cap-mmc-highspeed; 162 mmc-hs200-1_8v; 163 non-removable; 164 mmc-pwrseq = <&emmc_pwrseq>; 165 vmmc-supply = <&vcc_3v0>; 166 vqmmc-supply = <&vccio_flash>; 167 status = "okay"; 168}; 169 170&gmac { 171 clock_in_out = "output"; 172 phy-supply = <&vcc_rmii>; 173 snps,reset-gpio = <&gpio2 13 GPIO_ACTIVE_LOW>; 174 snps,reset-active-low; 175 snps,reset-delays-us = <0 50000 50000>; 176 status = "okay"; 177}; 178 179&gpu { 180 mali-supply = <&vdd_log>; 181 status = "okay"; 182}; 183 184&i2c0 { 185 status = "okay"; 186 187 rk809: pmic@20 { 188 compatible = "rockchip,rk809"; 189 reg = <0x20>; 190 interrupt-parent = <&gpio0>; 191 interrupts = <7 IRQ_TYPE_LEVEL_LOW>; 192 pinctrl-names = "default"; 193 pinctrl-0 = <&pmic_int>; 194 system-power-controller; 195 wakeup-source; 196 #clock-cells = <0>; 197 clock-output-names = "xin32k"; 198 199 vcc1-supply = <&vcc5v0_sys>; 200 vcc2-supply = <&vcc5v0_sys>; 201 vcc3-supply = <&vcc5v0_sys>; 202 vcc4-supply = <&vcc5v0_sys>; 203 vcc5-supply = <&vcc3v3_sys>; 204 vcc6-supply = <&vcc3v3_sys>; 205 vcc7-supply = <&vcc3v3_sys>; 206 vcc8-supply = <&vcc3v3_sys>; 207 vcc9-supply = <&vcc5v0_sys>; 208 209 regulators { 210 vdd_log: DCDC_REG1 { 211 regulator-name = "vdd_log"; 212 regulator-min-microvolt = <950000>; 213 regulator-max-microvolt = <1350000>; 214 regulator-ramp-delay = <6001>; 215 regulator-always-on; 216 regulator-boot-on; 217 218 regulator-state-mem { 219 regulator-on-in-suspend; 220 regulator-suspend-microvolt = <950000>; 221 }; 222 }; 223 224 vdd_arm: DCDC_REG2 { 225 regulator-name = "vdd_arm"; 226 regulator-min-microvolt = <950000>; 227 regulator-max-microvolt = <1350000>; 228 regulator-ramp-delay = <6001>; 229 regulator-always-on; 230 regulator-boot-on; 231 232 regulator-state-mem { 233 regulator-off-in-suspend; 234 regulator-suspend-microvolt = <950000>; 235 }; 236 }; 237 238 vcc_ddr: DCDC_REG3 { 239 regulator-name = "vcc_ddr"; 240 regulator-always-on; 241 regulator-boot-on; 242 243 regulator-state-mem { 244 regulator-on-in-suspend; 245 }; 246 }; 247 248 vcc_3v0: vcc_rmii: DCDC_REG4 { 249 regulator-name = "vcc_3v0"; 250 regulator-min-microvolt = <3000000>; 251 regulator-max-microvolt = <3000000>; 252 regulator-always-on; 253 regulator-boot-on; 254 255 regulator-state-mem { 256 regulator-on-in-suspend; 257 regulator-suspend-microvolt = <3000000>; 258 }; 259 }; 260 261 vcc3v3_sys: DCDC_REG5 { 262 regulator-name = "vcc3v3_sys"; 263 regulator-min-microvolt = <3300000>; 264 regulator-max-microvolt = <3300000>; 265 regulator-always-on; 266 regulator-boot-on; 267 268 regulator-state-mem { 269 regulator-on-in-suspend; 270 regulator-suspend-microvolt = <3300000>; 271 }; 272 }; 273 274 vcc_1v0: LDO_REG1 { 275 regulator-name = "vcc_1v0"; 276 regulator-min-microvolt = <1000000>; 277 regulator-max-microvolt = <1000000>; 278 regulator-always-on; 279 regulator-boot-on; 280 281 regulator-state-mem { 282 regulator-on-in-suspend; 283 regulator-suspend-microvolt = <1000000>; 284 }; 285 }; 286 287 vcc_1v8: vccio_flash: vccio_sdio: LDO_REG2 { 288 regulator-name = "vcc_1v8"; 289 regulator-min-microvolt = <1800000>; 290 regulator-max-microvolt = <1800000>; 291 regulator-always-on; 292 regulator-boot-on; 293 294 regulator-state-mem { 295 regulator-on-in-suspend; 296 regulator-suspend-microvolt = <1800000>; 297 }; 298 }; 299 300 vdd_1v0: LDO_REG3 { 301 regulator-name = "vdd_1v0"; 302 regulator-min-microvolt = <1000000>; 303 regulator-max-microvolt = <1000000>; 304 regulator-always-on; 305 regulator-boot-on; 306 307 regulator-state-mem { 308 regulator-on-in-suspend; 309 regulator-suspend-microvolt = <1000000>; 310 }; 311 }; 312 313 vcc3v0_pmu: LDO_REG4 { 314 regulator-name = "vcc3v0_pmu"; 315 regulator-min-microvolt = <3000000>; 316 regulator-max-microvolt = <3000000>; 317 regulator-always-on; 318 regulator-boot-on; 319 320 regulator-state-mem { 321 regulator-on-in-suspend; 322 regulator-suspend-microvolt = <3000000>; 323 }; 324 }; 325 326 vccio_sd: LDO_REG5 { 327 regulator-name = "vccio_sd"; 328 regulator-min-microvolt = <1800000>; 329 regulator-max-microvolt = <3300000>; 330 regulator-always-on; 331 regulator-boot-on; 332 333 regulator-state-mem { 334 regulator-on-in-suspend; 335 regulator-suspend-microvolt = <3300000>; 336 }; 337 }; 338 339 vcc_sd: LDO_REG6 { 340 regulator-name = "vcc_sd"; 341 regulator-min-microvolt = <3300000>; 342 regulator-max-microvolt = <3300000>; 343 regulator-boot-on; 344 345 regulator-state-mem { 346 regulator-on-in-suspend; 347 regulator-suspend-microvolt = <3300000>; 348 }; 349 }; 350 351 vcc2v8_dvp: LDO_REG7 { 352 regulator-name = "vcc2v8_dvp"; 353 regulator-min-microvolt = <2800000>; 354 regulator-max-microvolt = <2800000>; 355 regulator-boot-on; 356 357 regulator-state-mem { 358 regulator-off-in-suspend; 359 regulator-suspend-microvolt = <2800000>; 360 }; 361 }; 362 363 vcc1v8_dvp: LDO_REG8 { 364 regulator-name = "vcc1v8_dvp"; 365 regulator-min-microvolt = <1800000>; 366 regulator-max-microvolt = <1800000>; 367 regulator-boot-on; 368 369 regulator-state-mem { 370 regulator-on-in-suspend; 371 regulator-suspend-microvolt = <1800000>; 372 }; 373 }; 374 375 vcc1v5_dvp: LDO_REG9 { 376 regulator-name = "vcc1v5_dvp"; 377 regulator-min-microvolt = <1500000>; 378 regulator-max-microvolt = <1500000>; 379 regulator-boot-on; 380 381 regulator-state-mem { 382 regulator-off-in-suspend; 383 regulator-suspend-microvolt = <1500000>; 384 }; 385 }; 386 387 vcc3v3_lcd: SWITCH_REG1 { 388 regulator-name = "vcc3v3_lcd"; 389 regulator-boot-on; 390 }; 391 392 vcc5v0_host: SWITCH_REG2 { 393 regulator-name = "vcc5v0_host"; 394 regulator-always-on; 395 regulator-boot-on; 396 }; 397 }; 398 }; 399}; 400 401&i2c1 { 402 status = "okay"; 403 404 sensor@d { 405 compatible = "asahi-kasei,ak8963"; 406 reg = <0x0d>; 407 gpios = <&gpio0 RK_PB7 GPIO_ACTIVE_HIGH>; 408 vdd-supply = <&vcc3v0_pmu>; 409 mount-matrix = "1", /* x0 */ 410 "0", /* y0 */ 411 "0", /* z0 */ 412 "0", /* x1 */ 413 "1", /* y1 */ 414 "0", /* z1 */ 415 "0", /* x2 */ 416 "0", /* y2 */ 417 "1"; /* z2 */ 418 }; 419 420 touchscreen@14 { 421 compatible = "goodix,gt1151"; 422 reg = <0x14>; 423 interrupt-parent = <&gpio0>; 424 interrupts = <RK_PA5 IRQ_TYPE_LEVEL_LOW>; 425 irq-gpios = <&gpio0 RK_PA5 GPIO_ACTIVE_LOW>; 426 reset-gpios = <&gpio0 RK_PB4 GPIO_ACTIVE_HIGH>; 427 VDDIO-supply = <&vcc3v3_lcd>; 428 }; 429 430 sensor@4c { 431 compatible = "fsl,mma7660"; 432 reg = <0x4c>; 433 interrupt-parent = <&gpio0>; 434 interrupts = <RK_PB7 IRQ_TYPE_LEVEL_LOW>; 435 }; 436}; 437 438&i2c2 { 439 status = "okay"; 440 441 clock-frequency = <100000>; 442 443 /* These are relatively safe rise/fall times; TODO: measure */ 444 i2c-scl-falling-time-ns = <50>; 445 i2c-scl-rising-time-ns = <300>; 446 447 ov5695: ov5695@36 { 448 compatible = "ovti,ov5695"; 449 reg = <0x36>; 450 avdd-supply = <&vcc2v8_dvp>; 451 clocks = <&cru SCLK_CIF_OUT>; 452 clock-names = "xvclk"; 453 dvdd-supply = <&vcc1v5_dvp>; 454 dovdd-supply = <&vcc1v8_dvp>; 455 pinctrl-names = "default"; 456 pinctrl-0 = <&cif_clkout_m0 &mipi_pdn>; 457 reset-gpios = <&gpio2 RK_PB6 GPIO_ACTIVE_LOW>; 458 459 port { 460 ucam_out: endpoint { 461 remote-endpoint = <&mipi_in_ucam>; 462 data-lanes = <1 2>; 463 }; 464 }; 465 }; 466}; 467 468&i2s1_2ch { 469 status = "okay"; 470}; 471 472&io_domains { 473 status = "okay"; 474 475 vccio1-supply = <&vccio_sdio>; 476 vccio2-supply = <&vccio_sd>; 477 vccio3-supply = <&vcc_3v0>; 478 vccio4-supply = <&vcc3v0_pmu>; 479 vccio5-supply = <&vcc_3v0>; 480 vccio6-supply = <&vccio_flash>; 481}; 482 483&isp { 484 status = "okay"; 485 486 ports { 487 port@0 { 488 mipi_in_ucam: endpoint { 489 data-lanes = <1 2>; 490 remote-endpoint = <&ucam_out>; 491 }; 492 }; 493 }; 494}; 495 496&isp_mmu { 497 status = "okay"; 498}; 499 500&pinctrl { 501 headphone { 502 hp_det: hp-det { 503 rockchip,pins = 504 <2 RK_PB0 RK_FUNC_GPIO &pcfg_pull_down>; 505 }; 506 }; 507 508 emmc { 509 emmc_reset: emmc-reset { 510 rockchip,pins = <1 RK_PB3 RK_FUNC_GPIO &pcfg_pull_none>; 511 }; 512 }; 513 514 pmic { 515 pmic_int: pmic_int { 516 rockchip,pins = 517 <0 RK_PA7 RK_FUNC_GPIO &pcfg_pull_up>; 518 }; 519 520 soc_slppin_gpio: soc_slppin_gpio { 521 rockchip,pins = 522 <0 RK_PA4 RK_FUNC_GPIO &pcfg_output_low>; 523 }; 524 525 soc_slppin_slp: soc_slppin_slp { 526 rockchip,pins = 527 <0 RK_PA4 1 &pcfg_pull_none>; 528 }; 529 530 soc_slppin_rst: soc_slppin_rst { 531 rockchip,pins = 532 <0 RK_PA4 2 &pcfg_pull_none>; 533 }; 534 }; 535 536 sdio-pwrseq { 537 wifi_enable_h: wifi-enable-h { 538 rockchip,pins = 539 <0 RK_PA2 RK_FUNC_GPIO &pcfg_pull_none>; 540 }; 541 }; 542 543 cif-m0 { 544 cif_clkout_m0: cif-clkout-m0 { 545 rockchip,pins = 546 <2 RK_PB3 1 &pcfg_pull_none_12ma>; 547 }; 548 }; 549 550 mipi { 551 mipi_pdn: mipi-pdn { 552 rockchip,pins = <2 RK_PB6 RK_FUNC_GPIO &pcfg_pull_none>; 553 }; 554 }; 555}; 556 557&pmu_io_domains { 558 status = "okay"; 559 560 pmuio1-supply = <&vcc3v0_pmu>; 561 pmuio2-supply = <&vcc3v0_pmu>; 562}; 563 564&pwm1 { 565 status = "okay"; 566}; 567 568&saradc { 569 vref-supply = <&vcc_1v8>; 570 status = "okay"; 571}; 572 573&sdmmc { 574 cap-mmc-highspeed; 575 cap-sd-highspeed; 576 card-detect-delay = <800>; 577 sd-uhs-sdr12; 578 sd-uhs-sdr25; 579 sd-uhs-sdr50; 580 sd-uhs-sdr104; 581 vmmc-supply = <&vcc_sd>; 582 vqmmc-supply = <&vccio_sd>; 583 status = "okay"; 584}; 585 586&sdio { 587 cap-sd-highspeed; 588 keep-power-in-suspend; 589 non-removable; 590 mmc-pwrseq = <&sdio_pwrseq>; 591 sd-uhs-sdr104; 592 status = "okay"; 593}; 594 595&tsadc { 596 rockchip,hw-tshut-mode = <1>; 597 rockchip,hw-tshut-polarity = <1>; 598 status = "okay"; 599}; 600 601&u2phy { 602 status = "okay"; 603 604 u2phy_host: host-port { 605 status = "okay"; 606 }; 607 608 u2phy_otg: otg-port { 609 status = "okay"; 610 }; 611}; 612 613&uart1 { 614 pinctrl-names = "default"; 615 pinctrl-0 = <&uart1_xfer &uart1_cts>; 616 status = "okay"; 617}; 618 619&uart5 { 620 status = "okay"; 621}; 622 623&usb20_otg { 624 status = "okay"; 625}; 626 627&usb_host0_ehci { 628 status = "okay"; 629}; 630 631&usb_host0_ohci { 632 status = "okay"; 633}; 634 635&vopb { 636 status = "okay"; 637}; 638 639&vopb_mmu { 640 status = "okay"; 641}; 642 643&vopl { 644 status = "okay"; 645}; 646 647&vopl_mmu { 648 status = "okay"; 649}; 650