1// SPDX-License-Identifier: (GPL-2.0+ OR MIT) 2 3/dts-v1/; 4 5#include <dt-bindings/input/input.h> 6#include <dt-bindings/leds/common.h> 7#include "rk3128.dtsi" 8 9/ { 10 model = "Geniatech XPI-3128"; 11 compatible = "geniatech,xpi-3128", "rockchip,rk3128"; 12 13 aliases { 14 ethernet0 = &gmac; 15 mmc0 = &emmc; 16 mmc1 = &sdmmc; 17 }; 18 19 memory@60000000 { 20 device_type = "memory"; 21 reg = <0x60000000 0x40000000>; 22 }; 23 24 chosen { 25 stdout-path = &uart1; 26 }; 27 28 adc-keys { 29 compatible = "adc-keys"; 30 io-channels = <&saradc 1>; 31 io-channel-names = "buttons"; 32 keyup-threshold-microvolt = <3300000>; 33 34 button-recovery { 35 label = "Recovery"; 36 linux,code = <KEY_VENDOR>; 37 press-threshold-microvolt = <0>; 38 }; 39 }; 40 41 dc_5v: dc-5v-regulator { 42 compatible = "regulator-fixed"; 43 regulator-name = "DC_5V"; 44 regulator-min-microvolt = <5000000>; 45 regulator-max-microvolt = <5000000>; 46 regulator-always-on; 47 regulator-boot-on; 48 }; 49 50 hdmi-connnector { 51 compatible = "hdmi-connector"; 52 type = "a"; 53 54 port { 55 hdmi_connector_in: endpoint { 56 remote-endpoint = <&hdmi_connector_out>; 57 }; 58 }; 59 }; 60 61 /* 62 * This is a vbus-supply, which also supplies the GL852G usb hub, 63 * thus has to be always-on 64 */ 65 host_pwr_5v: host-pwr-5v-regulator { 66 compatible = "regulator-fixed"; 67 gpio = <&gpio3 RK_PC4 GPIO_ACTIVE_HIGH>; 68 startup-delay-us = <1500>; 69 regulator-name = "HOST_PWR_5V"; 70 regulator-min-microvolt = <5000000>; 71 regulator-max-microvolt = <5000000>; 72 vin-supply = <&dc_5v>; 73 pinctrl-names = "default"; 74 pinctrl-0 = <&host_drv>; 75 enable-active-high; 76 regulator-always-on; 77 }; 78 79 ir-receiver { 80 compatible = "gpio-ir-receiver"; 81 gpios = <&gpio3 RK_PD2 GPIO_ACTIVE_LOW>; 82 pinctrl-names = "default"; 83 pinctrl-0 = <&ir_int>; 84 }; 85 86 leds { 87 compatible = "gpio-leds"; 88 89 led-power { 90 gpios = <&gpio0 RK_PD2 GPIO_ACTIVE_HIGH>; 91 function = LED_FUNCTION_POWER; 92 color = <LED_COLOR_ID_BLUE>; 93 default-state = "on"; 94 pinctrl-names = "default"; 95 pinctrl-0 = <&power_led>; 96 }; 97 98 led-spd { 99 gpios = <&gpio3 RK_PB3 GPIO_ACTIVE_LOW>; 100 function = LED_FUNCTION_LAN; 101 color = <LED_COLOR_ID_GREEN>; 102 /* 103 * currently not allowed to be set as per 104 * https://www.kernel.org/doc/Documentation/devicetree/bindings/leds/common.yaml 105 * and needs to set in userspace: 106 * 107 * linux,default-trigger = "netdev"; 108 */ 109 pinctrl-names = "default"; 110 pinctrl-0 = <&spd_led>; 111 }; 112 }; 113 114 mcu3v3: mcu3v3-regulator { 115 compatible = "regulator-fixed"; 116 regulator-name = "MCU3V3"; 117 regulator-min-microvolt = <3300000>; 118 regulator-max-microvolt = <3300000>; 119 vin-supply = <&vcc_io>; 120 regulator-always-on; 121 regulator-boot-on; 122 }; 123 124 vcc_ddr: vcc-ddr-regulator { 125 compatible = "regulator-fixed"; 126 regulator-name = "VCC_DDR"; 127 regulator-min-microvolt = <1500000>; 128 regulator-max-microvolt = <1500000>; 129 vin-supply = <&vcc_sys>; 130 regulator-always-on; 131 regulator-boot-on; 132 }; 133 134 vcc_io: vcc-io-regulator { 135 compatible = "regulator-fixed"; 136 regulator-name = "VCC_IO"; 137 regulator-min-microvolt = <3300000>; 138 regulator-max-microvolt = <3300000>; 139 vin-supply = <&vcc_sys>; 140 regulator-always-on; 141 regulator-boot-on; 142 }; 143 144 vcc_lan: vcc-lan-regulator { 145 compatible = "regulator-fixed"; 146 regulator-name = "VCC_LAN"; 147 regulator-min-microvolt = <3300000>; 148 regulator-max-microvolt = <3300000>; 149 vin-supply = <&vcc_io>; 150 regulator-always-on; 151 regulator-boot-on; 152 }; 153 154 vcc_sd: vcc-sd-regulator { 155 compatible = "regulator-fixed"; 156 gpio = <&gpio1 RK_PB6 GPIO_ACTIVE_LOW>; 157 startup-delay-us = <500>; 158 regulator-name = "VCC_SD"; 159 regulator-min-microvolt = <3300000>; 160 regulator-max-microvolt = <3300000>; 161 vin-supply = <&vcc_io>; 162 pinctrl-names = "default"; 163 pinctrl-0 = <&sdmmc_pwren>; 164 }; 165 166 vcc_sys: vcc-sys-regulator { 167 compatible = "regulator-fixed"; 168 regulator-name = "VCC_SYS"; 169 regulator-min-microvolt = <5000000>; 170 regulator-max-microvolt = <5000000>; 171 vin-supply = <&dc_5v>; 172 regulator-always-on; 173 regulator-boot-on; 174 }; 175 176 vcc33_hdmi: vcc33-hdmi-regulator { 177 compatible = "regulator-fixed"; 178 regulator-name = "VCC33_HDMI"; 179 regulator-min-microvolt = <3300000>; 180 regulator-max-microvolt = <3300000>; 181 vin-supply = <&vcca_33>; 182 regulator-always-on; 183 regulator-boot-on; 184 }; 185 186 vcca_33: vcca-33-regulator { 187 compatible = "regulator-fixed"; 188 regulator-name = "VCCA_33"; 189 regulator-min-microvolt = <3300000>; 190 regulator-max-microvolt = <3300000>; 191 vin-supply = <&vcc_sys>; 192 regulator-always-on; 193 regulator-boot-on; 194 }; 195 196 vdd_11: vdd-11-regulator { 197 compatible = "regulator-fixed"; 198 regulator-name = "VDD_11"; 199 regulator-min-microvolt = <1100000>; 200 regulator-max-microvolt = <1100000>; 201 vin-supply = <&vcc_sys>; 202 regulator-always-on; 203 regulator-boot-on; 204 }; 205 206 vdd11_hdmi: vdd11-hdmi-regulator { 207 compatible = "regulator-fixed"; 208 regulator-name = "VDD11_HDMI"; 209 regulator-min-microvolt = <1100000>; 210 regulator-max-microvolt = <1100000>; 211 vin-supply = <&vdd_11>; 212 regulator-always-on; 213 regulator-boot-on; 214 }; 215 216 vdd_arm: vdd-arm-regulator { 217 compatible = "pwm-regulator"; 218 regulator-name = "VDD_ARM"; 219 pwms = <&pwm1 0 25000 1>; 220 pwm-supply = <&vcc_sys>; 221 regulator-min-microvolt = <900000>; 222 regulator-max-microvolt = <1400000>; 223 regulator-always-on; 224 regulator-boot-on; 225 }; 226 227 /* 228 * As per schematics vdd_log is minimum 900 mV, maximum 1400 mV. 229 * Since there are HW blocks in PD_LOGIC (which are all driven by 230 * this supply), that either do not have a driver at all or the 231 * driver does not implement regulator support we have to make 232 * sure here that the voltage never drops below 1050 mV. 233 */ 234 vdd_log: vdd-log-regulator { 235 compatible = "pwm-regulator"; 236 regulator-name = "VDD_LOG"; 237 pwms = <&pwm2 0 25000 1>; 238 pwm-dutycycle-range = <30 100>; 239 pwm-supply = <&vcc_sys>; 240 regulator-min-microvolt = <1050000>; 241 regulator-max-microvolt = <1400000>; 242 regulator-ramp-delay = <4000>; 243 regulator-always-on; 244 regulator-boot-on; 245 }; 246 247}; 248 249&cpu0 { 250 cpu-supply = <&vdd_arm>; 251}; 252 253&display_subsystem { 254 status = "okay"; 255}; 256 257&emmc { 258 bus-width = <8>; 259 vmmc-supply = <&vcc_io>; 260 pinctrl-names = "default"; 261 pinctrl-0 = <&emmc_clk &emmc_cmd &emmc_bus8>; 262 cap-mmc-highspeed; 263 mmc-ddr-3_3v; 264 no-sd; 265 no-sdio; 266 status = "okay"; 267}; 268 269&gmac { 270 clock_in_out = "output"; 271 phy-supply = <&vcc_lan>; 272 phy-mode = "rmii"; 273 phy-handle = <&phy0>; 274 assigned-clocks = <&cru SCLK_MAC_SRC>; 275 assigned-clock-rates= <50000000>; 276 pinctrl-names = "default"; 277 pinctrl-0 = <&rmii_pins>; 278 status = "okay"; 279}; 280 281&gpio0 { 282 gpio-line-names = /* GPIO0 A0-A7 */ 283 "", "", "HEADER_5", "HEADER_3", 284 "", "", "", "", 285 /* GPIO0 B0-B7 */ 286 "HEADER_22", "HEADER_23", "", "HEADER_19", 287 "HEADER_26", "HEADER_21", "HEADER_24", "", 288 /* GPIO0 C0-C7 */ 289 "", "HEADER_18", "", "", 290 "", "", "", "", 291 /* GPIO0 D0-D7 */ 292 "HEADER_36", "", "", "", 293 "", "", "HEADER_13", ""; 294}; 295 296&gpio1 { 297 gpio-line-names = /* GPIO1 A0-A7 */ 298 "HEADER_7", "HEADER_35", "HEADER_33", "HEADER_37", 299 "HEADER_40", "HEADER_38", "", "", 300 /* GPIO1 B0-B7 */ 301 "HEADER_11", "", "", "HEADER_29", 302 "HEADER_31", "", "", "", 303 /* GPIO1 C0-C7 */ 304 "", "", "", "", 305 "", "", "", "", 306 /* GPIO1 D0-D7 */ 307 "", "", "", "", 308 "", "", "", ""; 309}; 310 311&gpio2 { 312 gpio-line-names = /* GPIO2 A0-A7 */ 313 "", "", "", "", 314 "", "", "", "", 315 /* GPIO2 B0-B7 */ 316 "", "", "", "", 317 "", "", "", "", 318 /* GPIO2 C0-C7 */ 319 "", "", "", "", 320 "HEADER_27", "", "", "", 321 /* GPIO2 D0-D7 */ 322 "", "", "HEADER_8", "HEADER_10", 323 "", "", "", ""; 324}; 325 326&gpio3 { 327 gpio-line-names = /* GPIO3 A0-A7 */ 328 "", "", "", "", 329 "", "", "", "", 330 /* GPIO3 B0-B7 */ 331 "", "", "", "", 332 "", "", "", "", 333 /* GPIO3 C0-C7 */ 334 "", "HEADER_32", "", "", 335 "", "", "", "HEADER_12", 336 /* GPIO3 D0-D7 */ 337 "", "", "", "HEADER_15", 338 "", "", "", ""; 339}; 340 341&gpu { 342 mali-supply = <&vdd_log>; 343 status = "okay"; 344}; 345 346&hdmi { 347 status = "okay"; 348}; 349 350&hdmi_out { 351 hdmi_connector_out: endpoint { 352 remote-endpoint = <&hdmi_connector_in>; 353 }; 354}; 355 356&mdio { 357 phy0: ethernet-phy@1 { 358 compatible = "ethernet-phy-ieee802.3-c22"; 359 reg = <1>; 360 max-speed = <100>; 361 /* T2.2.4 min. 1 us */ 362 reset-assert-us = <10>; 363 /* T2.2.1 + T2.2.2 + T2.2.3 min. 6.05 us */ 364 reset-deassert-us = <20>; 365 reset-gpios = <&gpio2 RK_PD0 GPIO_ACTIVE_LOW>; 366 pinctrl-names = "default"; 367 pinctrl-0 = <&dp83848c_rst>; 368 }; 369}; 370 371&pinctrl { 372 dp83848c { 373 dp83848c_rst: dp83848c-rst { 374 rockchip,pins = <2 RK_PD0 RK_FUNC_GPIO &pcfg_pull_none>; 375 }; 376 }; 377 378 ir-receiver { 379 ir_int: ir-int { 380 rockchip,pins = <3 RK_PD2 RK_FUNC_GPIO &pcfg_pull_none>; 381 }; 382 }; 383 384 leds { 385 power_led: power-led { 386 rockchip,pins = <0 RK_PD2 RK_FUNC_GPIO &pcfg_pull_none>; 387 }; 388 389 spd_led: spd-led { 390 rockchip,pins = <3 RK_PB3 RK_FUNC_GPIO &pcfg_pull_none>; 391 }; 392 }; 393 394 usb2 { 395 host_drv: host-drv { 396 rockchip,pins = <3 RK_PC4 RK_FUNC_GPIO &pcfg_pull_none>; 397 }; 398 }; 399}; 400 401&pwm1 { 402 status = "okay"; 403}; 404 405&pwm2 { 406 status = "okay"; 407}; 408 409&saradc { 410 vref-supply = <&vcc_io>; 411 status = "okay"; 412}; 413 414&sdmmc { 415 bus-width = <4>; 416 vmmc-supply = <&vcc_sd>; 417 pinctrl-names = "default"; 418 pinctrl-0 = <&sdmmc_bus4 &sdmmc_clk &sdmmc_cmd &sdmmc_det>; 419 disable-wp; 420 cap-sd-highspeed; 421 no-mmc; 422 no-sdio; 423 status = "okay"; 424}; 425 426&uart1 { 427 status = "okay"; 428}; 429 430&usb_host_ehci { 431 status = "okay"; 432}; 433 434&usb_otg { 435 vusb_a-supply = <&vcc_io>; 436 vusb_d-supply = <&vdd_11>; 437 status = "okay"; 438}; 439 440&usb2phy { 441 status = "okay"; 442}; 443 444&usb2phy_host { 445 status = "okay"; 446}; 447 448&usb2phy_otg { 449 status = "okay"; 450}; 451 452&vop { 453 status = "okay"; 454}; 455