From 77aa36d79985efc2a27e5ed5672bb86659b596f7 Mon Sep 17 00:00:00 2001 From: Ricardo Pardini Date: Sun, 21 Dec 2025 16:19:50 +0100 Subject: [PATCH] rockchip64-6.18: mixtile-core3588e: device tree additions & fixes - on top of Joshua Riek's DT, add: - GPU - NPU - i2c5 (40-pin) - saradc - tsadc (thermals) - pwm2 / tacho / cooling fan - sys-led - usb2 otg (for flashing / UMS - microusb port) - USB3 ports (via usb hub on carrier board) - hdmi0 & hdmi0 audio & vop - uart1 (40-pin) --- .../dt/rk3588-mixtile-core3588e.dts | 378 +++++++++++++++--- 1 file changed, 317 insertions(+), 61 deletions(-) diff --git a/patch/kernel/archive/rockchip64-6.18/dt/rk3588-mixtile-core3588e.dts b/patch/kernel/archive/rockchip64-6.18/dt/rk3588-mixtile-core3588e.dts index e12b71c3d..a81bcffc5 100644 --- a/patch/kernel/archive/rockchip64-6.18/dt/rk3588-mixtile-core3588e.dts +++ b/patch/kernel/archive/rockchip64-6.18/dt/rk3588-mixtile-core3588e.dts @@ -8,6 +8,7 @@ /dts-v1/; #include #include +#include #include "rk3588.dtsi" / { @@ -25,14 +26,26 @@ fan: pwm-fan { compatible = "pwm-fan"; - cooling-levels = <0 25 95 145 195 255>; + cooling-levels = <0 40 51 77 102 128 153 179 204 230 255>; fan-supply = <&vcc5v0_sys>; interrupt-parent = <&gpio3>; - interrupts = ; + interrupts = ; pwms = <&pwm2 0 50000 0>; #cooling-cells = <2>; }; + leds { + compatible = "gpio-leds"; + + sys_led: led-0 { + label = "sys_led"; + gpios = <&gpio3 RK_PB6 GPIO_ACTIVE_HIGH>; + linux,default-trigger = "heartbeat"; + pinctrl-names = "default"; + pinctrl-0 = <&sys_led_pin>; + }; + }; + vcc3v3_pcie30: vcc3v3-pcie30-regulator { compatible = "regulator-fixed"; regulator-name = "vcc3v3_pcie30"; @@ -54,6 +67,20 @@ regulator-max-microvolt = <5000000>; }; + vcc5v0_host: regulator-vcc5v0-host { + compatible = "regulator-fixed"; + regulator-name = "vcc5v0_host"; + regulator-boot-on; + regulator-always-on; + regulator-min-microvolt = <5000000>; + regulator-max-microvolt = <5000000>; + enable-active-high; + gpio = <&gpio4 RK_PB0 GPIO_ACTIVE_HIGH>; + pinctrl-names = "default"; + pinctrl-0 = <&vcc5v0_host_en>; + vin-supply = <&vcc5v0_sys>; + }; + vcc_1v1_nldo_s3: vcc-1v1-nldo-s3-regulator { compatible = "regulator-fixed"; regulator-name = "vcc_1v1_nldo_s3"; @@ -63,10 +90,17 @@ regulator-max-microvolt = <1100000>; vin-supply = <&vcc5v0_sys>; }; -}; -&combphy2_psu { - status = "okay"; + hdmi0-con { + compatible = "hdmi-connector"; + type = "a"; + + port { + hdmi0_con_in: endpoint { + remote-endpoint = <&hdmi0_out_con>; + }; + }; + }; }; &cpu_b0 { @@ -109,6 +143,11 @@ mem-supply = <&vdd_cpu_lit_mem_s0>; }; +&gpu { + mali-supply = <&vdd_gpu_s0>; + status = "okay"; +}; + &gmac0 { clock_in_out = "output"; phy-handle = <&rgmii_phy>; @@ -124,6 +163,30 @@ status = "okay"; }; +&hdmi0 { + status = "okay"; +}; + +&hdmi0_in { + hdmi0_in_vp0: endpoint { + remote-endpoint = <&vp0_out_hdmi0>; + }; +}; + +&hdmi0_out { + hdmi0_out_con: endpoint { + remote-endpoint = <&hdmi0_con_in>; + }; +}; + +&hdmi0_sound { + status = "okay"; +}; + +&hdptxphy0 { + status = "okay"; +}; + &i2c0 { pinctrl-names = "default"; pinctrl-0 = <&i2c0m2_xfer>; @@ -187,6 +250,14 @@ }; }; + +/* maybe on some pin connector? found on vendor kernel */ +&i2c3 { + status = "okay"; + pinctrl-0 = <&i2c3m0_xfer>; +}; + + &i2c4 { status = "okay"; pinctrl-0 = <&i2c4m3_xfer>; @@ -205,6 +276,18 @@ }; }; + +/* on 40-pin connector pins: pin 3 is SDA; pin 5 is SCL */ +&i2c5 { + pinctrl-0 = <&i2c5m2_xfer>; + status = "okay"; +}; + +// hdmi-0 audio +&i2s5_8ch { + status = "okay"; +}; + &mdio0 { rgmii_phy: ethernet-phy@1 { /* RTL8211F */ @@ -219,6 +302,107 @@ }; }; +/* Temperature sensor near the center of the SoC */ +&package_thermal { + polling-delay = <1000>; + + trips { + trip0: trip0 { + hysteresis = <2000>; + temperature = <45000>; /* 45 celsius */ + type = "active"; + }; + trip1: trip1 { + hysteresis = <2000>; + temperature = <52000>; /* 52 celsius */ + type = "active"; + }; + trip2: trip2 { + hysteresis = <2000>; + temperature = <54000>; /* 54 celsius */ + type = "active"; + }; + trip3: trip3 { + hysteresis = <2000>; + temperature = <56000>; /* 56 celsius */ + type = "active"; + }; + trip4: trip4 { + hysteresis = <2000>; + temperature = <58000>; /* 58 celsius */ + type = "active"; + }; + trip5: trip5 { + hysteresis = <2000>; + temperature = <60000>; /* 60 celsius */ + type = "active"; + }; + trip6: trip6 { + hysteresis = <2000>; + temperature = <62000>; /* 62 celsius */ + type = "active"; + }; + trip7: trip7 { + hysteresis = <2000>; + temperature = <64000>; /* 64 celsius */ + type = "active"; + }; + trip8: trip8 { + hysteresis = <2000>; + temperature = <66000>; /* 66 celsius */ + type = "active"; + }; + trip9: trip9 { + hysteresis = <2000>; + temperature = <70000>; /* 70 celsius */ + type = "active"; + }; + }; + + cooling-maps { + map0 { + cooling-device = <&fan THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; + trip = <&trip0>; + }; + map1 { + cooling-device = <&fan THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; + trip = <&trip1>; + }; + map2 { + cooling-device = <&fan THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; + trip = <&trip2>; + }; + map3 { + cooling-device = <&fan THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; + trip = <&trip3>; + }; + map4 { + cooling-device = <&fan THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; + trip = <&trip4>; + }; + map5 { + cooling-device = <&fan THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; + trip = <&trip5>; + }; + map6 { + cooling-device = <&fan THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; + trip = <&trip6>; + }; + map7 { + cooling-device = <&fan THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; + trip = <&trip7>; + }; + map8 { + cooling-device = <&fan THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; + trip = <&trip8>; + }; + map9 { + cooling-device = <&fan THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; + trip = <&trip9>; + }; + }; +}; + &pcie2x1l1 { linux,pci-domain = <1>; pinctrl-names = "default"; @@ -240,6 +424,10 @@ status = "okay"; }; +&pd_gpu { + domain-supply = <&vdd_gpu_s0>; +}; + &pinctrl { hym8563 { hym8563_int: hym8563-int { @@ -278,14 +466,30 @@ rockchip,pins = <1 RK_PA4 RK_FUNC_GPIO &pcfg_pull_none>; }; }; + + gpio-leds { + sys_led_pin: sys-led-pin { + rockchip,pins = <3 RK_PB6 RK_FUNC_GPIO &pcfg_pull_none>; + }; + }; + + usb { + vcc5v0_host_en: vcc5v0-host-en { + rockchip,pins = <4 RK_PB0 RK_FUNC_GPIO &pcfg_pull_none>; + }; + }; }; &pwm2 { - pinctrl-names = "active"; pinctrl-0 = <&pwm2m1_pins>; status = "okay"; }; +&saradc { + status = "okay"; + vref-supply = <&vcc_1v8_s0>; +}; + &sdhci { bus-width = <8>; no-sdio; @@ -298,61 +502,6 @@ status = "okay"; }; -/* Temperature sensor near the center of the SoC */ -&package_thermal { - polling-delay = <1000>; - - trips { - soc_active1: trip-active1 { - temperature = <37500>; - hysteresis = <1000>; - type = "active"; - }; - soc_active2: trip-active2 { - temperature = <42500>; - hysteresis = <2000>; - type = "active"; - }; - soc_active3: trip-active3 { - temperature = <47500>; - hysteresis = <2000>; - type = "active"; - }; - soc_active4: trip-active4 { - temperature = <55000>; - hysteresis = <2000>; - type = "active"; - }; - soc_active5: trip-active5 { - temperature = <65000>; - hysteresis = <2000>; - type = "active"; - }; - }; - - cooling-maps { - map1 { - trip = <&soc_active1>; - cooling-device = <&fan 1 1>; - }; - map2 { - trip = <&soc_active2>; - cooling-device = <&fan 2 2>; - }; - map3 { - trip = <&soc_active3>; - cooling-device = <&fan 3 3>; - }; - map4 { - trip = <&soc_active4>; - cooling-device = <&fan 4 4>; - }; - map5 { - trip = <&soc_active5>; - cooling-device = <&fan 5 5>; - }; - }; -}; &spi2 { status = "okay"; @@ -675,7 +824,114 @@ }; }; +&tsadc { + status = "okay"; +}; + +// required for pcie2x1l1 +&combphy2_psu { + status = "okay"; +}; + +&u2phy0 { + status = "okay"; +}; + +&u2phy0_otg { // for fc000000.usb UDC + status = "okay"; +}; + +&u2phy1 { // for usb_host1_xhci + // usb hub on carrier board is brought up by vcc5v0_host always-on + status = "okay"; +}; + +&u2phy1_otg { // for usb_host1_xhci, otherwise "rockchip-usb2phy fd5d4000.syscon:usb2phy@4000: Requested PHY is disabled" + status = "okay"; +}; + +&usbdp_phy1 { // for usb_host1_xhci + status = "okay"; +}; + +&usb_host0_xhci { // usb@fc000000 + dr_mode = "peripheral"; + maximum-speed = "high-speed"; + phys = <&u2phy0_otg>; + phy-names = "usb2-phy"; + status = "okay"; +}; + +&usb_host1_xhci { // usb@fc400000 <-- this works on vendor (as usb8 -> usbdrd3_1/fc400000.usb), there's a hub on the carrier board + dr_mode = "host"; + status = "okay"; +}; + +// 40-pin: pin 8 is UART TX; pin 10 is UART RX (unconfirmed) +&uart1 { + status = "okay"; + pinctrl-names = "default"; + pinctrl-0 = <&uart1m1_xfer &uart1m1_ctsn &uart1m1_rtsn>; +}; + +// found on vendor kernel, but no idea where it is physically +&uart7 { + status = "okay"; + pinctrl-names = "default"; + pinctrl-0 = <&uart7m1_xfer &uart7m1_ctsn &uart7m1_rtsn>; +}; + +// debug port, on the extra horizontal pins on the carrier board (NOT 40-pin) &uart2 { pinctrl-0 = <&uart2m0_xfer>; status = "okay"; }; + +&pd_npu { + domain-supply = <&vdd_npu_s0>; +}; + +&rknn_core_0 { + npu-supply = <&vdd_npu_s0>; + sram-supply = <&vdd_npu_s0>; + status = "okay"; +}; + +&rknn_core_1 { + npu-supply = <&vdd_npu_s0>; + sram-supply = <&vdd_npu_s0>; + status = "okay"; +}; + +&rknn_core_2 { + npu-supply = <&vdd_npu_s0>; + sram-supply = <&vdd_npu_s0>; + status = "okay"; +}; + +&rknn_mmu_0 { + status = "okay"; +}; + +&rknn_mmu_1 { + status = "okay"; +}; + +&rknn_mmu_2 { + status = "okay"; +}; + +&vop { + status = "okay"; +}; + +&vop_mmu { + status = "okay"; +}; + +&vp0 { + vp0_out_hdmi0: endpoint@ROCKCHIP_VOP2_EP_HDMI0 { + reg = ; + remote-endpoint = <&hdmi0_in_vp0>; + }; +};