Hi Damon, On Tue, Sep 10, 2024 at 7:11 AM Damon Ding <damon.ding@xxxxxxxxxxxxxx> wrote: > > Specification: > - Rockchip RK3588S > - RK806-2x2pcs + DiscretePower > - eMMC5.1 + SPI Flash > - Micro SD Card3.0 > - 1 x Typec3.0 + 2 x USB2 HOST > - 1 x 1Lane PCIE2.0 Connector(RC Mode) > - Headphone output > - Array Key(MENU/VOL+/VOP-/ESC), Reset, Power on/off Key > - 6 x SARADC > > Signed-off-by: Damon Ding <damon.ding@xxxxxxxxxxxxxx> > --- > arch/arm64/boot/dts/rockchip/Makefile | 1 + > .../boot/dts/rockchip/rk3588s-evb1-v10.dts | 1120 +++++++++++++++++ > 2 files changed, 1121 insertions(+) > create mode 100644 arch/arm64/boot/dts/rockchip/rk3588s-evb1-v10.dts > > diff --git a/arch/arm64/boot/dts/rockchip/Makefile b/arch/arm64/boot/dts/rockchip/Makefile > index fda1b980eb4b..f2992da01ada 100644 > --- a/arch/arm64/boot/dts/rockchip/Makefile > +++ b/arch/arm64/boot/dts/rockchip/Makefile > @@ -139,6 +139,7 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588-tiger-haikou.dtb > dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588-toybrick-x0.dtb > dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588-turing-rk1.dtb > dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588s-coolpi-4b.dtb > +dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588s-evb1-v10.dtb > dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588s-indiedroid-nova.dtb > dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588s-khadas-edge2.dtb > dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588s-nanopi-r6s.dtb > diff --git a/arch/arm64/boot/dts/rockchip/rk3588s-evb1-v10.dts b/arch/arm64/boot/dts/rockchip/rk3588s-evb1-v10.dts > new file mode 100644 > index 000000000000..83128d2d8cdd > --- /dev/null > +++ b/arch/arm64/boot/dts/rockchip/rk3588s-evb1-v10.dts > @@ -0,0 +1,1120 @@ <...> > + pmic@1 { > + compatible = "rockchip,rk806"; > + reg = <0x01>; > + #gpio-cells = <2>; > + gpio-controller; > + interrupt-parent = <&gpio0>; > + interrupts = <7 IRQ_TYPE_LEVEL_LOW>; > + pinctrl-0 = <&rk806_slave_dvs1_null>, <&rk806_slave_dvs2_null>, > + <&rk806_slave_dvs3_null>; > + pinctrl-names = "default"; > + spi-max-frequency = <1000000>; > + > + vcc1-supply = <&vcc5v0_sys>; > + vcc2-supply = <&vcc5v0_sys>; > + vcc3-supply = <&vcc5v0_sys>; > + vcc4-supply = <&vcc5v0_sys>; > + vcc5-supply = <&vcc5v0_sys>; > + vcc6-supply = <&vcc5v0_sys>; > + vcc7-supply = <&vcc5v0_sys>; > + vcc8-supply = <&vcc5v0_sys>; > + vcc9-supply = <&vcc5v0_sys>; > + vcc10-supply = <&vcc5v0_sys>; > + vcc11-supply = <&vcc_2v0_pldo_s3>; > + vcc12-supply = <&vcc5v0_sys>; > + vcc13-supply = <&vcc_1v1_nldo_s3>; > + vcc14-supply = <&vcc_2v0_pldo_s3>; > + vcca-supply = <&vcc5v0_sys>; > + > + rk806_slave_dvs1_null: dvs1-null-pins { > + pins = "gpio_pwrctrl1"; > + function = "pin_fun0"; > + }; > + > + rk806_slave_dvs2_null: dvs2-null-pins { > + pins = "gpio_pwrctrl2"; > + function = "pin_fun0"; > + }; > + > + rk806_slave_dvs3_null: dvs3-null-pins { > + pins = "gpio_pwrctrl3"; > + function = "pin_fun0"; > + }; > + > + regulators { > + vdd_cpu_big1_s0: dcdc-reg1 { > + regulator-always-on; > + regulator-boot-on; You may want to introduce regulator coupling between CPU supplies and their respective SRAM supplies, as they are driven by separate physical regulators and will go out of sync when cpufreq tries to adjust frequency and voltage of the CPU cluster under load. See [1]. So perhaps: + regulator-coupled-with = <&vdd_cpu_big1_mem_s0>; + regulator-coupled-max-spread = <10000>; > + regulator-init-microvolt = <800000>; > + regulator-min-microvolt = <550000>; > + regulator-max-microvolt = <1050000>; > + regulator-ramp-delay = <12500>; > + regulator-name = "vdd_cpu_big1_s0"; > + regulator-state-mem { > + regulator-off-in-suspend; > + }; > + }; > + > + vdd_cpu_big0_s0: dcdc-reg2 { > + regulator-always-on; > + regulator-boot-on; + regulator-coupled-with = <&vdd_cpu_big0_mem_s0>; + regulator-coupled-max-spread = <10000>; > + regulator-init-microvolt = <800000>; > + regulator-min-microvolt = <550000>; > + regulator-max-microvolt = <1050000>; > + regulator-ramp-delay = <12500>; > + regulator-name = "vdd_cpu_big0_s0"; > + regulator-state-mem { > + regulator-off-in-suspend; > + }; > + }; > + > + vdd_cpu_lit_s0: dcdc-reg3 { > + regulator-always-on; > + regulator-boot-on; + regulator-coupled-with = <&vdd_cpu_lit_mem_s0>; + regulator-coupled-max-spread = <10000>; > + regulator-init-microvolt = <800000>; > + regulator-min-microvolt = <550000>; > + regulator-max-microvolt = <950000>; > + regulator-ramp-delay = <12500>; > + regulator-name = "vdd_cpu_lit_s0"; > + regulator-state-mem { > + regulator-off-in-suspend; > + }; > + }; > + > + vcc_3v3_s3: dcdc-reg4 { > + regulator-always-on; > + regulator-boot-on; > + regulator-min-microvolt = <3300000>; > + regulator-max-microvolt = <3300000>; > + regulator-ramp-delay = <12500>; > + regulator-name = "vcc_3v3_s3"; > + regulator-state-mem { > + regulator-on-in-suspend; > + regulator-suspend-microvolt = <3300000>; > + }; > + }; > + > + vdd_cpu_big1_mem_s0: dcdc-reg5 { > + regulator-always-on; > + regulator-boot-on; + regulator-coupled-with = <&vdd_cpu_big1_s0>; + regulator-coupled-max-spread = <10000>; > + regulator-init-microvolt = <800000>; > + regulator-min-microvolt = <675000>; > + regulator-max-microvolt = <1050000>; > + regulator-ramp-delay = <12500>; > + regulator-name = "vdd_cpu_big1_mem_s0"; > + regulator-state-mem { > + regulator-off-in-suspend; > + }; > + }; > + > + > + vdd_cpu_big0_mem_s0: dcdc-reg6 { > + regulator-always-on; > + regulator-boot-on; + regulator-coupled-with = <&vdd_cpu_big0_s0>; + regulator-coupled-max-spread = <10000>; > + regulator-init-microvolt = <800000>; > + regulator-min-microvolt = <675000>; > + regulator-max-microvolt = <1050000>; > + regulator-ramp-delay = <12500>; > + regulator-name = "vdd_cpu_big0_mem_s0"; > + regulator-state-mem { > + regulator-off-in-suspend; > + }; > + }; > + > + vcc_1v8_s0: dcdc-reg7 { > + regulator-always-on; > + regulator-boot-on; > + regulator-min-microvolt = <1800000>; > + regulator-max-microvolt = <1800000>; > + regulator-ramp-delay = <12500>; > + regulator-name = "vcc_1v8_s0"; > + regulator-state-mem { > + regulator-off-in-suspend; > + }; > + }; > + > + vdd_cpu_lit_mem_s0: dcdc-reg8 { > + regulator-always-on; > + regulator-boot-on; + regulator-coupled-with = <&vdd_cpu_lit_s0>; + regulator-coupled-max-spread = <10000>; > + regulator-init-microvolt = <800000>; > + regulator-min-microvolt = <675000>; > + regulator-max-microvolt = <950000>; > + regulator-ramp-delay = <12500>; > + regulator-name = "vdd_cpu_lit_mem_s0"; > + regulator-state-mem { > + regulator-off-in-suspend; > + }; > + }; <...> [1] https://github.com/torvalds/linux/commit/0ba0560982bc8d0c3fb3ca209fd0ed29f81402ac Best regards, Alexey