* [PATCH 0/4] arm64: dts: rockchip: enable further peripherals on ArmSoM Sige5
@ 2025-06-03 17:01 Alexey Charkov
2025-06-03 17:01 ` [PATCH 1/4] arm64: dts: rockchip: list all CPU supplies " Alexey Charkov
` (4 more replies)
0 siblings, 5 replies; 44+ messages in thread
From: Alexey Charkov @ 2025-06-03 17:01 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Heiko Stuebner
Cc: devicetree, linux-arm-kernel, linux-rockchip, linux-kernel,
Alexey Charkov
Add support for the two USB type A ports, link up the CPU regulators for
DVFS, enable WiFi and Bluetooth.
The bluetooth part might warrant some discussion and thoughts from the
list, given that it's connected over UART and thus not discoverable. At
the same time, there are two revisions of the board which have different
Bluetooth chips soldered on: Realtek based on v1.1 and Broadcom based on
v1.2. I'm not sure if there is any way to determine board version from
software. Mine is v1.2, so the respective patch deals with the Broadcom
case only, but maybe it's better to move it into a .dtso and thus kick
the can down the road (i.e. make the user deal with board identification
and loading of the right overlay)? Thoughts welcome.
Best regards,
Alexey
Signed-off-by: Alexey Charkov <alchark@gmail.com>
---
Alexey Charkov (4):
arm64: dts: rockchip: list all CPU supplies on ArmSoM Sige5
arm64: dts: rockchip: enable USB A ports on ArmSoM Sige5
arm64: dts: rockchip: enable wifi on ArmSoM Sige5
arm64: dts: rockchip: enable bluetooth on ArmSoM Sige5
.../boot/dts/rockchip/rk3576-armsom-sige5.dts | 135 +++++++++++++++++++++
arch/arm64/boot/dts/rockchip/rk3576.dtsi | 16 +++
2 files changed, 151 insertions(+)
---
base-commit: 546b1c9e93c2bb8cf5ed24e0be1c86bb089b3253
change-id: 20250602-sige5-updates-a162b501a1b1
Best regards,
--
Alexey Charkov <alchark@gmail.com>
^ permalink raw reply [flat|nested] 44+ messages in thread
* [PATCH 1/4] arm64: dts: rockchip: list all CPU supplies on ArmSoM Sige5
2025-06-03 17:01 [PATCH 0/4] arm64: dts: rockchip: enable further peripherals on ArmSoM Sige5 Alexey Charkov
@ 2025-06-03 17:01 ` Alexey Charkov
2025-06-04 18:38 ` Nicolas Frattaroli
2025-06-05 11:17 ` Diederik de Haas
2025-06-03 17:01 ` [PATCH 2/4] arm64: dts: rockchip: enable USB A ports " Alexey Charkov
` (3 subsequent siblings)
4 siblings, 2 replies; 44+ messages in thread
From: Alexey Charkov @ 2025-06-03 17:01 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Heiko Stuebner
Cc: devicetree, linux-arm-kernel, linux-rockchip, linux-kernel,
Alexey Charkov
List both CPU supply regulators which drive the little and big CPU
clusters, respectively, so that cpufreq can pick them up.
Signed-off-by: Alexey Charkov <alchark@gmail.com>
---
.../boot/dts/rockchip/rk3576-armsom-sige5.dts | 28 ++++++++++++++++++++++
1 file changed, 28 insertions(+)
diff --git a/arch/arm64/boot/dts/rockchip/rk3576-armsom-sige5.dts b/arch/arm64/boot/dts/rockchip/rk3576-armsom-sige5.dts
index b09e789c75c47fec7cf7e9810ab0dcca32d9404a..d9c129be55a0d997e04e6d677cdc98fb50353418 100644
--- a/arch/arm64/boot/dts/rockchip/rk3576-armsom-sige5.dts
+++ b/arch/arm64/boot/dts/rockchip/rk3576-armsom-sige5.dts
@@ -207,6 +207,22 @@ vcc_3v3_ufs_s0: regulator-vcc-ufs-s0 {
};
};
+&cpu_b0 {
+ cpu-supply = <&vdd_cpu_big_s0>;
+};
+
+&cpu_b1 {
+ cpu-supply = <&vdd_cpu_big_s0>;
+};
+
+&cpu_b2 {
+ cpu-supply = <&vdd_cpu_big_s0>;
+};
+
+&cpu_b3 {
+ cpu-supply = <&vdd_cpu_big_s0>;
+};
+
&combphy0_ps {
status = "okay";
};
@@ -215,6 +231,18 @@ &cpu_l0 {
cpu-supply = <&vdd_cpu_lit_s0>;
};
+&cpu_l1 {
+ cpu-supply = <&vdd_cpu_lit_s0>;
+};
+
+&cpu_l2 {
+ cpu-supply = <&vdd_cpu_lit_s0>;
+};
+
+&cpu_l3 {
+ cpu-supply = <&vdd_cpu_lit_s0>;
+};
+
&gmac0 {
phy-mode = "rgmii-id";
clock_in_out = "output";
--
2.49.0
^ permalink raw reply related [flat|nested] 44+ messages in thread
* [PATCH 2/4] arm64: dts: rockchip: enable USB A ports on ArmSoM Sige5
2025-06-03 17:01 [PATCH 0/4] arm64: dts: rockchip: enable further peripherals on ArmSoM Sige5 Alexey Charkov
2025-06-03 17:01 ` [PATCH 1/4] arm64: dts: rockchip: list all CPU supplies " Alexey Charkov
@ 2025-06-03 17:01 ` Alexey Charkov
2025-06-03 17:51 ` Nicolas Frattaroli
2025-06-03 17:01 ` [PATCH 3/4] arm64: dts: rockchip: enable wifi " Alexey Charkov
` (2 subsequent siblings)
4 siblings, 1 reply; 44+ messages in thread
From: Alexey Charkov @ 2025-06-03 17:01 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Heiko Stuebner
Cc: devicetree, linux-arm-kernel, linux-rockchip, linux-kernel,
Alexey Charkov
Enable the two USB type A ports (USB2 and USB3) present on the ArmSoM
Sige5 board.
Both ports use just one xHCI controller, with the USB 2.0 signals fed
off the same USB OTG PHY through an onboard hub. VBUS of both ports is
controlled by the same GPIO regulator (VCC_USBHOST in the schematics,
toggled by GPIO4 RK_PA6).
Signed-off-by: Alexey Charkov <alchark@gmail.com>
---
.../boot/dts/rockchip/rk3576-armsom-sige5.dts | 38 ++++++++++++++++++++++
1 file changed, 38 insertions(+)
diff --git a/arch/arm64/boot/dts/rockchip/rk3576-armsom-sige5.dts b/arch/arm64/boot/dts/rockchip/rk3576-armsom-sige5.dts
index d9c129be55a0d997e04e6d677cdc98fb50353418..7ce1fb1380b0863c902fdd9cbc7454ee6011cf92 100644
--- a/arch/arm64/boot/dts/rockchip/rk3576-armsom-sige5.dts
+++ b/arch/arm64/boot/dts/rockchip/rk3576-armsom-sige5.dts
@@ -205,6 +205,24 @@ vcc_3v3_ufs_s0: regulator-vcc-ufs-s0 {
regulator-max-microvolt = <3300000>;
vin-supply = <&vcc_5v0_sys>;
};
+
+ vcc_5v0_host: regulator-vcc-5v0-host {
+ compatible = "regulator-fixed";
+ regulator-name = "vcc_5v0_host";
+ regulator-boot-on;
+ regulator-always-on;
+ regulator-min-microvolt = <5000000>;
+ regulator-max-microvolt = <5000000>;
+ enable-active-high;
+ gpio = <&gpio4 RK_PA4 GPIO_ACTIVE_HIGH>;
+ vin-supply = <&vcc_5v0_device>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&usb_host_pwren>;
+ };
+};
+
+&combphy1_psu {
+ status = "okay";
};
&cpu_b0 {
@@ -757,6 +775,12 @@ pcie_reset: pcie-reset {
rockchip,pins = <2 RK_PB4 RK_FUNC_GPIO &pcfg_pull_up>;
};
};
+
+ usb {
+ usb_host_pwren: usb-host-pwren {
+ rockchip,pins = <4 RK_PA4 RK_FUNC_GPIO &pcfg_pull_none>;
+ };
+ };
};
&sai1 {
@@ -798,11 +822,25 @@ &sdmmc {
status = "okay";
};
+&u2phy1 {
+ status = "okay";
+};
+
+&u2phy1_otg {
+ phy-supply = <&vcc_5v0_host>;
+ status = "okay";
+};
+
&uart0 {
pinctrl-0 = <&uart0m0_xfer>;
status = "okay";
};
+&usb_drd1_dwc3 {
+ dr_mode = "host";
+ status = "okay";
+};
+
&vop {
status = "okay";
};
--
2.49.0
^ permalink raw reply related [flat|nested] 44+ messages in thread
* [PATCH 3/4] arm64: dts: rockchip: enable wifi on ArmSoM Sige5
2025-06-03 17:01 [PATCH 0/4] arm64: dts: rockchip: enable further peripherals on ArmSoM Sige5 Alexey Charkov
2025-06-03 17:01 ` [PATCH 1/4] arm64: dts: rockchip: list all CPU supplies " Alexey Charkov
2025-06-03 17:01 ` [PATCH 2/4] arm64: dts: rockchip: enable USB A ports " Alexey Charkov
@ 2025-06-03 17:01 ` Alexey Charkov
2025-06-04 19:01 ` Nicolas Frattaroli
2025-06-05 2:43 ` Jimmy Hon
2025-06-03 17:01 ` [PATCH 4/4] arm64: dts: rockchip: enable bluetooth " Alexey Charkov
2025-06-04 13:58 ` [PATCH 0/4] arm64: dts: rockchip: enable further peripherals " Rob Herring (Arm)
4 siblings, 2 replies; 44+ messages in thread
From: Alexey Charkov @ 2025-06-03 17:01 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Heiko Stuebner
Cc: devicetree, linux-arm-kernel, linux-rockchip, linux-kernel,
Alexey Charkov
ArmSoM Sige5 uses a soldered-on SDIO connected WiFi module. Namely,
board v1.1 uses a Realtek based BL-M8852BS2, while v1.2 uses a Broadcom
based BW3752-50B1.
Add required device tree nodes in the SoC .dtsi for the SDIO controller
and pinctrl / clock wiring in the board .dts for the module itself.
Signed-off-by: Alexey Charkov <alchark@gmail.com>
---
.../boot/dts/rockchip/rk3576-armsom-sige5.dts | 36 ++++++++++++++++++++++
arch/arm64/boot/dts/rockchip/rk3576.dtsi | 16 ++++++++++
2 files changed, 52 insertions(+)
diff --git a/arch/arm64/boot/dts/rockchip/rk3576-armsom-sige5.dts b/arch/arm64/boot/dts/rockchip/rk3576-armsom-sige5.dts
index 7ce1fb1380b0863c902fdd9cbc7454ee6011cf92..dcd033859398312f7693bebb7f080ee4f2ecaa32 100644
--- a/arch/arm64/boot/dts/rockchip/rk3576-armsom-sige5.dts
+++ b/arch/arm64/boot/dts/rockchip/rk3576-armsom-sige5.dts
@@ -219,6 +219,15 @@ vcc_5v0_host: regulator-vcc-5v0-host {
pinctrl-names = "default";
pinctrl-0 = <&usb_host_pwren>;
};
+
+ sdio_pwrseq: sdio-pwrseq {
+ compatible = "mmc-pwrseq-simple";
+ clocks = <&hym8563>;
+ clock-names = "ext_clock";
+ pinctrl-names = "default";
+ pinctrl-0 = <&wifi_reg_on>;
+ reset-gpios = <&gpio1 RK_PC6 GPIO_ACTIVE_LOW>;
+ };
};
&combphy1_psu {
@@ -781,6 +790,16 @@ usb_host_pwren: usb-host-pwren {
rockchip,pins = <4 RK_PA4 RK_FUNC_GPIO &pcfg_pull_none>;
};
};
+
+ wireless-wlan {
+ wifi_wake_host: wifi-wake-host {
+ rockchip,pins = <0 RK_PB0 RK_FUNC_GPIO &pcfg_pull_down>;
+ };
+
+ wifi_reg_on: wifi-reg-on {
+ rockchip,pins = <1 RK_PC6 RK_FUNC_GPIO &pcfg_pull_none>;
+ };
+ };
};
&sai1 {
@@ -808,6 +827,23 @@ &sdhci {
status = "okay";
};
+&sdio {
+ bus-width = <4>;
+ cap-sdio-irq;
+ disable-wp;
+ keep-power-in-suspend;
+ mmc-pwrseq = <&sdio_pwrseq>;
+ no-sd;
+ no-mmc;
+ non-removable;
+ sd-uhs-sdr50;
+ sd-uhs-sdr104;
+ vmmc-supply = <&vcc_3v3_s3>;
+ vqmmc-supply = <&vcc_1v8_s3>;
+ wakeup-source;
+ status = "okay";
+};
+
&sdmmc {
bus-width = <4>;
cap-mmc-highspeed;
diff --git a/arch/arm64/boot/dts/rockchip/rk3576.dtsi b/arch/arm64/boot/dts/rockchip/rk3576.dtsi
index 1086482f04792325dc4c22fb8ceeb27eef59afe4..a09582470bb7f654b711308da1e51fa8571ca1e8 100644
--- a/arch/arm64/boot/dts/rockchip/rk3576.dtsi
+++ b/arch/arm64/boot/dts/rockchip/rk3576.dtsi
@@ -1695,6 +1695,22 @@ sdmmc: mmc@2a310000 {
status = "disabled";
};
+ sdio: mmc@2a320000 {
+ compatible = "rockchip,rk3576-dw-mshc", "rockchip,rk3288-dw-mshc";
+ reg = <0x0 0x2a320000 0x0 0x4000>;
+ clocks = <&cru HCLK_SDIO>, <&cru CCLK_SRC_SDIO>;
+ clock-names = "biu", "ciu";
+ fifo-depth = <0x100>;
+ interrupts = <GIC_SPI 252 IRQ_TYPE_LEVEL_HIGH>;
+ max-frequency = <200000000>;
+ pinctrl-0 = <&sdmmc1m0_clk &sdmmc1m0_cmd &sdmmc1m0_bus4>;
+ pinctrl-names = "default";
+ power-domains = <&power RK3576_PD_SDGMAC>;
+ resets = <&cru SRST_H_SDIO>;
+ reset-names = "reset";
+ status = "disabled";
+ };
+
sdhci: mmc@2a330000 {
compatible = "rockchip,rk3576-dwcmshc", "rockchip,rk3588-dwcmshc";
reg = <0x0 0x2a330000 0x0 0x10000>;
--
2.49.0
^ permalink raw reply related [flat|nested] 44+ messages in thread
* [PATCH 4/4] arm64: dts: rockchip: enable bluetooth on ArmSoM Sige5
2025-06-03 17:01 [PATCH 0/4] arm64: dts: rockchip: enable further peripherals on ArmSoM Sige5 Alexey Charkov
` (2 preceding siblings ...)
2025-06-03 17:01 ` [PATCH 3/4] arm64: dts: rockchip: enable wifi " Alexey Charkov
@ 2025-06-03 17:01 ` Alexey Charkov
2025-06-04 13:58 ` [PATCH 0/4] arm64: dts: rockchip: enable further peripherals " Rob Herring (Arm)
4 siblings, 0 replies; 44+ messages in thread
From: Alexey Charkov @ 2025-06-03 17:01 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Heiko Stuebner
Cc: devicetree, linux-arm-kernel, linux-rockchip, linux-kernel,
Alexey Charkov
ArmSoM Sige5 uses a soldered-on UART connected Bluetooth controller.
Namely, board v1.1 uses a Realtek based BL-M8852BS2, while v1.2 uses a
Broadcom based BW3752-50B1.
Add required device tree nodes to enable the Broadcom based module.
Signed-off-by: Alexey Charkov <alchark@gmail.com>
---
.../boot/dts/rockchip/rk3576-armsom-sige5.dts | 33 ++++++++++++++++++++++
1 file changed, 33 insertions(+)
diff --git a/arch/arm64/boot/dts/rockchip/rk3576-armsom-sige5.dts b/arch/arm64/boot/dts/rockchip/rk3576-armsom-sige5.dts
index dcd033859398312f7693bebb7f080ee4f2ecaa32..46e5d6e30898a0f937283e986f188947e10250ec 100644
--- a/arch/arm64/boot/dts/rockchip/rk3576-armsom-sige5.dts
+++ b/arch/arm64/boot/dts/rockchip/rk3576-armsom-sige5.dts
@@ -791,6 +791,20 @@ usb_host_pwren: usb-host-pwren {
};
};
+ wireless-bluetooth {
+ bt_reg_on: bt-reg-on {
+ rockchip,pins = <1 RK_PC7 RK_FUNC_GPIO &pcfg_pull_up>;
+ };
+
+ host_wake_bt: host-wake-bt {
+ rockchip,pins = <1 RK_PD4 RK_FUNC_GPIO &pcfg_pull_up>;
+ };
+
+ bt_wake_host: bt-wake-host {
+ rockchip,pins = <0 RK_PB1 RK_FUNC_GPIO &pcfg_pull_down>;
+ };
+ };
+
wireless-wlan {
wifi_wake_host: wifi-wake-host {
rockchip,pins = <0 RK_PB0 RK_FUNC_GPIO &pcfg_pull_down>;
@@ -872,6 +886,25 @@ &uart0 {
status = "okay";
};
+&uart4 {
+ pinctrl-0 = <&uart4m1_xfer &uart4m1_ctsn &uart4m1_rtsn>;
+ pinctrl-names = "default";
+ uart-has-rtscts;
+ status = "okay";
+
+ bluetooth {
+ compatible = "brcm,bcm43438-bt";
+ clocks = <&hym8563>;
+ clock-names = "lpo";
+ device-wakeup-gpios = <&gpio1 RK_PD7 GPIO_ACTIVE_HIGH>;
+ interrupt-parent = <&gpio0>;
+ interrupts = <RK_PB1 IRQ_TYPE_EDGE_FALLING>;
+ pinctrl-0 = <&bt_reg_on>, <&bt_wake_host>, <&host_wake_bt>;
+ pinctrl-names = "default";
+ shutdown-gpios = <&gpio0 RK_PC6 GPIO_ACTIVE_HIGH>;
+ };
+};
+
&usb_drd1_dwc3 {
dr_mode = "host";
status = "okay";
--
2.49.0
^ permalink raw reply related [flat|nested] 44+ messages in thread
* Re: [PATCH 2/4] arm64: dts: rockchip: enable USB A ports on ArmSoM Sige5
2025-06-03 17:01 ` [PATCH 2/4] arm64: dts: rockchip: enable USB A ports " Alexey Charkov
@ 2025-06-03 17:51 ` Nicolas Frattaroli
2025-06-04 6:52 ` Alexey Charkov
0 siblings, 1 reply; 44+ messages in thread
From: Nicolas Frattaroli @ 2025-06-03 17:51 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Heiko Stuebner,
linux-rockchip, Alexey Charkov
Cc: devicetree, linux-arm-kernel, linux-rockchip, linux-kernel,
Alexey Charkov
On Tuesday, 3 June 2025 19:01:14 Central European Summer Time Alexey Charkov wrote:
> Enable the two USB type A ports (USB2 and USB3) present on the ArmSoM
> Sige5 board.
>
> Both ports use just one xHCI controller, with the USB 2.0 signals fed
> off the same USB OTG PHY through an onboard hub. VBUS of both ports is
> controlled by the same GPIO regulator (VCC_USBHOST in the schematics,
> toggled by GPIO4 RK_PA6).
>
> Signed-off-by: Alexey Charkov <alchark@gmail.com>
> ---
> .../boot/dts/rockchip/rk3576-armsom-sige5.dts | 38 ++++++++++++++++++++++
> 1 file changed, 38 insertions(+)
>
This is already done here:
https://lore.kernel.org/linux-rockchip/20250507-rk3576-sige5-usb-v3-4-89bf5a614ccf@collabora.com/
> diff --git a/arch/arm64/boot/dts/rockchip/rk3576-armsom-sige5.dts b/arch/arm64/boot/dts/rockchip/rk3576-armsom-sige5.dts
> index d9c129be55a0d997e04e6d677cdc98fb50353418..7ce1fb1380b0863c902fdd9cbc7454ee6011cf92 100644
> --- a/arch/arm64/boot/dts/rockchip/rk3576-armsom-sige5.dts
> +++ b/arch/arm64/boot/dts/rockchip/rk3576-armsom-sige5.dts
> @@ -205,6 +205,24 @@ vcc_3v3_ufs_s0: regulator-vcc-ufs-s0 {
> regulator-max-microvolt = <3300000>;
> vin-supply = <&vcc_5v0_sys>;
> };
> +
> + vcc_5v0_host: regulator-vcc-5v0-host {
> + compatible = "regulator-fixed";
> + regulator-name = "vcc_5v0_host";
> + regulator-boot-on;
> + regulator-always-on;
> + regulator-min-microvolt = <5000000>;
> + regulator-max-microvolt = <5000000>;
> + enable-active-high;
> + gpio = <&gpio4 RK_PA4 GPIO_ACTIVE_HIGH>;
> + vin-supply = <&vcc_5v0_device>;
> + pinctrl-names = "default";
> + pinctrl-0 = <&usb_host_pwren>;
> + };
> +};
> +
> +&combphy1_psu {
> + status = "okay";
> };
>
> &cpu_b0 {
> @@ -757,6 +775,12 @@ pcie_reset: pcie-reset {
> rockchip,pins = <2 RK_PB4 RK_FUNC_GPIO &pcfg_pull_up>;
> };
> };
> +
> + usb {
> + usb_host_pwren: usb-host-pwren {
> + rockchip,pins = <4 RK_PA4 RK_FUNC_GPIO &pcfg_pull_none>;
> + };
> + };
> };
>
> &sai1 {
> @@ -798,11 +822,25 @@ &sdmmc {
> status = "okay";
> };
>
> +&u2phy1 {
> + status = "okay";
> +};
> +
> +&u2phy1_otg {
> + phy-supply = <&vcc_5v0_host>;
> + status = "okay";
> +};
> +
> &uart0 {
> pinctrl-0 = <&uart0m0_xfer>;
> status = "okay";
> };
>
> +&usb_drd1_dwc3 {
> + dr_mode = "host";
> + status = "okay";
> +};
> +
> &vop {
> status = "okay";
> };
>
>
^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [PATCH 2/4] arm64: dts: rockchip: enable USB A ports on ArmSoM Sige5
2025-06-03 17:51 ` Nicolas Frattaroli
@ 2025-06-04 6:52 ` Alexey Charkov
2025-06-04 13:24 ` Nicolas Frattaroli
0 siblings, 1 reply; 44+ messages in thread
From: Alexey Charkov @ 2025-06-04 6:52 UTC (permalink / raw)
To: Nicolas Frattaroli
Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Heiko Stuebner,
linux-rockchip, devicetree, linux-arm-kernel, linux-kernel
On Tue, Jun 3, 2025 at 9:51 PM Nicolas Frattaroli
<nicolas.frattaroli@collabora.com> wrote:
>
> On Tuesday, 3 June 2025 19:01:14 Central European Summer Time Alexey Charkov wrote:
> > Enable the two USB type A ports (USB2 and USB3) present on the ArmSoM
> > Sige5 board.
> >
> > Both ports use just one xHCI controller, with the USB 2.0 signals fed
> > off the same USB OTG PHY through an onboard hub. VBUS of both ports is
> > controlled by the same GPIO regulator (VCC_USBHOST in the schematics,
> > toggled by GPIO4 RK_PA6).
> >
> > Signed-off-by: Alexey Charkov <alchark@gmail.com>
> > ---
> > .../boot/dts/rockchip/rk3576-armsom-sige5.dts | 38 ++++++++++++++++++++++
> > 1 file changed, 38 insertions(+)
> >
>
> This is already done here:
>
> https://lore.kernel.org/linux-rockchip/20250507-rk3576-sige5-usb-v3-4-89bf5a614ccf@collabora.com/
Oh cool! Sorry I missed that one. Your series is much more
comprehensive, so this patch of mine can be dropped. Thanks for your
work!
Would you mind chiming in on the other patches here, given your
knowledge of the hardware?
By the way, you guys don't seem to carry those patches of yours in the
Collabora tree [1]? Nor the TSADC updates as far as I can tell.
[1] https://gitlab.collabora.com/hardware-enablement/rockchip-3588/linux/-/blob/rockchip-release/arch/arm64/boot/dts/rockchip/rk3576-armsom-sige5.dts?ref_type=heads
Best regards,
Alexey
^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [PATCH 2/4] arm64: dts: rockchip: enable USB A ports on ArmSoM Sige5
2025-06-04 6:52 ` Alexey Charkov
@ 2025-06-04 13:24 ` Nicolas Frattaroli
0 siblings, 0 replies; 44+ messages in thread
From: Nicolas Frattaroli @ 2025-06-04 13:24 UTC (permalink / raw)
To: Alexey Charkov
Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Heiko Stuebner,
linux-rockchip, devicetree, linux-arm-kernel, linux-kernel
On Wednesday, 4 June 2025 08:52:51 Central European Summer Time Alexey Charkov wrote:
> On Tue, Jun 3, 2025 at 9:51 PM Nicolas Frattaroli
> <nicolas.frattaroli@collabora.com> wrote:
> >
> > On Tuesday, 3 June 2025 19:01:14 Central European Summer Time Alexey Charkov wrote:
> > > Enable the two USB type A ports (USB2 and USB3) present on the ArmSoM
> > > Sige5 board.
> > >
> > > Both ports use just one xHCI controller, with the USB 2.0 signals fed
> > > off the same USB OTG PHY through an onboard hub. VBUS of both ports is
> > > controlled by the same GPIO regulator (VCC_USBHOST in the schematics,
> > > toggled by GPIO4 RK_PA6).
> > >
> > > Signed-off-by: Alexey Charkov <alchark@gmail.com>
> > > ---
> > > .../boot/dts/rockchip/rk3576-armsom-sige5.dts | 38 ++++++++++++++++++++++
> > > 1 file changed, 38 insertions(+)
> > >
> >
> > This is already done here:
> >
> > https://lore.kernel.org/linux-rockchip/20250507-rk3576-sige5-usb-v3-4-89bf5a614ccf@collabora.com/
>
> Oh cool! Sorry I missed that one. Your series is much more
> comprehensive, so this patch of mine can be dropped. Thanks for your
> work!
>
> Would you mind chiming in on the other patches here, given your
> knowledge of the hardware?
I gave the others a brief look yesterday, I'll give a more in-depth look
and test today and send you my Tested-by and Reviewed-by.
>
> By the way, you guys don't seem to carry those patches of yours in the
> Collabora tree [1]? Nor the TSADC updates as far as I can tell.
>
> [1] https://gitlab.collabora.com/hardware-enablement/rockchip-3588/linux/-/blob/rockchip-release/arch/arm64/boot/dts/rockchip/rk3576-armsom-sige5.dts?ref_type=heads
>
Yeah, I just sent them upstream directly, since at this stage it wasn't a
SoC and board in wide enough circulation yet where a ready-to-use public
tree with all the in-flight patches made sense for the added chore of
rebasing things when new version of patch series get submitted imho.
Though since some of them have been languishing with no upstream response
for quite a while (*cough* TSADC *cough*) and some more RK3576 hardware,
notably the RADXA ROCK 4D, released in the meantime, it may make sense to
have them included in either our rockchip-release or rockchip-devel tree.
If you want to keep up to date on what's in flight, our RK3576 mainline
status matrix at https://col.la/rk3576status is usually kept fairly up to
date.
Hopefully once v6.16-rc1 drops, upstream maintainers/reviewers are in a
better position to take a look at some of those patch series again, I'll
resubmit them when the time comes. Nothing lights a fire like a RESEND
prefix in a series.
> Best regards,
> Alexey
>
Kind regards,
Nicolas Frattaroli
^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [PATCH 0/4] arm64: dts: rockchip: enable further peripherals on ArmSoM Sige5
2025-06-03 17:01 [PATCH 0/4] arm64: dts: rockchip: enable further peripherals on ArmSoM Sige5 Alexey Charkov
` (3 preceding siblings ...)
2025-06-03 17:01 ` [PATCH 4/4] arm64: dts: rockchip: enable bluetooth " Alexey Charkov
@ 2025-06-04 13:58 ` Rob Herring (Arm)
2025-06-04 14:15 ` Alexey Charkov
4 siblings, 1 reply; 44+ messages in thread
From: Rob Herring (Arm) @ 2025-06-04 13:58 UTC (permalink / raw)
To: Alexey Charkov
Cc: linux-kernel, Conor Dooley, linux-arm-kernel, Krzysztof Kozlowski,
Heiko Stuebner, linux-rockchip, devicetree
On Tue, 03 Jun 2025 21:01:12 +0400, Alexey Charkov wrote:
> Add support for the two USB type A ports, link up the CPU regulators for
> DVFS, enable WiFi and Bluetooth.
>
> The bluetooth part might warrant some discussion and thoughts from the
> list, given that it's connected over UART and thus not discoverable. At
> the same time, there are two revisions of the board which have different
> Bluetooth chips soldered on: Realtek based on v1.1 and Broadcom based on
> v1.2. I'm not sure if there is any way to determine board version from
> software. Mine is v1.2, so the respective patch deals with the Broadcom
> case only, but maybe it's better to move it into a .dtso and thus kick
> the can down the road (i.e. make the user deal with board identification
> and loading of the right overlay)? Thoughts welcome.
>
> Best regards,
> Alexey
>
> Signed-off-by: Alexey Charkov <alchark@gmail.com>
> ---
> Alexey Charkov (4):
> arm64: dts: rockchip: list all CPU supplies on ArmSoM Sige5
> arm64: dts: rockchip: enable USB A ports on ArmSoM Sige5
> arm64: dts: rockchip: enable wifi on ArmSoM Sige5
> arm64: dts: rockchip: enable bluetooth on ArmSoM Sige5
>
> .../boot/dts/rockchip/rk3576-armsom-sige5.dts | 135 +++++++++++++++++++++
> arch/arm64/boot/dts/rockchip/rk3576.dtsi | 16 +++
> 2 files changed, 151 insertions(+)
> ---
> base-commit: 546b1c9e93c2bb8cf5ed24e0be1c86bb089b3253
> change-id: 20250602-sige5-updates-a162b501a1b1
>
> Best regards,
> --
> Alexey Charkov <alchark@gmail.com>
>
>
>
My bot found new DTB warnings on the .dts files added or changed in this
series.
Some warnings may be from an existing SoC .dtsi. Or perhaps the warnings
are fixed by another series. Ultimately, it is up to the platform
maintainer whether these warnings are acceptable or not. No need to reply
unless the platform maintainer has comments.
If you already ran DT checks and didn't see these error(s), then
make sure dt-schema is up to date:
pip3 install dtschema --upgrade
This patch series was applied (using b4) to base:
Base: using specified base-commit 546b1c9e93c2bb8cf5ed24e0be1c86bb089b3253
If this is not the correct base, please add 'base-commit' tag
(or use b4 which does this automatically)
New warnings running 'make CHECK_DTBS=y for arch/arm64/boot/dts/rockchip/' for 20250603-sige5-updates-v1-0-717e8ce4ab77@gmail.com:
arch/arm64/boot/dts/rockchip/rk3576-roc-pc.dtb: mmc@2a320000 (rockchip,rk3576-dw-mshc): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3576-dw-mshc', 'rockchip,rk3288-dw-mshc'] is too long
'rockchip,rk2928-dw-mshc' was expected
'rockchip,rk3288-dw-mshc' was expected
'rockchip,rk3576-dw-mshc' is not one of ['rockchip,px30-dw-mshc', 'rockchip,rk1808-dw-mshc', 'rockchip,rk3036-dw-mshc', 'rockchip,rk3128-dw-mshc', 'rockchip,rk3228-dw-mshc', 'rockchip,rk3308-dw-mshc', 'rockchip,rk3328-dw-mshc', 'rockchip,rk3368-dw-mshc', 'rockchip,rk3399-dw-mshc', 'rockchip,rk3528-dw-mshc', 'rockchip,rk3562-dw-mshc', 'rockchip,rk3568-dw-mshc', 'rockchip,rk3588-dw-mshc', 'rockchip,rv1108-dw-mshc', 'rockchip,rv1126-dw-mshc']
from schema $id: http://devicetree.org/schemas/mmc/rockchip-dw-mshc.yaml#
arch/arm64/boot/dts/rockchip/rk3576-armsom-sige5.dtb: mmc@2a320000 (rockchip,rk3576-dw-mshc): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3576-dw-mshc', 'rockchip,rk3288-dw-mshc'] is too long
'rockchip,rk2928-dw-mshc' was expected
'rockchip,rk3288-dw-mshc' was expected
'rockchip,rk3576-dw-mshc' is not one of ['rockchip,px30-dw-mshc', 'rockchip,rk1808-dw-mshc', 'rockchip,rk3036-dw-mshc', 'rockchip,rk3128-dw-mshc', 'rockchip,rk3228-dw-mshc', 'rockchip,rk3308-dw-mshc', 'rockchip,rk3328-dw-mshc', 'rockchip,rk3368-dw-mshc', 'rockchip,rk3399-dw-mshc', 'rockchip,rk3528-dw-mshc', 'rockchip,rk3562-dw-mshc', 'rockchip,rk3568-dw-mshc', 'rockchip,rk3588-dw-mshc', 'rockchip,rv1108-dw-mshc', 'rockchip,rv1126-dw-mshc']
from schema $id: http://devicetree.org/schemas/mmc/rockchip-dw-mshc.yaml#
arch/arm64/boot/dts/rockchip/rk3576-armsom-sige5.dtb: mmc@2a320000 (rockchip,rk3576-dw-mshc): Unevaluated properties are not allowed ('compatible' was unexpected)
from schema $id: http://devicetree.org/schemas/mmc/rockchip-dw-mshc.yaml#
arch/arm64/boot/dts/rockchip/rk3576-evb1-v10.dtb: mmc@2a320000 (rockchip,rk3576-dw-mshc): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3576-dw-mshc', 'rockchip,rk3288-dw-mshc'] is too long
'rockchip,rk2928-dw-mshc' was expected
'rockchip,rk3288-dw-mshc' was expected
'rockchip,rk3576-dw-mshc' is not one of ['rockchip,px30-dw-mshc', 'rockchip,rk1808-dw-mshc', 'rockchip,rk3036-dw-mshc', 'rockchip,rk3128-dw-mshc', 'rockchip,rk3228-dw-mshc', 'rockchip,rk3308-dw-mshc', 'rockchip,rk3328-dw-mshc', 'rockchip,rk3368-dw-mshc', 'rockchip,rk3399-dw-mshc', 'rockchip,rk3528-dw-mshc', 'rockchip,rk3562-dw-mshc', 'rockchip,rk3568-dw-mshc', 'rockchip,rk3588-dw-mshc', 'rockchip,rv1108-dw-mshc', 'rockchip,rv1126-dw-mshc']
from schema $id: http://devicetree.org/schemas/mmc/rockchip-dw-mshc.yaml#
arch/arm64/boot/dts/rockchip/rk3576-rock-4d.dtb: mmc@2a320000 (rockchip,rk3576-dw-mshc): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3576-dw-mshc', 'rockchip,rk3288-dw-mshc'] is too long
'rockchip,rk2928-dw-mshc' was expected
'rockchip,rk3288-dw-mshc' was expected
'rockchip,rk3576-dw-mshc' is not one of ['rockchip,px30-dw-mshc', 'rockchip,rk1808-dw-mshc', 'rockchip,rk3036-dw-mshc', 'rockchip,rk3128-dw-mshc', 'rockchip,rk3228-dw-mshc', 'rockchip,rk3308-dw-mshc', 'rockchip,rk3328-dw-mshc', 'rockchip,rk3368-dw-mshc', 'rockchip,rk3399-dw-mshc', 'rockchip,rk3528-dw-mshc', 'rockchip,rk3562-dw-mshc', 'rockchip,rk3568-dw-mshc', 'rockchip,rk3588-dw-mshc', 'rockchip,rv1108-dw-mshc', 'rockchip,rv1126-dw-mshc']
from schema $id: http://devicetree.org/schemas/mmc/rockchip-dw-mshc.yaml#
^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [PATCH 0/4] arm64: dts: rockchip: enable further peripherals on ArmSoM Sige5
2025-06-04 13:58 ` [PATCH 0/4] arm64: dts: rockchip: enable further peripherals " Rob Herring (Arm)
@ 2025-06-04 14:15 ` Alexey Charkov
0 siblings, 0 replies; 44+ messages in thread
From: Alexey Charkov @ 2025-06-04 14:15 UTC (permalink / raw)
To: Rob Herring (Arm)
Cc: linux-kernel, Conor Dooley, linux-arm-kernel, Krzysztof Kozlowski,
Heiko Stuebner, linux-rockchip, devicetree
On Wed, Jun 4, 2025 at 5:58 PM Rob Herring (Arm) <robh@kernel.org> wrote:
>
>
> On Tue, 03 Jun 2025 21:01:12 +0400, Alexey Charkov wrote:
> > Add support for the two USB type A ports, link up the CPU regulators for
> > DVFS, enable WiFi and Bluetooth.
> >
> > The bluetooth part might warrant some discussion and thoughts from the
> > list, given that it's connected over UART and thus not discoverable. At
> > the same time, there are two revisions of the board which have different
> > Bluetooth chips soldered on: Realtek based on v1.1 and Broadcom based on
> > v1.2. I'm not sure if there is any way to determine board version from
> > software. Mine is v1.2, so the respective patch deals with the Broadcom
> > case only, but maybe it's better to move it into a .dtso and thus kick
> > the can down the road (i.e. make the user deal with board identification
> > and loading of the right overlay)? Thoughts welcome.
> >
> > Best regards,
> > Alexey
> >
> > Signed-off-by: Alexey Charkov <alchark@gmail.com>
> > ---
> > Alexey Charkov (4):
> > arm64: dts: rockchip: list all CPU supplies on ArmSoM Sige5
> > arm64: dts: rockchip: enable USB A ports on ArmSoM Sige5
> > arm64: dts: rockchip: enable wifi on ArmSoM Sige5
> > arm64: dts: rockchip: enable bluetooth on ArmSoM Sige5
> >
> > .../boot/dts/rockchip/rk3576-armsom-sige5.dts | 135 +++++++++++++++++++++
> > arch/arm64/boot/dts/rockchip/rk3576.dtsi | 16 +++
> > 2 files changed, 151 insertions(+)
> > ---
> > base-commit: 546b1c9e93c2bb8cf5ed24e0be1c86bb089b3253
> > change-id: 20250602-sige5-updates-a162b501a1b1
> >
> > Best regards,
> > --
> > Alexey Charkov <alchark@gmail.com>
> >
> >
> >
>
>
> My bot found new DTB warnings on the .dts files added or changed in this
> series.
>
> Some warnings may be from an existing SoC .dtsi. Or perhaps the warnings
> are fixed by another series. Ultimately, it is up to the platform
> maintainer whether these warnings are acceptable or not. No need to reply
> unless the platform maintainer has comments.
>
> If you already ran DT checks and didn't see these error(s), then
> make sure dt-schema is up to date:
>
> pip3 install dtschema --upgrade
>
>
> This patch series was applied (using b4) to base:
> Base: using specified base-commit 546b1c9e93c2bb8cf5ed24e0be1c86bb089b3253
>
> If this is not the correct base, please add 'base-commit' tag
> (or use b4 which does this automatically)
>
> New warnings running 'make CHECK_DTBS=y for arch/arm64/boot/dts/rockchip/' for 20250603-sige5-updates-v1-0-717e8ce4ab77@gmail.com:
>
> arch/arm64/boot/dts/rockchip/rk3576-roc-pc.dtb: mmc@2a320000 (rockchip,rk3576-dw-mshc): compatible: 'oneOf' conditional failed, one must be fixed:
> ['rockchip,rk3576-dw-mshc', 'rockchip,rk3288-dw-mshc'] is too long
> 'rockchip,rk2928-dw-mshc' was expected
> 'rockchip,rk3288-dw-mshc' was expected
> 'rockchip,rk3576-dw-mshc' is not one of ['rockchip,px30-dw-mshc', 'rockchip,rk1808-dw-mshc', 'rockchip,rk3036-dw-mshc', 'rockchip,rk3128-dw-mshc', 'rockchip,rk3228-dw-mshc', 'rockchip,rk3308-dw-mshc', 'rockchip,rk3328-dw-mshc', 'rockchip,rk3368-dw-mshc', 'rockchip,rk3399-dw-mshc', 'rockchip,rk3528-dw-mshc', 'rockchip,rk3562-dw-mshc', 'rockchip,rk3568-dw-mshc', 'rockchip,rk3588-dw-mshc', 'rockchip,rv1108-dw-mshc', 'rockchip,rv1126-dw-mshc']
> from schema $id: http://devicetree.org/schemas/mmc/rockchip-dw-mshc.yaml#
> arch/arm64/boot/dts/rockchip/rk3576-armsom-sige5.dtb: mmc@2a320000 (rockchip,rk3576-dw-mshc): compatible: 'oneOf' conditional failed, one must be fixed:
> ['rockchip,rk3576-dw-mshc', 'rockchip,rk3288-dw-mshc'] is too long
Should be just rockchip,rk3576-dw-mshc.
Thanks bot, and sorry for the noise - missed this one.
Best regards,
Alexey
^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [PATCH 1/4] arm64: dts: rockchip: list all CPU supplies on ArmSoM Sige5
2025-06-03 17:01 ` [PATCH 1/4] arm64: dts: rockchip: list all CPU supplies " Alexey Charkov
@ 2025-06-04 18:38 ` Nicolas Frattaroli
2025-06-04 19:12 ` Alexey Charkov
2025-06-05 11:17 ` Diederik de Haas
1 sibling, 1 reply; 44+ messages in thread
From: Nicolas Frattaroli @ 2025-06-04 18:38 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Heiko Stuebner,
Alexey Charkov
Cc: devicetree, linux-arm-kernel, linux-rockchip, linux-kernel,
Alexey Charkov
On Tuesday, 3 June 2025 19:01:13 Central European Summer Time Alexey Charkov wrote:
> List both CPU supply regulators which drive the little and big CPU
> clusters, respectively, so that cpufreq can pick them up.
>
> Signed-off-by: Alexey Charkov <alchark@gmail.com>
> ---
> .../boot/dts/rockchip/rk3576-armsom-sige5.dts | 28 ++++++++++++++++++++++
> 1 file changed, 28 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/rockchip/rk3576-armsom-sige5.dts b/arch/arm64/boot/dts/rockchip/rk3576-armsom-sige5.dts
> index b09e789c75c47fec7cf7e9810ab0dcca32d9404a..d9c129be55a0d997e04e6d677cdc98fb50353418 100644
> --- a/arch/arm64/boot/dts/rockchip/rk3576-armsom-sige5.dts
> +++ b/arch/arm64/boot/dts/rockchip/rk3576-armsom-sige5.dts
> @@ -207,6 +207,22 @@ vcc_3v3_ufs_s0: regulator-vcc-ufs-s0 {
> };
> };
>
> +&cpu_b0 {
> + cpu-supply = <&vdd_cpu_big_s0>;
> +};
> +
> +&cpu_b1 {
> + cpu-supply = <&vdd_cpu_big_s0>;
> +};
> +
> +&cpu_b2 {
> + cpu-supply = <&vdd_cpu_big_s0>;
> +};
> +
> +&cpu_b3 {
> + cpu-supply = <&vdd_cpu_big_s0>;
> +};
> +
> &combphy0_ps {
> status = "okay";
> };
> @@ -215,6 +231,18 @@ &cpu_l0 {
> cpu-supply = <&vdd_cpu_lit_s0>;
> };
>
> +&cpu_l1 {
> + cpu-supply = <&vdd_cpu_lit_s0>;
> +};
> +
> +&cpu_l2 {
> + cpu-supply = <&vdd_cpu_lit_s0>;
> +};
> +
> +&cpu_l3 {
> + cpu-supply = <&vdd_cpu_lit_s0>;
> +};
> +
> &gmac0 {
> phy-mode = "rgmii-id";
> clock_in_out = "output";
>
>
Reviewed-by: Nicolas Frattaroli <nicolas.frattaroli@collabora.com>
Tested-by: Nicolas Frattaroli <nicolas.frattaroli@collabora.com>
> so that cpufreq can pick them up.
Fwiw, even without this patch they're picked up by cpufreq-dt for me:
user@trixie:~$ sudo cpupower frequency-info
analyzing CPU 5:
driver: cpufreq-dt
CPUs which run at the same hardware frequency: 4 5 6 7
CPUs which need to have their frequency coordinated by software: 4 5 6 7
maximum transition latency: 40.0 us
hardware limits: 408 MHz - 2.30 GHz
available frequency steps: 408 MHz, 600 MHz, 816 MHz, 1.01 GHz, 1.20 GHz, 1.42 GHz, 1.61 GHz, 1.80 GHz, 2.02 GHz, 2.21 GHz, 2.30 GHz
available cpufreq governors: ondemand userspace performance schedutil
current policy: frequency should be within 408 MHz and 2.30 GHz.
The governor "schedutil" may decide which speed to use
within this range.
current CPU frequency: 1.61 GHz (asserted by call to hardware)
user@trixie:~$ uname -a
Linux trixie 6.15.0-11173-g546b1c9e93c2 #2 SMP PREEMPT Wed Jun 4 20:32:52 CEST 2025 aarch64 GNU/Linux
this is more correct though of course.
Kind regards,
Nicolas Frattaroli
^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [PATCH 3/4] arm64: dts: rockchip: enable wifi on ArmSoM Sige5
2025-06-03 17:01 ` [PATCH 3/4] arm64: dts: rockchip: enable wifi " Alexey Charkov
@ 2025-06-04 19:01 ` Nicolas Frattaroli
2025-06-04 19:48 ` Alexey Charkov
2025-06-05 2:43 ` Jimmy Hon
1 sibling, 1 reply; 44+ messages in thread
From: Nicolas Frattaroli @ 2025-06-04 19:01 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Heiko Stuebner,
Alexey Charkov
Cc: devicetree, linux-arm-kernel, linux-rockchip, linux-kernel,
Alexey Charkov
On Tuesday, 3 June 2025 19:01:15 Central European Summer Time Alexey Charkov wrote:
> ArmSoM Sige5 uses a soldered-on SDIO connected WiFi module. Namely,
> board v1.1 uses a Realtek based BL-M8852BS2, while v1.2 uses a Broadcom
> based BW3752-50B1.
Okay, so there's two board revisions, which makes this patch and the
following that adds bluetooth a problem. This patch here doesn't
seem to actually add the SDIO Wi-Fi module node where it'll differ,
so skirts around the issue AFAIU. It might also be that it's not
needed for you and I just don't notice because I have v1.1 where the
SDIO driver for that module doesn't exist yet iirc.
But what we should think about is first doing
- probably add a new compatible for armsom,sige5-v1.2
- git mv arch/arm64/boot/dts/rockchip/rk3576-armsom-sige5.dts \
arch/arm64/boot/dts/rockchip/rk3576-armsom-sige5.dtsi
- commit here like Sebastian Reichel had to do for [1]
- create a new arch/arm64/boot/dts/rockchip/rk3576-armsom-sige5.dts
that includes the dtsi and moves the model and compatible property
there. Make sure the model includes v1.1 in the name, compatible
should remain the same
- commit here that will be a squash commit like Sebastian Reichel
had to do in [2]
- create a new arch/arm64/boot/dts/rockchip/rk3576-armsom-sige5-v1.2.dts,
could be adding the Wi-Fi node here to cut down on how many patches we
do. I assume you only have the v1.2 board and can't test the older Wi-Fi,
which is fine.
compatible should probably be something like
compatible = "armsom,sige5-v1.2", "armsom,sige5", "rockchip,rk3576";
Don't forget to change the model property as well.
I know this will be a royal PITA, especially considering they'll likely
never produce v1.1 again and it now hogs the name, but keeping the
current dts as 1.1 may be the best way forward, as it keeps compat (though
the Wi-Fi changes won't affect anything already in there) and will stop
people from accidentally picking the higher number better DTS like what
happens with rockpro64 all the time where the non-numbered DTS is 2.1 and
the numbered one is 2.0 and people keep picking 2.0.
>
> Add required device tree nodes in the SoC .dtsi for the SDIO controller
> and pinctrl / clock wiring in the board .dts for the module itself.
>
> Signed-off-by: Alexey Charkov <alchark@gmail.com>
> ---
> .../boot/dts/rockchip/rk3576-armsom-sige5.dts | 36 ++++++++++++++++++++++
> arch/arm64/boot/dts/rockchip/rk3576.dtsi | 16 ++++++++++
> 2 files changed, 52 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/rockchip/rk3576-armsom-sige5.dts b/arch/arm64/boot/dts/rockchip/rk3576-armsom-sige5.dts
> index 7ce1fb1380b0863c902fdd9cbc7454ee6011cf92..dcd033859398312f7693bebb7f080ee4f2ecaa32 100644
> --- a/arch/arm64/boot/dts/rockchip/rk3576-armsom-sige5.dts
> +++ b/arch/arm64/boot/dts/rockchip/rk3576-armsom-sige5.dts
> @@ -219,6 +219,15 @@ vcc_5v0_host: regulator-vcc-5v0-host {
> pinctrl-names = "default";
> pinctrl-0 = <&usb_host_pwren>;
> };
> +
> + sdio_pwrseq: sdio-pwrseq {
> + compatible = "mmc-pwrseq-simple";
> + clocks = <&hym8563>;
> + clock-names = "ext_clock";
> + pinctrl-names = "default";
> + pinctrl-0 = <&wifi_reg_on>;
> + reset-gpios = <&gpio1 RK_PC6 GPIO_ACTIVE_LOW>;
> + };
> };
>
> &combphy1_psu {
> @@ -781,6 +790,16 @@ usb_host_pwren: usb-host-pwren {
> rockchip,pins = <4 RK_PA4 RK_FUNC_GPIO &pcfg_pull_none>;
> };
> };
> +
> + wireless-wlan {
> + wifi_wake_host: wifi-wake-host {
> + rockchip,pins = <0 RK_PB0 RK_FUNC_GPIO &pcfg_pull_down>;
> + };
> +
> + wifi_reg_on: wifi-reg-on {
> + rockchip,pins = <1 RK_PC6 RK_FUNC_GPIO &pcfg_pull_none>;
> + };
> + };
> };
>
> &sai1 {
> @@ -808,6 +827,23 @@ &sdhci {
> status = "okay";
> };
>
> +&sdio {
> + bus-width = <4>;
> + cap-sdio-irq;
> + disable-wp;
> + keep-power-in-suspend;
> + mmc-pwrseq = <&sdio_pwrseq>;
> + no-sd;
> + no-mmc;
> + non-removable;
> + sd-uhs-sdr50;
> + sd-uhs-sdr104;
> + vmmc-supply = <&vcc_3v3_s3>;
> + vqmmc-supply = <&vcc_1v8_s3>;
> + wakeup-source;
> + status = "okay";
> +};
> +
> &sdmmc {
> bus-width = <4>;
> cap-mmc-highspeed;
> diff --git a/arch/arm64/boot/dts/rockchip/rk3576.dtsi b/arch/arm64/boot/dts/rockchip/rk3576.dtsi
Okay, I think adding the sdio node to the SoC dtsi should be a separate
patch before this one.
> index 1086482f04792325dc4c22fb8ceeb27eef59afe4..a09582470bb7f654b711308da1e51fa8571ca1e8 100644
> --- a/arch/arm64/boot/dts/rockchip/rk3576.dtsi
> +++ b/arch/arm64/boot/dts/rockchip/rk3576.dtsi
> @@ -1695,6 +1695,22 @@ sdmmc: mmc@2a310000 {
> status = "disabled";
> };
>
> + sdio: mmc@2a320000 {
> + compatible = "rockchip,rk3576-dw-mshc", "rockchip,rk3288-dw-mshc";
> + reg = <0x0 0x2a320000 0x0 0x4000>;
> + clocks = <&cru HCLK_SDIO>, <&cru CCLK_SRC_SDIO>;
> + clock-names = "biu", "ciu";
> + fifo-depth = <0x100>;
> + interrupts = <GIC_SPI 252 IRQ_TYPE_LEVEL_HIGH>;
> + max-frequency = <200000000>;
> + pinctrl-0 = <&sdmmc1m0_clk &sdmmc1m0_cmd &sdmmc1m0_bus4>;
> + pinctrl-names = "default";
> + power-domains = <&power RK3576_PD_SDGMAC>;
> + resets = <&cru SRST_H_SDIO>;
> + reset-names = "reset";
> + status = "disabled";
> + };
> +
> sdhci: mmc@2a330000 {
> compatible = "rockchip,rk3576-dwcmshc", "rockchip,rk3588-dwcmshc";
> reg = <0x0 0x2a330000 0x0 0x10000>;
>
>
So in conclusion:
- bindings patch adding v1.2 compatible
- SoC dtsi patch for the sdio node
- git mv patch
- rk3576-armsom-sige5.dts patch, ask maintainer to squash it into the
previous patch, make it obvious by giving it the same subject or something
- rk3576-armsom-sige5-v1.2.dts patch
Sorry to drop all this on you, it's a little unpleasant and in-the-woods
with regards to preparing a patch series. Basically, the reason why I've
held off on this for the moment is that I don't have a v1.2 board and my
v1.1 board's Wi-Fi module doesn't seem to be supported (yet).
Kind regards,
Nicolas Frattaroli
[1]: https://lore.kernel.org/linux-rockchip/20250508-rock5bp-for-upstream-v2-1-677033cc1ac2@kernel.org/
[2]: https://lore.kernel.org/linux-rockchip/20250508-rock5bp-for-upstream-v2-2-677033cc1ac2@kernel.org/
^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [PATCH 1/4] arm64: dts: rockchip: list all CPU supplies on ArmSoM Sige5
2025-06-04 18:38 ` Nicolas Frattaroli
@ 2025-06-04 19:12 ` Alexey Charkov
2025-06-04 19:23 ` Nicolas Frattaroli
2025-06-05 13:22 ` Piotr Oniszczuk
0 siblings, 2 replies; 44+ messages in thread
From: Alexey Charkov @ 2025-06-04 19:12 UTC (permalink / raw)
To: Nicolas Frattaroli
Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Heiko Stuebner,
devicetree, linux-arm-kernel, linux-rockchip, linux-kernel
On Wed, Jun 4, 2025 at 10:38 PM Nicolas Frattaroli
<nicolas.frattaroli@collabora.com> wrote:
>
> On Tuesday, 3 June 2025 19:01:13 Central European Summer Time Alexey Charkov wrote:
> > List both CPU supply regulators which drive the little and big CPU
> > clusters, respectively, so that cpufreq can pick them up.
> >
> > Signed-off-by: Alexey Charkov <alchark@gmail.com>
> > ---
> > .../boot/dts/rockchip/rk3576-armsom-sige5.dts | 28 ++++++++++++++++++++++
> > 1 file changed, 28 insertions(+)
> >
> > diff --git a/arch/arm64/boot/dts/rockchip/rk3576-armsom-sige5.dts b/arch/arm64/boot/dts/rockchip/rk3576-armsom-sige5.dts
> > index b09e789c75c47fec7cf7e9810ab0dcca32d9404a..d9c129be55a0d997e04e6d677cdc98fb50353418 100644
> > --- a/arch/arm64/boot/dts/rockchip/rk3576-armsom-sige5.dts
> > +++ b/arch/arm64/boot/dts/rockchip/rk3576-armsom-sige5.dts
> > @@ -207,6 +207,22 @@ vcc_3v3_ufs_s0: regulator-vcc-ufs-s0 {
> > };
> > };
> >
> > +&cpu_b0 {
> > + cpu-supply = <&vdd_cpu_big_s0>;
> > +};
> > +
> > +&cpu_b1 {
> > + cpu-supply = <&vdd_cpu_big_s0>;
> > +};
> > +
> > +&cpu_b2 {
> > + cpu-supply = <&vdd_cpu_big_s0>;
> > +};
> > +
> > +&cpu_b3 {
> > + cpu-supply = <&vdd_cpu_big_s0>;
> > +};
> > +
> > &combphy0_ps {
> > status = "okay";
> > };
> > @@ -215,6 +231,18 @@ &cpu_l0 {
> > cpu-supply = <&vdd_cpu_lit_s0>;
> > };
> >
> > +&cpu_l1 {
> > + cpu-supply = <&vdd_cpu_lit_s0>;
> > +};
> > +
> > +&cpu_l2 {
> > + cpu-supply = <&vdd_cpu_lit_s0>;
> > +};
> > +
> > +&cpu_l3 {
> > + cpu-supply = <&vdd_cpu_lit_s0>;
> > +};
> > +
> > &gmac0 {
> > phy-mode = "rgmii-id";
> > clock_in_out = "output";
> >
> >
>
> Reviewed-by: Nicolas Frattaroli <nicolas.frattaroli@collabora.com>
> Tested-by: Nicolas Frattaroli <nicolas.frattaroli@collabora.com>
>
> > so that cpufreq can pick them up.
>
> Fwiw, even without this patch they're picked up by cpufreq-dt for me:
>
> user@trixie:~$ sudo cpupower frequency-info
> analyzing CPU 5:
> driver: cpufreq-dt
> CPUs which run at the same hardware frequency: 4 5 6 7
> CPUs which need to have their frequency coordinated by software: 4 5 6 7
> maximum transition latency: 40.0 us
> hardware limits: 408 MHz - 2.30 GHz
> available frequency steps: 408 MHz, 600 MHz, 816 MHz, 1.01 GHz, 1.20 GHz, 1.42 GHz, 1.61 GHz, 1.80 GHz, 2.02 GHz, 2.21 GHz, 2.30 GHz
> available cpufreq governors: ondemand userspace performance schedutil
> current policy: frequency should be within 408 MHz and 2.30 GHz.
> The governor "schedutil" may decide which speed to use
> within this range.
> current CPU frequency: 1.61 GHz (asserted by call to hardware)
> user@trixie:~$ uname -a
> Linux trixie 6.15.0-11173-g546b1c9e93c2 #2 SMP PREEMPT Wed Jun 4 20:32:52 CEST 2025 aarch64 GNU/Linux
Frequencies are fine, but I don't think the more power hungry big CPU
cluster gets any voltage scaling without it. Once I try to load the
system enough that the governor decides to bump the big cluster
frequency up, the regulator stays at 850000 microvolts, causing random
reboots when the whole cluster starts starving. With the patch,
voltage oscillates between 700000-737000 microvolts in idle and jumps
up to 950000 under load, and the system seems stable.
Here's what I used to monitor the voltage (there must be a better way
to do it, but it works):
sige5 ~ # watch cat `grep -r . /sys/class/regulator/*/name | grep
vdd_cpu_big_s0 | sed -e 's/name.*//'`/microvolts
And in another terminal:
sige5 ~ # stress-ng -c8
This might warrant a note in the commit message I guess :)
Thanks for your review and testing!
Best regards,
Alexey
^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [PATCH 1/4] arm64: dts: rockchip: list all CPU supplies on ArmSoM Sige5
2025-06-04 19:12 ` Alexey Charkov
@ 2025-06-04 19:23 ` Nicolas Frattaroli
2025-06-04 19:54 ` Alexey Charkov
2025-06-05 13:22 ` Piotr Oniszczuk
1 sibling, 1 reply; 44+ messages in thread
From: Nicolas Frattaroli @ 2025-06-04 19:23 UTC (permalink / raw)
To: Alexey Charkov
Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Heiko Stuebner,
devicetree, linux-arm-kernel, linux-rockchip, linux-kernel
On Wednesday, 4 June 2025 21:12:35 Central European Summer Time Alexey Charkov wrote:
> On Wed, Jun 4, 2025 at 10:38 PM Nicolas Frattaroli
> <nicolas.frattaroli@collabora.com> wrote:
> >
> > On Tuesday, 3 June 2025 19:01:13 Central European Summer Time Alexey Charkov wrote:
> > > List both CPU supply regulators which drive the little and big CPU
> > > clusters, respectively, so that cpufreq can pick them up.
> > >
> > > Signed-off-by: Alexey Charkov <alchark@gmail.com>
> > > ---
> > > .../boot/dts/rockchip/rk3576-armsom-sige5.dts | 28 ++++++++++++++++++++++
> > > 1 file changed, 28 insertions(+)
> > >
> > > diff --git a/arch/arm64/boot/dts/rockchip/rk3576-armsom-sige5.dts b/arch/arm64/boot/dts/rockchip/rk3576-armsom-sige5.dts
> > > index b09e789c75c47fec7cf7e9810ab0dcca32d9404a..d9c129be55a0d997e04e6d677cdc98fb50353418 100644
> > > --- a/arch/arm64/boot/dts/rockchip/rk3576-armsom-sige5.dts
> > > +++ b/arch/arm64/boot/dts/rockchip/rk3576-armsom-sige5.dts
> > > @@ -207,6 +207,22 @@ vcc_3v3_ufs_s0: regulator-vcc-ufs-s0 {
> > > };
> > > };
> > >
> > > +&cpu_b0 {
> > > + cpu-supply = <&vdd_cpu_big_s0>;
> > > +};
> > > +
> > > +&cpu_b1 {
> > > + cpu-supply = <&vdd_cpu_big_s0>;
> > > +};
> > > +
> > > +&cpu_b2 {
> > > + cpu-supply = <&vdd_cpu_big_s0>;
> > > +};
> > > +
> > > +&cpu_b3 {
> > > + cpu-supply = <&vdd_cpu_big_s0>;
> > > +};
> > > +
> > > &combphy0_ps {
> > > status = "okay";
> > > };
> > > @@ -215,6 +231,18 @@ &cpu_l0 {
> > > cpu-supply = <&vdd_cpu_lit_s0>;
> > > };
> > >
> > > +&cpu_l1 {
> > > + cpu-supply = <&vdd_cpu_lit_s0>;
> > > +};
> > > +
> > > +&cpu_l2 {
> > > + cpu-supply = <&vdd_cpu_lit_s0>;
> > > +};
> > > +
> > > +&cpu_l3 {
> > > + cpu-supply = <&vdd_cpu_lit_s0>;
> > > +};
> > > +
> > > &gmac0 {
> > > phy-mode = "rgmii-id";
> > > clock_in_out = "output";
> > >
> > >
> >
> > Reviewed-by: Nicolas Frattaroli <nicolas.frattaroli@collabora.com>
> > Tested-by: Nicolas Frattaroli <nicolas.frattaroli@collabora.com>
> >
> > > so that cpufreq can pick them up.
> >
> > Fwiw, even without this patch they're picked up by cpufreq-dt for me:
> >
> > user@trixie:~$ sudo cpupower frequency-info
> > analyzing CPU 5:
> > driver: cpufreq-dt
> > CPUs which run at the same hardware frequency: 4 5 6 7
> > CPUs which need to have their frequency coordinated by software: 4 5 6 7
> > maximum transition latency: 40.0 us
> > hardware limits: 408 MHz - 2.30 GHz
> > available frequency steps: 408 MHz, 600 MHz, 816 MHz, 1.01 GHz, 1.20 GHz, 1.42 GHz, 1.61 GHz, 1.80 GHz, 2.02 GHz, 2.21 GHz, 2.30 GHz
> > available cpufreq governors: ondemand userspace performance schedutil
> > current policy: frequency should be within 408 MHz and 2.30 GHz.
> > The governor "schedutil" may decide which speed to use
> > within this range.
> > current CPU frequency: 1.61 GHz (asserted by call to hardware)
> > user@trixie:~$ uname -a
> > Linux trixie 6.15.0-11173-g546b1c9e93c2 #2 SMP PREEMPT Wed Jun 4 20:32:52 CEST 2025 aarch64 GNU/Linux
>
> Frequencies are fine, but I don't think the more power hungry big CPU
> cluster gets any voltage scaling without it. Once I try to load the
> system enough that the governor decides to bump the big cluster
> frequency up, the regulator stays at 850000 microvolts, causing random
> reboots when the whole cluster starts starving. With the patch,
> voltage oscillates between 700000-737000 microvolts in idle and jumps
> up to 950000 under load, and the system seems stable.
Okay, that sounds pretty serious and in this case you should add the
following tag at the end of the commit message, usually as the first
thing after the line break:
Fixes: 40f742b07ab2 ("arm64: dts: rockchip: Add rk3576-armsom-sige5 board")
That way, our stable kernel robot overlords will pick it up and
backport it to the kernels that already contain the mentioned commit.
>
> Here's what I used to monitor the voltage (there must be a better way
> to do it, but it works):
> sige5 ~ # watch cat `grep -r . /sys/class/regulator/*/name | grep
> vdd_cpu_big_s0 | sed -e 's/name.*//'`/microvolts
>
> And in another terminal:
> sige5 ~ # stress-ng -c8
>
> This might warrant a note in the commit message I guess :)
Yes, definitely mention stuff like this in the commit message.
>
> Thanks for your review and testing!
>
> Best regards,
> Alexey
>
Kind regards,
Nicolas Frattaroli
^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [PATCH 3/4] arm64: dts: rockchip: enable wifi on ArmSoM Sige5
2025-06-04 19:01 ` Nicolas Frattaroli
@ 2025-06-04 19:48 ` Alexey Charkov
0 siblings, 0 replies; 44+ messages in thread
From: Alexey Charkov @ 2025-06-04 19:48 UTC (permalink / raw)
To: Nicolas Frattaroli
Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Heiko Stuebner,
devicetree, linux-arm-kernel, linux-rockchip, linux-kernel
On Wed, Jun 4, 2025 at 11:01 PM Nicolas Frattaroli
<nicolas.frattaroli@collabora.com> wrote:
>
> On Tuesday, 3 June 2025 19:01:15 Central European Summer Time Alexey Charkov wrote:
> > ArmSoM Sige5 uses a soldered-on SDIO connected WiFi module. Namely,
> > board v1.1 uses a Realtek based BL-M8852BS2, while v1.2 uses a Broadcom
> > based BW3752-50B1.
>
> Okay, so there's two board revisions, which makes this patch and the
> following that adds bluetooth a problem. This patch here doesn't
> seem to actually add the SDIO Wi-Fi module node where it'll differ,
> so skirts around the issue AFAIU. It might also be that it's not
> needed for you and I just don't notice because I have v1.1 where the
> SDIO driver for that module doesn't exist yet iirc.
The WiFi module actually probes just fine without explicitly listing
it in the device tree, because SDIO is enumerable (unlike
UART/serdev). Pin configs and the lpo clock are pulled in by the
mmc-pwrseq part, and with that it just works as long as the drivers
are in place (which is the case with the Broadcom module, but perhaps
not yet with the Realtek one).
I haven't tested the wake-host functionality, given that there is no
suspend support anyway (no Rockchip SiP communication support in
mainline, and nothing to ask ATF to suspend the main CPU like
downstream rockchip_pm_config.c does). Guess it doesn't work, because
nothing binds the respective GPIO to the WiFi driver right now. But I
do get a WiFi connection without it.
> But what we should think about is first doing
> - probably add a new compatible for armsom,sige5-v1.2
> - git mv arch/arm64/boot/dts/rockchip/rk3576-armsom-sige5.dts \
> arch/arm64/boot/dts/rockchip/rk3576-armsom-sige5.dtsi
> - commit here like Sebastian Reichel had to do for [1]
> - create a new arch/arm64/boot/dts/rockchip/rk3576-armsom-sige5.dts
> that includes the dtsi and moves the model and compatible property
> there. Make sure the model includes v1.1 in the name, compatible
> should remain the same
> - commit here that will be a squash commit like Sebastian Reichel
> had to do in [2]
I believe another way to do this is with --break-rewrites, as Dragan did in [1]
[1] https://lore.kernel.org/all/9ffedc0e2ca7f167d9d795b2a8f43cb9f56a653b.1717923308.git.dsimic@manjaro.org/
> - create a new arch/arm64/boot/dts/rockchip/rk3576-armsom-sige5-v1.2.dts,
> could be adding the Wi-Fi node here to cut down on how many patches we
> do. I assume you only have the v1.2 board and can't test the older Wi-Fi,
> which is fine.
> compatible should probably be something like
> compatible = "armsom,sige5-v1.2", "armsom,sige5", "rockchip,rk3576";
> Don't forget to change the model property as well.
Given that the user would have to manually feed an appropriate DTB for
their board to the bootloader, and given that the WiFi/BT module used
is the only difference between v1.1 vs. v1.2, this doesn't seem to be
much easier for users vs. applying a DTBO... But more churn in the
kernel just for that bluetooth function. With a DTBO we could keep the
same compatible and just move the Bluetooth node into an overlay.
Happy to go either way. Wonder what Heiko prefers?
> I know this will be a royal PITA, especially considering they'll likely
> never produce v1.1 again and it now hogs the name, but keeping the
> current dts as 1.1 may be the best way forward, as it keeps compat (though
> the Wi-Fi changes won't affect anything already in there) and will stop
> people from accidentally picking the higher number better DTS like what
> happens with rockpro64 all the time where the non-numbered DTS is 2.1 and
> the numbered one is 2.0 and people keep picking 2.0.
Quite a PITA indeed :)
> > Add required device tree nodes in the SoC .dtsi for the SDIO controller
> > and pinctrl / clock wiring in the board .dts for the module itself.
> >
> > Signed-off-by: Alexey Charkov <alchark@gmail.com>
> > ---
> > .../boot/dts/rockchip/rk3576-armsom-sige5.dts | 36 ++++++++++++++++++++++
> > arch/arm64/boot/dts/rockchip/rk3576.dtsi | 16 ++++++++++
> > 2 files changed, 52 insertions(+)
> >
> > diff --git a/arch/arm64/boot/dts/rockchip/rk3576-armsom-sige5.dts b/arch/arm64/boot/dts/rockchip/rk3576-armsom-sige5.dts
> > index 7ce1fb1380b0863c902fdd9cbc7454ee6011cf92..dcd033859398312f7693bebb7f080ee4f2ecaa32 100644
> > --- a/arch/arm64/boot/dts/rockchip/rk3576-armsom-sige5.dts
> > +++ b/arch/arm64/boot/dts/rockchip/rk3576-armsom-sige5.dts
> > @@ -219,6 +219,15 @@ vcc_5v0_host: regulator-vcc-5v0-host {
> > pinctrl-names = "default";
> > pinctrl-0 = <&usb_host_pwren>;
> > };
> > +
> > + sdio_pwrseq: sdio-pwrseq {
> > + compatible = "mmc-pwrseq-simple";
> > + clocks = <&hym8563>;
> > + clock-names = "ext_clock";
> > + pinctrl-names = "default";
> > + pinctrl-0 = <&wifi_reg_on>;
> > + reset-gpios = <&gpio1 RK_PC6 GPIO_ACTIVE_LOW>;
> > + };
> > };
> >
> > &combphy1_psu {
> > @@ -781,6 +790,16 @@ usb_host_pwren: usb-host-pwren {
> > rockchip,pins = <4 RK_PA4 RK_FUNC_GPIO &pcfg_pull_none>;
> > };
> > };
> > +
> > + wireless-wlan {
> > + wifi_wake_host: wifi-wake-host {
> > + rockchip,pins = <0 RK_PB0 RK_FUNC_GPIO &pcfg_pull_down>;
> > + };
> > +
> > + wifi_reg_on: wifi-reg-on {
> > + rockchip,pins = <1 RK_PC6 RK_FUNC_GPIO &pcfg_pull_none>;
> > + };
> > + };
> > };
> >
> > &sai1 {
> > @@ -808,6 +827,23 @@ &sdhci {
> > status = "okay";
> > };
> >
> > +&sdio {
> > + bus-width = <4>;
> > + cap-sdio-irq;
> > + disable-wp;
> > + keep-power-in-suspend;
> > + mmc-pwrseq = <&sdio_pwrseq>;
> > + no-sd;
> > + no-mmc;
> > + non-removable;
> > + sd-uhs-sdr50;
> > + sd-uhs-sdr104;
> > + vmmc-supply = <&vcc_3v3_s3>;
> > + vqmmc-supply = <&vcc_1v8_s3>;
> > + wakeup-source;
> > + status = "okay";
> > +};
> > +
> > &sdmmc {
> > bus-width = <4>;
> > cap-mmc-highspeed;
> > diff --git a/arch/arm64/boot/dts/rockchip/rk3576.dtsi b/arch/arm64/boot/dts/rockchip/rk3576.dtsi
>
> Okay, I think adding the sdio node to the SoC dtsi should be a separate
> patch before this one.
Fair enough, will split it out, thanks!
> > index 1086482f04792325dc4c22fb8ceeb27eef59afe4..a09582470bb7f654b711308da1e51fa8571ca1e8 100644
> > --- a/arch/arm64/boot/dts/rockchip/rk3576.dtsi
> > +++ b/arch/arm64/boot/dts/rockchip/rk3576.dtsi
> > @@ -1695,6 +1695,22 @@ sdmmc: mmc@2a310000 {
> > status = "disabled";
> > };
> >
> > + sdio: mmc@2a320000 {
> > + compatible = "rockchip,rk3576-dw-mshc", "rockchip,rk3288-dw-mshc";
> > + reg = <0x0 0x2a320000 0x0 0x4000>;
> > + clocks = <&cru HCLK_SDIO>, <&cru CCLK_SRC_SDIO>;
> > + clock-names = "biu", "ciu";
> > + fifo-depth = <0x100>;
> > + interrupts = <GIC_SPI 252 IRQ_TYPE_LEVEL_HIGH>;
> > + max-frequency = <200000000>;
> > + pinctrl-0 = <&sdmmc1m0_clk &sdmmc1m0_cmd &sdmmc1m0_bus4>;
> > + pinctrl-names = "default";
> > + power-domains = <&power RK3576_PD_SDGMAC>;
> > + resets = <&cru SRST_H_SDIO>;
> > + reset-names = "reset";
> > + status = "disabled";
> > + };
> > +
> > sdhci: mmc@2a330000 {
> > compatible = "rockchip,rk3576-dwcmshc", "rockchip,rk3588-dwcmshc";
> > reg = <0x0 0x2a330000 0x0 0x10000>;
> >
> >
>
> So in conclusion:
> - bindings patch adding v1.2 compatible
> - SoC dtsi patch for the sdio node
> - git mv patch
> - rk3576-armsom-sige5.dts patch, ask maintainer to squash it into the
> previous patch, make it obvious by giving it the same subject or something
> - rk3576-armsom-sige5-v1.2.dts patch
>
> Sorry to drop all this on you, it's a little unpleasant and in-the-woods
> with regards to preparing a patch series. Basically, the reason why I've
> held off on this for the moment is that I don't have a v1.2 board and my
> v1.1 board's Wi-Fi module doesn't seem to be supported (yet).
No worries, thanks for delving into all this stuff with me - much appreciated!
Best regards,
Alexey
^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [PATCH 1/4] arm64: dts: rockchip: list all CPU supplies on ArmSoM Sige5
2025-06-04 19:23 ` Nicolas Frattaroli
@ 2025-06-04 19:54 ` Alexey Charkov
0 siblings, 0 replies; 44+ messages in thread
From: Alexey Charkov @ 2025-06-04 19:54 UTC (permalink / raw)
To: Nicolas Frattaroli
Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Heiko Stuebner,
devicetree, linux-arm-kernel, linux-rockchip, linux-kernel
On Wed, Jun 4, 2025 at 11:23 PM Nicolas Frattaroli
<nicolas.frattaroli@collabora.com> wrote:
>
> On Wednesday, 4 June 2025 21:12:35 Central European Summer Time Alexey Charkov wrote:
> > On Wed, Jun 4, 2025 at 10:38 PM Nicolas Frattaroli
> > <nicolas.frattaroli@collabora.com> wrote:
> > >
> > > On Tuesday, 3 June 2025 19:01:13 Central European Summer Time Alexey Charkov wrote:
> > > > List both CPU supply regulators which drive the little and big CPU
> > > > clusters, respectively, so that cpufreq can pick them up.
> > > >
> > > > Signed-off-by: Alexey Charkov <alchark@gmail.com>
> > > > ---
> > > > .../boot/dts/rockchip/rk3576-armsom-sige5.dts | 28 ++++++++++++++++++++++
> > > > 1 file changed, 28 insertions(+)
> > > >
> > > > diff --git a/arch/arm64/boot/dts/rockchip/rk3576-armsom-sige5.dts b/arch/arm64/boot/dts/rockchip/rk3576-armsom-sige5.dts
> > > > index b09e789c75c47fec7cf7e9810ab0dcca32d9404a..d9c129be55a0d997e04e6d677cdc98fb50353418 100644
> > > > --- a/arch/arm64/boot/dts/rockchip/rk3576-armsom-sige5.dts
> > > > +++ b/arch/arm64/boot/dts/rockchip/rk3576-armsom-sige5.dts
> > > > @@ -207,6 +207,22 @@ vcc_3v3_ufs_s0: regulator-vcc-ufs-s0 {
> > > > };
> > > > };
> > > >
> > > > +&cpu_b0 {
> > > > + cpu-supply = <&vdd_cpu_big_s0>;
> > > > +};
> > > > +
> > > > +&cpu_b1 {
> > > > + cpu-supply = <&vdd_cpu_big_s0>;
> > > > +};
> > > > +
> > > > +&cpu_b2 {
> > > > + cpu-supply = <&vdd_cpu_big_s0>;
> > > > +};
> > > > +
> > > > +&cpu_b3 {
> > > > + cpu-supply = <&vdd_cpu_big_s0>;
> > > > +};
> > > > +
> > > > &combphy0_ps {
> > > > status = "okay";
> > > > };
> > > > @@ -215,6 +231,18 @@ &cpu_l0 {
> > > > cpu-supply = <&vdd_cpu_lit_s0>;
> > > > };
> > > >
> > > > +&cpu_l1 {
> > > > + cpu-supply = <&vdd_cpu_lit_s0>;
> > > > +};
> > > > +
> > > > +&cpu_l2 {
> > > > + cpu-supply = <&vdd_cpu_lit_s0>;
> > > > +};
> > > > +
> > > > +&cpu_l3 {
> > > > + cpu-supply = <&vdd_cpu_lit_s0>;
> > > > +};
> > > > +
> > > > &gmac0 {
> > > > phy-mode = "rgmii-id";
> > > > clock_in_out = "output";
> > > >
> > > >
> > >
> > > Reviewed-by: Nicolas Frattaroli <nicolas.frattaroli@collabora.com>
> > > Tested-by: Nicolas Frattaroli <nicolas.frattaroli@collabora.com>
> > >
> > > > so that cpufreq can pick them up.
> > >
> > > Fwiw, even without this patch they're picked up by cpufreq-dt for me:
> > >
> > > user@trixie:~$ sudo cpupower frequency-info
> > > analyzing CPU 5:
> > > driver: cpufreq-dt
> > > CPUs which run at the same hardware frequency: 4 5 6 7
> > > CPUs which need to have their frequency coordinated by software: 4 5 6 7
> > > maximum transition latency: 40.0 us
> > > hardware limits: 408 MHz - 2.30 GHz
> > > available frequency steps: 408 MHz, 600 MHz, 816 MHz, 1.01 GHz, 1.20 GHz, 1.42 GHz, 1.61 GHz, 1.80 GHz, 2.02 GHz, 2.21 GHz, 2.30 GHz
> > > available cpufreq governors: ondemand userspace performance schedutil
> > > current policy: frequency should be within 408 MHz and 2.30 GHz.
> > > The governor "schedutil" may decide which speed to use
> > > within this range.
> > > current CPU frequency: 1.61 GHz (asserted by call to hardware)
> > > user@trixie:~$ uname -a
> > > Linux trixie 6.15.0-11173-g546b1c9e93c2 #2 SMP PREEMPT Wed Jun 4 20:32:52 CEST 2025 aarch64 GNU/Linux
> >
> > Frequencies are fine, but I don't think the more power hungry big CPU
> > cluster gets any voltage scaling without it. Once I try to load the
> > system enough that the governor decides to bump the big cluster
> > frequency up, the regulator stays at 850000 microvolts, causing random
> > reboots when the whole cluster starts starving. With the patch,
> > voltage oscillates between 700000-737000 microvolts in idle and jumps
> > up to 950000 under load, and the system seems stable.
>
> Okay, that sounds pretty serious and in this case you should add the
> following tag at the end of the commit message, usually as the first
> thing after the line break:
>
> Fixes: 40f742b07ab2 ("arm64: dts: rockchip: Add rk3576-armsom-sige5 board")
>
> That way, our stable kernel robot overlords will pick it up and
> backport it to the kernels that already contain the mentioned commit.
Will do, thanks!
Best regards,
Alexey
^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [PATCH 3/4] arm64: dts: rockchip: enable wifi on ArmSoM Sige5
2025-06-03 17:01 ` [PATCH 3/4] arm64: dts: rockchip: enable wifi " Alexey Charkov
2025-06-04 19:01 ` Nicolas Frattaroli
@ 2025-06-05 2:43 ` Jimmy Hon
2025-06-05 6:32 ` Alexey Charkov
1 sibling, 1 reply; 44+ messages in thread
From: Jimmy Hon @ 2025-06-05 2:43 UTC (permalink / raw)
To: Alexey Charkov
Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Heiko Stuebner,
devicetree, linux-arm-kernel, linux-rockchip, linux-kernel
>
> +&sdio {
> + bus-width = <4>;
> + cap-sdio-irq;
> + disable-wp;
> + keep-power-in-suspend;
> + mmc-pwrseq = <&sdio_pwrseq>;
> + no-sd;
> + no-mmc;
> + non-removable;
> + sd-uhs-sdr50;
> + sd-uhs-sdr104;
> + vmmc-supply = <&vcc_3v3_s3>;
> + vqmmc-supply = <&vcc_1v8_s3>;
> + wakeup-source;
> + status = "okay";
> +};
When you enable the sdio node on your v1.2 board with the broadcom
chip (using SYN43752), does the btsdio.ko bind to the device and
create an extra rfkill bluetooth node?
If so, you'll want to blacklist the SYN43752 chip in the btsdio.ko.
Similar to https://github.com/jimmyhon/linux/commit/81c14dc2dea2ceaea8d390188b352d32e278abc8
The original logic was introduced in
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/drivers/bluetooth/btsdio.c?id=b4cdaba274247c9c841c6a682c08fa91fb3aa549
Jimmy
^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [PATCH 3/4] arm64: dts: rockchip: enable wifi on ArmSoM Sige5
2025-06-05 2:43 ` Jimmy Hon
@ 2025-06-05 6:32 ` Alexey Charkov
2025-06-05 14:14 ` Alexey Charkov
0 siblings, 1 reply; 44+ messages in thread
From: Alexey Charkov @ 2025-06-05 6:32 UTC (permalink / raw)
To: Jimmy Hon
Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Heiko Stuebner,
devicetree, linux-arm-kernel, linux-rockchip, linux-kernel
On Thu, Jun 5, 2025 at 6:43 AM Jimmy Hon <honyuenkwun@gmail.com> wrote:
>
> >
> > +&sdio {
> > + bus-width = <4>;
> > + cap-sdio-irq;
> > + disable-wp;
> > + keep-power-in-suspend;
> > + mmc-pwrseq = <&sdio_pwrseq>;
> > + no-sd;
> > + no-mmc;
> > + non-removable;
> > + sd-uhs-sdr50;
> > + sd-uhs-sdr104;
> > + vmmc-supply = <&vcc_3v3_s3>;
> > + vqmmc-supply = <&vcc_1v8_s3>;
> > + wakeup-source;
> > + status = "okay";
> > +};
>
> When you enable the sdio node on your v1.2 board with the broadcom
> chip (using SYN43752), does the btsdio.ko bind to the device and
> create an extra rfkill bluetooth node?
Good question, I didn't have it enabled in my build:
# CONFIG_BT_HCIBTSDIO is not set
Let me add it and report back.
> If so, you'll want to blacklist the SYN43752 chip in the btsdio.ko.
> Similar to https://github.com/jimmyhon/linux/commit/81c14dc2dea2ceaea8d390188b352d32e278abc8
> The original logic was introduced in
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/drivers/bluetooth/btsdio.c?id=b4cdaba274247c9c841c6a682c08fa91fb3aa549
I will check, thank you for the pointers!
Best regards,
Alexey
^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [PATCH 1/4] arm64: dts: rockchip: list all CPU supplies on ArmSoM Sige5
2025-06-03 17:01 ` [PATCH 1/4] arm64: dts: rockchip: list all CPU supplies " Alexey Charkov
2025-06-04 18:38 ` Nicolas Frattaroli
@ 2025-06-05 11:17 ` Diederik de Haas
2025-06-05 11:23 ` Alexey Charkov
1 sibling, 1 reply; 44+ messages in thread
From: Diederik de Haas @ 2025-06-05 11:17 UTC (permalink / raw)
To: Alexey Charkov, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Heiko Stuebner
Cc: devicetree, linux-arm-kernel, linux-rockchip, linux-kernel
[-- Attachment #1: Type: text/plain, Size: 1538 bytes --]
On Tue Jun 3, 2025 at 7:01 PM CEST, Alexey Charkov wrote:
> List both CPU supply regulators which drive the little and big CPU
> clusters, respectively, so that cpufreq can pick them up.
>
> Signed-off-by: Alexey Charkov <alchark@gmail.com>
> ---
> .../boot/dts/rockchip/rk3576-armsom-sige5.dts | 28 ++++++++++++++++++++++
> 1 file changed, 28 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/rockchip/rk3576-armsom-sige5.dts b/arch/arm64/boot/dts/rockchip/rk3576-armsom-sige5.dts
> index b09e789c75c47fec7cf7e9810ab0dcca32d9404a..d9c129be55a0d997e04e6d677cdc98fb50353418 100644
> --- a/arch/arm64/boot/dts/rockchip/rk3576-armsom-sige5.dts
> +++ b/arch/arm64/boot/dts/rockchip/rk3576-armsom-sige5.dts
> @@ -207,6 +207,22 @@ vcc_3v3_ufs_s0: regulator-vcc-ufs-s0 {
> };
> };
>
> +&cpu_b0 {
> + cpu-supply = <&vdd_cpu_big_s0>;
> +};
> +
> +&cpu_b1 {
> + cpu-supply = <&vdd_cpu_big_s0>;
> +};
> +
> +&cpu_b2 {
> + cpu-supply = <&vdd_cpu_big_s0>;
> +};
> +
> +&cpu_b3 {
> + cpu-supply = <&vdd_cpu_big_s0>;
> +};
> +
> &combphy0_ps {
> status = "okay";
> };
The &cpu_bN nodes should come after the &combphy0_ps node.
Cheers,
Diederik
> @@ -215,6 +231,18 @@ &cpu_l0 {
> cpu-supply = <&vdd_cpu_lit_s0>;
> };
>
> +&cpu_l1 {
> + cpu-supply = <&vdd_cpu_lit_s0>;
> +};
> +
> +&cpu_l2 {
> + cpu-supply = <&vdd_cpu_lit_s0>;
> +};
> +
> +&cpu_l3 {
> + cpu-supply = <&vdd_cpu_lit_s0>;
> +};
> +
> &gmac0 {
> phy-mode = "rgmii-id";
> clock_in_out = "output";
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]
^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [PATCH 1/4] arm64: dts: rockchip: list all CPU supplies on ArmSoM Sige5
2025-06-05 11:17 ` Diederik de Haas
@ 2025-06-05 11:23 ` Alexey Charkov
0 siblings, 0 replies; 44+ messages in thread
From: Alexey Charkov @ 2025-06-05 11:23 UTC (permalink / raw)
To: Diederik de Haas
Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Heiko Stuebner,
devicetree, linux-arm-kernel, linux-rockchip, linux-kernel
On Thu, Jun 5, 2025 at 3:18 PM Diederik de Haas <didi.debian@cknow.org> wrote:
>
> On Tue Jun 3, 2025 at 7:01 PM CEST, Alexey Charkov wrote:
> > List both CPU supply regulators which drive the little and big CPU
> > clusters, respectively, so that cpufreq can pick them up.
> >
> > Signed-off-by: Alexey Charkov <alchark@gmail.com>
> > ---
> > .../boot/dts/rockchip/rk3576-armsom-sige5.dts | 28 ++++++++++++++++++++++
> > 1 file changed, 28 insertions(+)
> >
> > diff --git a/arch/arm64/boot/dts/rockchip/rk3576-armsom-sige5.dts b/arch/arm64/boot/dts/rockchip/rk3576-armsom-sige5.dts
> > index b09e789c75c47fec7cf7e9810ab0dcca32d9404a..d9c129be55a0d997e04e6d677cdc98fb50353418 100644
> > --- a/arch/arm64/boot/dts/rockchip/rk3576-armsom-sige5.dts
> > +++ b/arch/arm64/boot/dts/rockchip/rk3576-armsom-sige5.dts
> > @@ -207,6 +207,22 @@ vcc_3v3_ufs_s0: regulator-vcc-ufs-s0 {
> > };
> > };
> >
> > +&cpu_b0 {
> > + cpu-supply = <&vdd_cpu_big_s0>;
> > +};
> > +
> > +&cpu_b1 {
> > + cpu-supply = <&vdd_cpu_big_s0>;
> > +};
> > +
> > +&cpu_b2 {
> > + cpu-supply = <&vdd_cpu_big_s0>;
> > +};
> > +
> > +&cpu_b3 {
> > + cpu-supply = <&vdd_cpu_big_s0>;
> > +};
> > +
> > &combphy0_ps {
> > status = "okay";
> > };
>
> The &cpu_bN nodes should come after the &combphy0_ps node.
True, thanks for spotting it. Don't know why they ended up separated
from &cpu_l*
Best regards,
Alexey
^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [PATCH 1/4] arm64: dts: rockchip: list all CPU supplies on ArmSoM Sige5
2025-06-04 19:12 ` Alexey Charkov
2025-06-04 19:23 ` Nicolas Frattaroli
@ 2025-06-05 13:22 ` Piotr Oniszczuk
2025-06-05 13:42 ` Alexey Charkov
1 sibling, 1 reply; 44+ messages in thread
From: Piotr Oniszczuk @ 2025-06-05 13:22 UTC (permalink / raw)
To: Alexey Charkov
Cc: Nicolas Frattaroli, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Heiko Stuebner, devicetree, linux-arm-kernel,
linux-rockchip, linux-kernel
> Wiadomość napisana przez Alexey Charkov <alchark@gmail.com> w dniu 4 cze 2025, o godz. 21:12:
>
> On Wed, Jun 4, 2025 at 10:38 PM Nicolas Frattaroli
> <nicolas.frattaroli@collabora.com> wrote:
>>
>>
>
> Frequencies are fine, but I don't think the more power hungry big CPU
> cluster gets any voltage scaling without it. Once I try to load the
> system enough that the governor decides to bump the big cluster
> frequency up, the regulator stays at 850000 microvolts, causing random
> reboots when the whole cluster starts starving. With the patch,
> voltage oscillates between 700000-737000 microvolts in idle and jumps
> up to 950000 under load, and the system seems stable.
>
> Here's what I used to monitor the voltage (there must be a better way
> to do it, but it works):
> sige5 ~ # watch cat `grep -r . /sys/class/regulator/*/name | grep
> vdd_cpu_big_s0 | sed -e 's/name.*//'`/microvolts
>
> And in another terminal:
> sige5 ~ # stress-ng -c8
Alexey,
I see you are using rk3576 board like me (nanopi-m5)
Have you on your board correctly working cpu dvfs?
I mean: [1][desired clocks reported by kernel sysfs are in pair with [2[]cur clocks?
In my case i see mine cpu lives totally on it’s own with dvfs:
Requested is [1]
Running is [2]
Measured is [3]
random read 1:
Requested CPU4: 408 MHz
Requested CPU0: 408 MHz
Running CPU4: 1800 MHz
Running CPU0: 1416 MHz
Measured on HW: 1579.03 MHz
random read 2:
Requested CPU4: 1608 MHz
Requested CPU0: 408 MHz
Running CPU4: 2016 MHz
Running CPU0: 1800 MHz
Measured on HW: 410.33 MHz
random read 3:
Requested CPU4: 600 MHz
Requested CPU0: 1800 MHz
Running CPU4: 816 MHz
Running CPU0: 1008 MHz
Measured on HW: 2275.07 MHz
random read 4:
Requested CPU4: 1608 MHz
Requested CPU0: 1200 MHz
Running CPU4: 816 MHz
Running CPU0: 816 MHz
Measured on HW: 2114.58 MHz
this is on rk3576
on i.e allwinner h618 or rk3588 all looks quite normal - [1] and [2] are equal...
my scaling governor is on_demand - so for sure clocks are dynamic - but i.e. on 3588 with the same binaries - i can't catch -at any random read - that requested is not equal to running while on 3576 almost any random read gives significant differences.
[1] scaling_cur_freq in sysfs
[2] cpuinfo_cur_freq in sysfs
[3] code to estimate arm cpu clock from http://uob-hpc.github.io/2017/11/22/arm-clock-freq.html
>
> This might warrant a note in the commit message I guess :)
>
> Thanks for your review and testing!
>
> Best regards,
> Alexey
>
> _______________________________________________
> Linux-rockchip mailing list
> Linux-rockchip@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-rockchip
^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [PATCH 1/4] arm64: dts: rockchip: list all CPU supplies on ArmSoM Sige5
2025-06-05 13:22 ` Piotr Oniszczuk
@ 2025-06-05 13:42 ` Alexey Charkov
2025-06-08 7:24 ` Piotr Oniszczuk
0 siblings, 1 reply; 44+ messages in thread
From: Alexey Charkov @ 2025-06-05 13:42 UTC (permalink / raw)
To: Piotr Oniszczuk
Cc: Nicolas Frattaroli, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Heiko Stuebner, devicetree, linux-arm-kernel,
linux-rockchip, linux-kernel
On Thu, Jun 5, 2025 at 5:22 PM Piotr Oniszczuk
<piotr.oniszczuk@gmail.com> wrote:
>
>
>
> > Wiadomość napisana przez Alexey Charkov <alchark@gmail.com> w dniu 4 cze 2025, o godz. 21:12:
> >
> > On Wed, Jun 4, 2025 at 10:38 PM Nicolas Frattaroli
> > <nicolas.frattaroli@collabora.com> wrote:
> >>
> >>
> >
> > Frequencies are fine, but I don't think the more power hungry big CPU
> > cluster gets any voltage scaling without it. Once I try to load the
> > system enough that the governor decides to bump the big cluster
> > frequency up, the regulator stays at 850000 microvolts, causing random
> > reboots when the whole cluster starts starving. With the patch,
> > voltage oscillates between 700000-737000 microvolts in idle and jumps
> > up to 950000 under load, and the system seems stable.
> >
> > Here's what I used to monitor the voltage (there must be a better way
> > to do it, but it works):
> > sige5 ~ # watch cat `grep -r . /sys/class/regulator/*/name | grep
> > vdd_cpu_big_s0 | sed -e 's/name.*//'`/microvolts
> >
> > And in another terminal:
> > sige5 ~ # stress-ng -c8
>
> Alexey,
> I see you are using rk3576 board like me (nanopi-m5)
> Have you on your board correctly working cpu dvfs?
> I mean: [1][desired clocks reported by kernel sysfs are in pair with [2[]cur clocks?
> In my case i see mine cpu lives totally on it’s own with dvfs:
Hi Piotr,
I haven't tried to validate actual running frequencies vs. requested
frequencies, but subjective performance and power consumption seem to
be in line with what I expect.
Big thing to note here is that on Rockchip the kernel does not really
set the CPU frequency directly. It only issues an SCMI request to the
ATF firmware with the desired target frequency and provides sufficient
voltage via the supply regulator as defined by the respective OPP.
What the ATF firmware (running on a dedicated MCU completely separate
from the OS) then does is it takes the desired target frequency,
matches it to a loop length for the PVTPLL block via an internal
lookup table, and PVTPLL then determines the stable frequency that
this particular chip specimen can run at with the provided loop length
and voltage. This frequency then gets applied to the hardware via the
CRU - and as you can imagine, it can well differ from what the kernel
was requesting via SCMI.
> Requested is [1]
> Running is [2]
> Measured is [3]
>
> random read 1:
> Requested CPU4: 408 MHz
> Requested CPU0: 408 MHz
> Running CPU4: 1800 MHz
> Running CPU0: 1416 MHz
> Measured on HW: 1579.03 MHz
Hmm, have you tried pinning a particular frequency on each of the
clusters, so that the governor doesn't change it while you are going
from the point where you read the "requested" frequency to "running"
and "measured"? Also I think it would be a good idea to "taskset" the
measuring thread to particular CPU cores - otherwise I'm not sure what
it shows when the scheduler can bounce the process between cores as it
pleases it.
> random read 2:
> Requested CPU4: 1608 MHz
> Requested CPU0: 408 MHz
> Running CPU4: 2016 MHz
> Running CPU0: 1800 MHz
> Measured on HW: 410.33 MHz
>
> random read 3:
> Requested CPU4: 600 MHz
> Requested CPU0: 1800 MHz
> Running CPU4: 816 MHz
> Running CPU0: 1008 MHz
> Measured on HW: 2275.07 MHz
>
> random read 4:
> Requested CPU4: 1608 MHz
> Requested CPU0: 1200 MHz
> Running CPU4: 816 MHz
> Running CPU0: 816 MHz
> Measured on HW: 2114.58 MHz
>
> this is on rk3576
> on i.e allwinner h618 or rk3588 all looks quite normal - [1] and [2] are equal...
Are these taken on the mainline kernel or Rockchip one? Binary BL31
from Rockchip or opensource TF-A? With big-core CPUs linked up to
their supply regulator (as per this patch) or without?
Can't see why the behavior would differ vs. RK3588 though, unless
there are some bugs somewhere.
Best regards,
Alexey
^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [PATCH 3/4] arm64: dts: rockchip: enable wifi on ArmSoM Sige5
2025-06-05 6:32 ` Alexey Charkov
@ 2025-06-05 14:14 ` Alexey Charkov
2025-06-07 2:42 ` Jimmy Hon
0 siblings, 1 reply; 44+ messages in thread
From: Alexey Charkov @ 2025-06-05 14:14 UTC (permalink / raw)
To: Jimmy Hon
Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Heiko Stuebner,
devicetree, linux-arm-kernel, linux-rockchip, linux-kernel
On Thu, Jun 5, 2025 at 10:32 AM Alexey Charkov <alchark@gmail.com> wrote:
>
> On Thu, Jun 5, 2025 at 6:43 AM Jimmy Hon <honyuenkwun@gmail.com> wrote:
> >
> > >
> > > +&sdio {
> > > + bus-width = <4>;
> > > + cap-sdio-irq;
> > > + disable-wp;
> > > + keep-power-in-suspend;
> > > + mmc-pwrseq = <&sdio_pwrseq>;
> > > + no-sd;
> > > + no-mmc;
> > > + non-removable;
> > > + sd-uhs-sdr50;
> > > + sd-uhs-sdr104;
> > > + vmmc-supply = <&vcc_3v3_s3>;
> > > + vqmmc-supply = <&vcc_1v8_s3>;
> > > + wakeup-source;
> > > + status = "okay";
> > > +};
> >
> > When you enable the sdio node on your v1.2 board with the broadcom
> > chip (using SYN43752), does the btsdio.ko bind to the device and
> > create an extra rfkill bluetooth node?
>
> Good question, I didn't have it enabled in my build:
>
> # CONFIG_BT_HCIBTSDIO is not set
>
> Let me add it and report back.
So I've rebuilt it with btsdio.ko module enabled. As I boot the
system, WiFi (via SDIO) and Bluetooth (via UART) drivers get probed
and load their respective firmwares. btsdio.ko doesn't get
auto-loaded. If I load it manually after booting, it doesn't bind to
anything and doesn't create any extra rfkill nodes.
Is there anything else I need to check or look out for?
Best regards,
Alexey
> > If so, you'll want to blacklist the SYN43752 chip in the btsdio.ko.
> > Similar to https://github.com/jimmyhon/linux/commit/81c14dc2dea2ceaea8d390188b352d32e278abc8
> > The original logic was introduced in
> > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/drivers/bluetooth/btsdio.c?id=b4cdaba274247c9c841c6a682c08fa91fb3aa549
>
> I will check, thank you for the pointers!
>
> Best regards,
> Alexey
^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [PATCH 3/4] arm64: dts: rockchip: enable wifi on ArmSoM Sige5
2025-06-05 14:14 ` Alexey Charkov
@ 2025-06-07 2:42 ` Jimmy Hon
0 siblings, 0 replies; 44+ messages in thread
From: Jimmy Hon @ 2025-06-07 2:42 UTC (permalink / raw)
To: Alexey Charkov
Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Heiko Stuebner,
devicetree, linux-arm-kernel, linux-rockchip, linux-kernel
On Thu, Jun 5, 2025 at 9:14 AM Alexey Charkov <alchark@gmail.com> wrote:
>
> On Thu, Jun 5, 2025 at 10:32 AM Alexey Charkov <alchark@gmail.com> wrote:
> >
> > On Thu, Jun 5, 2025 at 6:43 AM Jimmy Hon <honyuenkwun@gmail.com> wrote:
> > >
> > > >
> > > > +&sdio {
> > > > + bus-width = <4>;
> > > > + cap-sdio-irq;
> > > > + disable-wp;
> > > > + keep-power-in-suspend;
> > > > + mmc-pwrseq = <&sdio_pwrseq>;
> > > > + no-sd;
> > > > + no-mmc;
> > > > + non-removable;
> > > > + sd-uhs-sdr50;
> > > > + sd-uhs-sdr104;
> > > > + vmmc-supply = <&vcc_3v3_s3>;
> > > > + vqmmc-supply = <&vcc_1v8_s3>;
> > > > + wakeup-source;
> > > > + status = "okay";
> > > > +};
> > >
> > > When you enable the sdio node on your v1.2 board with the broadcom
> > > chip (using SYN43752), does the btsdio.ko bind to the device and
> > > create an extra rfkill bluetooth node?
> >
> > Good question, I didn't have it enabled in my build:
> >
> > # CONFIG_BT_HCIBTSDIO is not set
> >
> > Let me add it and report back.
>
> So I've rebuilt it with btsdio.ko module enabled. As I boot the
> system, WiFi (via SDIO) and Bluetooth (via UART) drivers get probed
> and load their respective firmwares. btsdio.ko doesn't get
> auto-loaded. If I load it manually after booting, it doesn't bind to
> anything and doesn't create any extra rfkill nodes.
>
> Is there anything else I need to check or look out for?
>
> Best regards,
> Alexey
That should be all you need to check. I guess they stopped incorrectly
advertising SDIO_DEVICE_CLASS for bluetooth.
Jimmy
^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [PATCH 1/4] arm64: dts: rockchip: list all CPU supplies on ArmSoM Sige5
2025-06-05 13:42 ` Alexey Charkov
@ 2025-06-08 7:24 ` Piotr Oniszczuk
2025-06-09 14:05 ` Alexey Charkov
0 siblings, 1 reply; 44+ messages in thread
From: Piotr Oniszczuk @ 2025-06-08 7:24 UTC (permalink / raw)
To: Alexey Charkov
Cc: Nicolas Frattaroli, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Heiko Stuebner, devicetree, linux-arm-kernel,
linux-rockchip, linux-kernel
> Wiadomość napisana przez Alexey Charkov <alchark@gmail.com> w dniu 5 cze 2025, o godz. 15:42:
>>
>>>
>>>
>>
>> Alexey,
>> I see you are using rk3576 board like me (nanopi-m5)
>> Have you on your board correctly working cpu dvfs?
>> I mean: [1][desired clocks reported by kernel sysfs are in pair with [2[]cur clocks?
>> In my case i see mine cpu lives totally on it’s own with dvfs:
>
> Hi Piotr,
>
> I haven't tried to validate actual running frequencies vs. requested
> frequencies, but subjective performance and power consumption seem to
> be in line with what I expect.
well - my subjective l&f is that - currently - my rk3576 seems „slower" than i.e. 4xA53 h618.
This directed me to investigate this issue.
Test run was media player (mythtv) where ui has gl effects and ui gl transitions „speed” are quite proportional to cpu speed (and gpu).
My overall feeling is: ux is comparable to slow socs 4xA53@1.4GHz/G31. This is with mainline atf + collabora uboot [1] and on-demand gov.
I done test with replacing uboot from mainline atf + collabora uboot to bin. dump of vendor uboot (2017.09) and with this ux become almost as expected (i mean comparable with i.e. rk3399).
I done test with perf gov. and
1.collabora uboot[1] + mainline atf 2.13
2.collabora uboot[1] + rockchip rkbin bl31 blob [2]
3.vendor uboot (bin dump from friendlyelec ubuntu image)
[a] on vendor uboot:
Requested CPU4: 2304 MHz
Requested CPU0: 2208 MHz
Running CPU4: 1008 MHz
Running CPU0: 1008 MHz
Measured on HW: 1580.11 MHz
[b] on collabora uboot + mainline atf:
Requested CPU4: 2304 MHz
Requested CPU0: 2208 MHz
Running CPU4: 816 MHz
Running CPU0: 816 MHz
Measured on HW: 808.72 MHz
[c] on collabora uboot + rockchip rkbin bl31 blob:
Requested CPU4: 2304 MHz
Requested CPU0: 2208 MHz
Running CPU4: 816 MHz
Running CPU0: 816 MHz
Measured on HW: 812.49 MHz
in all cases all clocks are constant as they should
Interesting that on collabora uboot [b][c] measured clock is 808 vs 1580 on vendor uboot [a]...
sw video decode conforms this diff: hd h264 gets cpu load: 172%[b][c] vs 87%[a]
….
>
>
> Are these taken on the mainline kernel or Rockchip one?
I tested:
6.15 mainline + some collabora patches
1.collabora uboot[1] + mainline atf 2.13
2.collabora uboot[1] + rockchip rkbin bl31 blob [2]
3.vendor uboot (bin dump from friendlyelec ubuntu image)
> Binary BL31
> from Rockchip or opensource TF-A? With big-core CPUs linked up to
> their supply regulator (as per this patch)
yes
So summarising:
1. i see kind of issue with clock values (e.g. perf gov gives 800MHz on mainline atf).
imho rot cause seems to be in collabora uboot
2. on-demand gov. seems behave much more like powersave.
this seems to be 3576 specific:
-on 3588 change from perf to on_demand is hardly noticeable in ux
-on 3576 such change makes ux feeling noticeable slow (like 4xA53 soc)
i think this is more related to diff between scmi mcu gov algo in 3576 vs. 3588
(imho 3576 algo has high latency in clock increases when demand happens + too short delay for clocks decreases to save power)
[1] https://gitlab.collabora.com/hardware-enablement/rockchip-3588/u-boot
[2] https://github.com/rockchip-linux/rkbin/blob/master/bin/rk35/rk3576_bl31_v1.15.elf
^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [PATCH 1/4] arm64: dts: rockchip: list all CPU supplies on ArmSoM Sige5
2025-06-08 7:24 ` Piotr Oniszczuk
@ 2025-06-09 14:05 ` Alexey Charkov
2025-06-15 15:59 ` Piotr Oniszczuk
0 siblings, 1 reply; 44+ messages in thread
From: Alexey Charkov @ 2025-06-09 14:05 UTC (permalink / raw)
To: Piotr Oniszczuk
Cc: Nicolas Frattaroli, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Heiko Stuebner, devicetree, linux-arm-kernel,
linux-rockchip, linux-kernel
On Sun, Jun 8, 2025 at 11:24 AM Piotr Oniszczuk
<piotr.oniszczuk@gmail.com> wrote:
> > Wiadomość napisana przez Alexey Charkov <alchark@gmail.com> w dniu 5 cze 2025, o godz. 15:42:
> >> Alexey,
> >> I see you are using rk3576 board like me (nanopi-m5)
> >> Have you on your board correctly working cpu dvfs?
> >> I mean: [1][desired clocks reported by kernel sysfs are in pair with [2[]cur clocks?
> >> In my case i see mine cpu lives totally on it’s own with dvfs:
> >
> > Hi Piotr,
> >
> > I haven't tried to validate actual running frequencies vs. requested
> > frequencies, but subjective performance and power consumption seem to
> > be in line with what I expect.
>
> well - my subjective l&f is that - currently - my rk3576 seems „slower" than i.e. 4xA53 h618.
In my experience, native compilation of GCC 14 using 8 threads on
RK3576 (mainline with passive cooling and throttling enabled): 2 hours
6 minutes, on RK3588 (mainline with passive cooling via Radxa Rock 5B
case and throttling enabled but never kicking in): 1 hour 10 minutes
> This directed me to investigate this issue.
> Test run was media player (mythtv) where ui has gl effects and ui gl transitions „speed” are quite proportional to cpu speed (and gpu).
> My overall feeling is: ux is comparable to slow socs 4xA53@1.4GHz/G31. This is with mainline atf + collabora uboot [1] and on-demand gov.
> I done test with replacing uboot from mainline atf + collabora uboot to bin. dump of vendor uboot (2017.09) and with this ux become almost as expected (i mean comparable with i.e. rk3399).
>
> I done test with perf gov. and
>
> 1.collabora uboot[1] + mainline atf 2.13
> 2.collabora uboot[1] + rockchip rkbin bl31 blob [2]
> 3.vendor uboot (bin dump from friendlyelec ubuntu image)
>
> [a] on vendor uboot:
> Requested CPU4: 2304 MHz
> Requested CPU0: 2208 MHz
> Running CPU4: 1008 MHz
> Running CPU0: 1008 MHz
> Measured on HW: 1580.11 MHz
>
> [b] on collabora uboot + mainline atf:
> Requested CPU4: 2304 MHz
> Requested CPU0: 2208 MHz
> Running CPU4: 816 MHz
> Running CPU0: 816 MHz
> Measured on HW: 808.72 MHz
>
> [c] on collabora uboot + rockchip rkbin bl31 blob:
> Requested CPU4: 2304 MHz
> Requested CPU0: 2208 MHz
> Running CPU4: 816 MHz
> Running CPU0: 816 MHz
> Measured on HW: 812.49 MHz
>
> in all cases all clocks are constant as they should
> Interesting that on collabora uboot [b][c] measured clock is 808 vs 1580 on vendor uboot [a]...
> sw video decode conforms this diff: hd h264 gets cpu load: 172%[b][c] vs 87%[a]
Can't see how u-boot would affect CPU speed in Linux, as long as you
use comparable ATF images. Do you use the same kernel and dtb in all
these cases? Also, what's your thermal setup?
> So summarising:
>
> 1. i see kind of issue with clock values (e.g. perf gov gives 800MHz on mainline atf).
> imho rot cause seems to be in collabora uboot
>
> 2. on-demand gov. seems behave much more like powersave.
> this seems to be 3576 specific:
> -on 3588 change from perf to on_demand is hardly noticeable in ux
Not sure UX is a particularly good measure of CPU performance, as long
as you've got a properly accelerated DRM graphics pipeline. More
likely 2D/3D and memory.
By the way, I'd rather go for the "schedutil" governor, as it is more
forward-looking than "ondemand", thus should be more responsive to
load changes. It's also the default in modern distros AFAIR.
> -on 3576 such change makes ux feeling noticeable slow (like 4xA53 soc)
> i think this is more related to diff between scmi mcu gov algo in 3576 vs. 3588
> (imho 3576 algo has high latency in clock increases when demand happens + too short delay for clocks decreases to save power)
There might be some difference in how PVTPLL behaves on RK3576 vs.
RK3588. But frankly first I would check if you are using comparable
ATF implementations (e.g. upstream TF-A in both cases), kernels and
thermal environment :)
Best regards,
Alexey
^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [PATCH 1/4] arm64: dts: rockchip: list all CPU supplies on ArmSoM Sige5
2025-06-09 14:05 ` Alexey Charkov
@ 2025-06-15 15:59 ` Piotr Oniszczuk
2025-06-15 16:20 ` Alexey Charkov
2025-06-18 13:51 ` Alexey Charkov
0 siblings, 2 replies; 44+ messages in thread
From: Piotr Oniszczuk @ 2025-06-15 15:59 UTC (permalink / raw)
To: Alexey Charkov
Cc: Nicolas Frattaroli, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Heiko Stuebner, devicetree, linux-arm-kernel,
linux-rockchip, linux-kernel
> Wiadomość napisana przez Alexey Charkov <alchark@gmail.com> w dniu 9 cze 2025, o godz. 16:05:
>
> On Sun, Jun 8, 2025 at 11:24 AM Piotr Oniszczuk
> <piotr.oniszczuk@gmail.com> wrote:
>>> Wiadomość napisana przez Alexey Charkov <alchark@gmail.com> w dniu 5 cze 2025, o godz. 15:42:
>>>> Alexey,
>>>> I see you are using rk3576 board like me (nanopi-m5)
>>>> Have you on your board correctly working cpu dvfs?
>>>> I mean: [1][desired clocks reported by kernel sysfs are in pair with [2[]cur clocks?
>>>> In my case i see mine cpu lives totally on it’s own with dvfs:
>>>
>>> Hi Piotr,
>>>
>>> I haven't tried to validate actual running frequencies vs. requested
>>> frequencies, but subjective performance and power consumption seem to
>>> be in line with what I expect.
>>
>> well - my subjective l&f is that - currently - my rk3576 seems „slower" than i.e. 4xA53 h618.
>
> In my experience, native compilation of GCC 14 using 8 threads on
> RK3576 (mainline with passive cooling and throttling enabled): 2 hours
> 6 minutes, on RK3588 (mainline with passive cooling via Radxa Rock 5B
> case and throttling enabled but never kicking in): 1 hour 10 minutes
by curiosity i looked randomly on 3576 vs 3588:
multithread passmark: 3675 (https://www.cpubenchmark.net/cpu.php?cpu=Rockchip+RK3576&id=6213)
multithread passmark: 4530 (https://www.cpubenchmark.net/cpu.php?cpu=Rockchip+RK3588&id=4906)
assuming 3588 as baseline, 3576 is approx 20% slower on multithread passmark (has ~0,8 comp power of 3588)
70 min compile on 3588 should take something like ~86min on 3576.
In your case 126min compile on 3576 shows 3576 offers 0,55 comp power of 3588.
Roughly 3576 should do this task in 40min less than you currently see i think
> Can't see how u-boot would affect CPU speed in Linux, as long as you
> use comparable ATF images. Do you use the same kernel and dtb in all
> these cases? Also, what's your thermal setup?
yes. in all cases only change was: uboot & atf
thermal is based on recent collabora series (+ recent pooling fix for clocks return from throttling)
>
>
> Not sure UX is a particularly good measure of CPU performance, as long
> as you've got a properly accelerated DRM graphics pipeline. More
> likely 2D/3D and memory.
indeed.
For quantified look i’m looking on v.simple approach to estimate real clock is http://uob-hpc.github.io/2017/11/22/arm-clock-freq.html
by curiosity i looked what it reports on a53/a55/a72/a76 and it is surprisingly accurate :-)
on mine 3576 with collabora uboot+mainline atf is hows 800MHz (and in perf. gov it seems to be constant)
>
> There might be some difference in how PVTPLL behaves on RK3576 vs.
> RK3588. But frankly first I would check if you are using comparable
> ATF implementations (e.g. upstream TF-A in both cases), kernels and
> thermal environment :)
all tests: the same 6.15.2 mainline + some collabora patches
diffs were:
1.collabora uboot[1] + mainline atf 2.13
2.collabora uboot[1] + rockchip rkbin bl31 blob
3.vendor uboot (bin dump from friendlyelec ubuntu image)
on 1/2 i see kind of issue with clock values (i.e. perf gov gives constant 800MHz on mainline atf).
3 seems to perform better - (i.e. perf gov gives constant 1500MHz so all is snappier/faster)
as pvtpll is trying to reach target freq and ends with stable oper. freq for given cpu_vdd/temp/fab.cut - possible theory is: if cpu_vdd is wrongly driven, pvtpll programmed freq will way diff from req. (i.e. way too low).
monitoring vdd_big/vdd_lit shows constant 950mv for perf.gov (read from sysfs; not verified with multimeter as i don’t have pcb pdf with components layout so can’t identify i.e. vdd_big filtering caps c1007/c1008 to measure)
(.dxf file provided by friendlyelec [1] seems to be lacking comp. numbering)
[1]: https://wiki.friendlyelec.com/wiki/images/e/e1/NanoPi_M5_2411_DXF.zip
^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [PATCH 1/4] arm64: dts: rockchip: list all CPU supplies on ArmSoM Sige5
2025-06-15 15:59 ` Piotr Oniszczuk
@ 2025-06-15 16:20 ` Alexey Charkov
2025-06-18 13:51 ` Alexey Charkov
1 sibling, 0 replies; 44+ messages in thread
From: Alexey Charkov @ 2025-06-15 16:20 UTC (permalink / raw)
To: Piotr Oniszczuk
Cc: Nicolas Frattaroli, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Heiko Stuebner, devicetree, linux-arm-kernel,
linux-rockchip, linux-kernel
On Sun, Jun 15, 2025 at 8:00 PM Piotr Oniszczuk
<piotr.oniszczuk@gmail.com> wrote:
>
>
>
> > Wiadomość napisana przez Alexey Charkov <alchark@gmail.com> w dniu 9 cze 2025, o godz. 16:05:
> >
> > On Sun, Jun 8, 2025 at 11:24 AM Piotr Oniszczuk
> > <piotr.oniszczuk@gmail.com> wrote:
> >>> Wiadomość napisana przez Alexey Charkov <alchark@gmail.com> w dniu 5 cze 2025, o godz. 15:42:
> >>>> Alexey,
> >>>> I see you are using rk3576 board like me (nanopi-m5)
> >>>> Have you on your board correctly working cpu dvfs?
> >>>> I mean: [1][desired clocks reported by kernel sysfs are in pair with [2[]cur clocks?
> >>>> In my case i see mine cpu lives totally on it’s own with dvfs:
> >>>
> >>> Hi Piotr,
> >>>
> >>> I haven't tried to validate actual running frequencies vs. requested
> >>> frequencies, but subjective performance and power consumption seem to
> >>> be in line with what I expect.
> >>
> >> well - my subjective l&f is that - currently - my rk3576 seems „slower" than i.e. 4xA53 h618.
> >
> > In my experience, native compilation of GCC 14 using 8 threads on
> > RK3576 (mainline with passive cooling and throttling enabled): 2 hours
> > 6 minutes, on RK3588 (mainline with passive cooling via Radxa Rock 5B
> > case and throttling enabled but never kicking in): 1 hour 10 minutes
>
> by curiosity i looked randomly on 3576 vs 3588:
> multithread passmark: 3675 (https://www.cpubenchmark.net/cpu.php?cpu=Rockchip+RK3576&id=6213)
> multithread passmark: 4530 (https://www.cpubenchmark.net/cpu.php?cpu=Rockchip+RK3588&id=4906)
>
> assuming 3588 as baseline, 3576 is approx 20% slower on multithread passmark (has ~0,8 comp power of 3588)
> 70 min compile on 3588 should take something like ~86min on 3576.
> In your case 126min compile on 3576 shows 3576 offers 0,55 comp power of 3588.
> Roughly 3576 should do this task in 40min less than you currently see i think
>
>
> > Can't see how u-boot would affect CPU speed in Linux, as long as you
> > use comparable ATF images. Do you use the same kernel and dtb in all
> > these cases? Also, what's your thermal setup?
>
> yes. in all cases only change was: uboot & atf
> thermal is based on recent collabora series (+ recent pooling fix for clocks return from throttling)
>
> >
> >
> > Not sure UX is a particularly good measure of CPU performance, as long
> > as you've got a properly accelerated DRM graphics pipeline. More
> > likely 2D/3D and memory.
>
> indeed.
> For quantified look i’m looking on v.simple approach to estimate real clock is http://uob-hpc.github.io/2017/11/22/arm-clock-freq.html
> by curiosity i looked what it reports on a53/a55/a72/a76 and it is surprisingly accurate :-)
> on mine 3576 with collabora uboot+mainline atf is hows 800MHz (and in perf. gov it seems to be constant)
>
> >
> > There might be some difference in how PVTPLL behaves on RK3576 vs.
> > RK3588. But frankly first I would check if you are using comparable
> > ATF implementations (e.g. upstream TF-A in both cases), kernels and
> > thermal environment :)
>
> all tests: the same 6.15.2 mainline + some collabora patches
>
> diffs were:
> 1.collabora uboot[1] + mainline atf 2.13
> 2.collabora uboot[1] + rockchip rkbin bl31 blob
> 3.vendor uboot (bin dump from friendlyelec ubuntu image)
>
> on 1/2 i see kind of issue with clock values (i.e. perf gov gives constant 800MHz on mainline atf).
> 3 seems to perform better - (i.e. perf gov gives constant 1500MHz so all is snappier/faster)
>
> as pvtpll is trying to reach target freq and ends with stable oper. freq for given cpu_vdd/temp/fab.cut - possible theory is: if cpu_vdd is wrongly driven, pvtpll programmed freq will way diff from req. (i.e. way too low).
It is an interesting line of thought. After all, RK3576 boards I
looked at use an I2C connected PMIC, while RK3588 use an SPI connected
one. If there is some bug in the I2C bus glue for the PMIC driver, it
could theoretically report updated voltage without always updating it
properly.
I still believe it succeeds more often than not though, because I
observe measured power consumption of around 5W under full load vs.
around 1.4W in idle (on ArmSoM Sige5). Which doesn't rule out some
transient weirdness.
> monitoring vdd_big/vdd_lit shows constant 950mv for perf.gov (read from sysfs; not verified with multimeter as i don’t have pcb pdf with components layout so can’t identify i.e. vdd_big filtering caps c1007/c1008 to measure)
Measuring voltages to within 0.1V precision (not just resolution)
sounds like a big ask of a multimeter IMHO :)
Best,
Alexey
^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [PATCH 1/4] arm64: dts: rockchip: list all CPU supplies on ArmSoM Sige5
2025-06-15 15:59 ` Piotr Oniszczuk
2025-06-15 16:20 ` Alexey Charkov
@ 2025-06-18 13:51 ` Alexey Charkov
2025-06-18 14:06 ` Nicolas Frattaroli
1 sibling, 1 reply; 44+ messages in thread
From: Alexey Charkov @ 2025-06-18 13:51 UTC (permalink / raw)
To: Piotr Oniszczuk
Cc: Nicolas Frattaroli, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Heiko Stuebner, devicetree, linux-arm-kernel,
linux-rockchip, linux-kernel
On Sun, Jun 15, 2025 at 8:00 PM Piotr Oniszczuk
<piotr.oniszczuk@gmail.com> wrote:
>
>
>
> > Wiadomość napisana przez Alexey Charkov <alchark@gmail.com> w dniu 9 cze 2025, o godz. 16:05:
> >
> > On Sun, Jun 8, 2025 at 11:24 AM Piotr Oniszczuk
> > <piotr.oniszczuk@gmail.com> wrote:
> >>> Wiadomość napisana przez Alexey Charkov <alchark@gmail.com> w dniu 5 cze 2025, o godz. 15:42:
> >>>> Alexey,
> >>>> I see you are using rk3576 board like me (nanopi-m5)
> >>>> Have you on your board correctly working cpu dvfs?
> >>>> I mean: [1][desired clocks reported by kernel sysfs are in pair with [2[]cur clocks?
> >>>> In my case i see mine cpu lives totally on it’s own with dvfs:
> >>>
> >>> Hi Piotr,
> >>>
> >>> I haven't tried to validate actual running frequencies vs. requested
> >>> frequencies, but subjective performance and power consumption seem to
> >>> be in line with what I expect.
> >>
> >> well - my subjective l&f is that - currently - my rk3576 seems „slower" than i.e. 4xA53 h618.
> >
> > In my experience, native compilation of GCC 14 using 8 threads on
> > RK3576 (mainline with passive cooling and throttling enabled): 2 hours
> > 6 minutes, on RK3588 (mainline with passive cooling via Radxa Rock 5B
> > case and throttling enabled but never kicking in): 1 hour 10 minutes
>
> by curiosity i looked randomly on 3576 vs 3588:
> multithread passmark: 3675 (https://www.cpubenchmark.net/cpu.php?cpu=Rockchip+RK3576&id=6213)
> multithread passmark: 4530 (https://www.cpubenchmark.net/cpu.php?cpu=Rockchip+RK3588&id=4906)
>
> assuming 3588 as baseline, 3576 is approx 20% slower on multithread passmark (has ~0,8 comp power of 3588)
> 70 min compile on 3588 should take something like ~86min on 3576.
> In your case 126min compile on 3576 shows 3576 offers 0,55 comp power of 3588.
> Roughly 3576 should do this task in 40min less than you currently see i think
>
>
> > Can't see how u-boot would affect CPU speed in Linux, as long as you
> > use comparable ATF images. Do you use the same kernel and dtb in all
> > these cases? Also, what's your thermal setup?
>
> yes. in all cases only change was: uboot & atf
> thermal is based on recent collabora series (+ recent pooling fix for clocks return from throttling)
>
> >
> >
> > Not sure UX is a particularly good measure of CPU performance, as long
> > as you've got a properly accelerated DRM graphics pipeline. More
> > likely 2D/3D and memory.
>
> indeed.
> For quantified look i’m looking on v.simple approach to estimate real clock is http://uob-hpc.github.io/2017/11/22/arm-clock-freq.html
> by curiosity i looked what it reports on a53/a55/a72/a76 and it is surprisingly accurate :-)
> on mine 3576 with collabora uboot+mainline atf is hows 800MHz (and in perf. gov it seems to be constant)
>
> >
> > There might be some difference in how PVTPLL behaves on RK3576 vs.
> > RK3588. But frankly first I would check if you are using comparable
> > ATF implementations (e.g. upstream TF-A in both cases), kernels and
> > thermal environment :)
>
> all tests: the same 6.15.2 mainline + some collabora patches
>
> diffs were:
> 1.collabora uboot[1] + mainline atf 2.13
> 2.collabora uboot[1] + rockchip rkbin bl31 blob
> 3.vendor uboot (bin dump from friendlyelec ubuntu image)
>
> on 1/2 i see kind of issue with clock values (i.e. perf gov gives constant 800MHz on mainline atf).
> 3 seems to perform better - (i.e. perf gov gives constant 1500MHz so all is snappier/faster)
There is indeed something weird going on. I've tried running sbc-bench
[1], and even though I observe dynamically varying CPU frequencies
after boot with schedutil governor, once sbc-bench switches the
governor to "performance" and goes through the OPPs in descending
frequency order, the CPUs seem to get stuck at the last applied low
frequency. Even after max frequency gets reverted from 408 MHz to
something higher, even after I switch the governor to something else -
no matter what. Only a reboot gets the higher frequencies 'unstuck'
for me.
These are all observed at around 55C SoC temperature, so throttling is
not an issue. Regulators are stuck at 950000 uV - way above 700000 uV
that the 408 MHz OPP requires (and power readings seem to match: I'm
getting about 2.3W consumption at 408 MHz in idle vs. normal idle
reading of 1.4W at around 1 GHz).
Not sure what's going on here, and I don't remember seeing anything
similar on RK3588. Thoughts welcome.
Best regards,
Alexey
[1] https://github.com/ThomasKaiser/sbc-bench
^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [PATCH 1/4] arm64: dts: rockchip: list all CPU supplies on ArmSoM Sige5
2025-06-18 13:51 ` Alexey Charkov
@ 2025-06-18 14:06 ` Nicolas Frattaroli
2025-06-18 14:48 ` Alexey Charkov
0 siblings, 1 reply; 44+ messages in thread
From: Nicolas Frattaroli @ 2025-06-18 14:06 UTC (permalink / raw)
To: Piotr Oniszczuk, Alexey Charkov
Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Heiko Stuebner,
devicetree, linux-arm-kernel, linux-rockchip, linux-kernel,
Jonas Karlman
Hello,
+Cc Jonas Karlman as he is intimately familiar with RK3576 clock shenanigans by now,
On Wednesday, 18 June 2025 15:51:45 Central European Summer Time Alexey Charkov wrote:
> On Sun, Jun 15, 2025 at 8:00 PM Piotr Oniszczuk
> <piotr.oniszczuk@gmail.com> wrote:
> >
> >
> >
> > > Wiadomość napisana przez Alexey Charkov <alchark@gmail.com> w dniu 9 cze 2025, o godz. 16:05:
> > >
> > > On Sun, Jun 8, 2025 at 11:24 AM Piotr Oniszczuk
> > > <piotr.oniszczuk@gmail.com> wrote:
> > >>> Wiadomość napisana przez Alexey Charkov <alchark@gmail.com> w dniu 5 cze 2025, o godz. 15:42:
> > >>>> Alexey,
> > >>>> I see you are using rk3576 board like me (nanopi-m5)
> > >>>> Have you on your board correctly working cpu dvfs?
> > >>>> I mean: [1][desired clocks reported by kernel sysfs are in pair with [2[]cur clocks?
> > >>>> In my case i see mine cpu lives totally on it’s own with dvfs:
> > >>>
> > >>> Hi Piotr,
> > >>>
> > >>> I haven't tried to validate actual running frequencies vs. requested
> > >>> frequencies, but subjective performance and power consumption seem to
> > >>> be in line with what I expect.
> > >>
> > >> well - my subjective l&f is that - currently - my rk3576 seems „slower" than i.e. 4xA53 h618.
> > >
> > > In my experience, native compilation of GCC 14 using 8 threads on
> > > RK3576 (mainline with passive cooling and throttling enabled): 2 hours
> > > 6 minutes, on RK3588 (mainline with passive cooling via Radxa Rock 5B
> > > case and throttling enabled but never kicking in): 1 hour 10 minutes
> >
> > by curiosity i looked randomly on 3576 vs 3588:
> > multithread passmark: 3675 (https://www.cpubenchmark.net/cpu.php?cpu=Rockchip+RK3576&id=6213)
> > multithread passmark: 4530 (https://www.cpubenchmark.net/cpu.php?cpu=Rockchip+RK3588&id=4906)
> >
> > assuming 3588 as baseline, 3576 is approx 20% slower on multithread passmark (has ~0,8 comp power of 3588)
> > 70 min compile on 3588 should take something like ~86min on 3576.
> > In your case 126min compile on 3576 shows 3576 offers 0,55 comp power of 3588.
> > Roughly 3576 should do this task in 40min less than you currently see i think
> >
> >
> > > Can't see how u-boot would affect CPU speed in Linux, as long as you
> > > use comparable ATF images. Do you use the same kernel and dtb in all
> > > these cases? Also, what's your thermal setup?
> >
> > yes. in all cases only change was: uboot & atf
> > thermal is based on recent collabora series (+ recent pooling fix for clocks return from throttling)
> >
> > >
> > >
> > > Not sure UX is a particularly good measure of CPU performance, as long
> > > as you've got a properly accelerated DRM graphics pipeline. More
> > > likely 2D/3D and memory.
> >
> > indeed.
> > For quantified look i’m looking on v.simple approach to estimate real clock is http://uob-hpc.github.io/2017/11/22/arm-clock-freq.html
> > by curiosity i looked what it reports on a53/a55/a72/a76 and it is surprisingly accurate :-)
> > on mine 3576 with collabora uboot+mainline atf is hows 800MHz (and in perf. gov it seems to be constant)
> >
> > >
> > > There might be some difference in how PVTPLL behaves on RK3576 vs.
> > > RK3588. But frankly first I would check if you are using comparable
> > > ATF implementations (e.g. upstream TF-A in both cases), kernels and
> > > thermal environment :)
> >
> > all tests: the same 6.15.2 mainline + some collabora patches
> >
> > diffs were:
> > 1.collabora uboot[1] + mainline atf 2.13
> > 2.collabora uboot[1] + rockchip rkbin bl31 blob
> > 3.vendor uboot (bin dump from friendlyelec ubuntu image)
> >
> > on 1/2 i see kind of issue with clock values (i.e. perf gov gives constant 800MHz on mainline atf).
> > 3 seems to perform better - (i.e. perf gov gives constant 1500MHz so all is snappier/faster)
>
> There is indeed something weird going on. I've tried running sbc-bench
> [1], and even though I observe dynamically varying CPU frequencies
> after boot with schedutil governor, once sbc-bench switches the
> governor to "performance" and goes through the OPPs in descending
> frequency order, the CPUs seem to get stuck at the last applied low
> frequency. Even after max frequency gets reverted from 408 MHz to
> something higher, even after I switch the governor to something else -
> no matter what. Only a reboot gets the higher frequencies 'unstuck'
> for me.
>
> These are all observed at around 55C SoC temperature, so throttling is
> not an issue. Regulators are stuck at 950000 uV - way above 700000 uV
> that the 408 MHz OPP requires (and power readings seem to match: I'm
> getting about 2.3W consumption at 408 MHz in idle vs. normal idle
> reading of 1.4W at around 1 GHz).
>
> Not sure what's going on here, and I don't remember seeing anything
> similar on RK3588. Thoughts welcome.
This may once again be a "accidentally uses wrong clock IDs" type
situation. The other possibility is that we're getting confused
between what we think the clock rate is and what SCMI actually set
the clock rate to.
Things to check is whether the right clock controller (scmi vs cru)
and the right clock id (check ATF source for this) is used.
Kind regards,
Nicolas Frattaroli
>
> Best regards,
> Alexey
>
> [1] https://github.com/ThomasKaiser/sbc-bench
>
^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [PATCH 1/4] arm64: dts: rockchip: list all CPU supplies on ArmSoM Sige5
2025-06-18 14:06 ` Nicolas Frattaroli
@ 2025-06-18 14:48 ` Alexey Charkov
2025-06-20 16:02 ` Alexey Charkov
0 siblings, 1 reply; 44+ messages in thread
From: Alexey Charkov @ 2025-06-18 14:48 UTC (permalink / raw)
To: Nicolas Frattaroli, XiaoDong Huang
Cc: Piotr Oniszczuk, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Heiko Stuebner, devicetree, linux-arm-kernel, linux-rockchip,
linux-kernel, Jonas Karlman
On Wed, Jun 18, 2025 at 6:06 PM Nicolas Frattaroli
<nicolas.frattaroli@collabora.com> wrote:
>
> Hello,
>
> +Cc Jonas Karlman as he is intimately familiar with RK3576 clock shenanigans by now,
>
> On Wednesday, 18 June 2025 15:51:45 Central European Summer Time Alexey Charkov wrote:
> > On Sun, Jun 15, 2025 at 8:00 PM Piotr Oniszczuk
> > <piotr.oniszczuk@gmail.com> wrote:
> > >
> > >
> > >
> > > > Wiadomość napisana przez Alexey Charkov <alchark@gmail.com> w dniu 9 cze 2025, o godz. 16:05:
> > > >
> > > > On Sun, Jun 8, 2025 at 11:24 AM Piotr Oniszczuk
> > > > <piotr.oniszczuk@gmail.com> wrote:
> > > >>> Wiadomość napisana przez Alexey Charkov <alchark@gmail.com> w dniu 5 cze 2025, o godz. 15:42:
> > > >>>> Alexey,
> > > >>>> I see you are using rk3576 board like me (nanopi-m5)
> > > >>>> Have you on your board correctly working cpu dvfs?
> > > >>>> I mean: [1][desired clocks reported by kernel sysfs are in pair with [2[]cur clocks?
> > > >>>> In my case i see mine cpu lives totally on it’s own with dvfs:
> > > >>>
> > > >>> Hi Piotr,
> > > >>>
> > > >>> I haven't tried to validate actual running frequencies vs. requested
> > > >>> frequencies, but subjective performance and power consumption seem to
> > > >>> be in line with what I expect.
> > > >>
> > > >> well - my subjective l&f is that - currently - my rk3576 seems „slower" than i.e. 4xA53 h618.
> > > >
> > > > In my experience, native compilation of GCC 14 using 8 threads on
> > > > RK3576 (mainline with passive cooling and throttling enabled): 2 hours
> > > > 6 minutes, on RK3588 (mainline with passive cooling via Radxa Rock 5B
> > > > case and throttling enabled but never kicking in): 1 hour 10 minutes
> > >
> > > by curiosity i looked randomly on 3576 vs 3588:
> > > multithread passmark: 3675 (https://www.cpubenchmark.net/cpu.php?cpu=Rockchip+RK3576&id=6213)
> > > multithread passmark: 4530 (https://www.cpubenchmark.net/cpu.php?cpu=Rockchip+RK3588&id=4906)
> > >
> > > assuming 3588 as baseline, 3576 is approx 20% slower on multithread passmark (has ~0,8 comp power of 3588)
> > > 70 min compile on 3588 should take something like ~86min on 3576.
> > > In your case 126min compile on 3576 shows 3576 offers 0,55 comp power of 3588.
> > > Roughly 3576 should do this task in 40min less than you currently see i think
> > >
> > >
> > > > Can't see how u-boot would affect CPU speed in Linux, as long as you
> > > > use comparable ATF images. Do you use the same kernel and dtb in all
> > > > these cases? Also, what's your thermal setup?
> > >
> > > yes. in all cases only change was: uboot & atf
> > > thermal is based on recent collabora series (+ recent pooling fix for clocks return from throttling)
> > >
> > > >
> > > >
> > > > Not sure UX is a particularly good measure of CPU performance, as long
> > > > as you've got a properly accelerated DRM graphics pipeline. More
> > > > likely 2D/3D and memory.
> > >
> > > indeed.
> > > For quantified look i’m looking on v.simple approach to estimate real clock is http://uob-hpc.github.io/2017/11/22/arm-clock-freq.html
> > > by curiosity i looked what it reports on a53/a55/a72/a76 and it is surprisingly accurate :-)
> > > on mine 3576 with collabora uboot+mainline atf is hows 800MHz (and in perf. gov it seems to be constant)
> > >
> > > >
> > > > There might be some difference in how PVTPLL behaves on RK3576 vs.
> > > > RK3588. But frankly first I would check if you are using comparable
> > > > ATF implementations (e.g. upstream TF-A in both cases), kernels and
> > > > thermal environment :)
> > >
> > > all tests: the same 6.15.2 mainline + some collabora patches
> > >
> > > diffs were:
> > > 1.collabora uboot[1] + mainline atf 2.13
> > > 2.collabora uboot[1] + rockchip rkbin bl31 blob
> > > 3.vendor uboot (bin dump from friendlyelec ubuntu image)
> > >
> > > on 1/2 i see kind of issue with clock values (i.e. perf gov gives constant 800MHz on mainline atf).
> > > 3 seems to perform better - (i.e. perf gov gives constant 1500MHz so all is snappier/faster)
> >
> > There is indeed something weird going on. I've tried running sbc-bench
> > [1], and even though I observe dynamically varying CPU frequencies
> > after boot with schedutil governor, once sbc-bench switches the
> > governor to "performance" and goes through the OPPs in descending
> > frequency order, the CPUs seem to get stuck at the last applied low
> > frequency. Even after max frequency gets reverted from 408 MHz to
> > something higher, even after I switch the governor to something else -
> > no matter what. Only a reboot gets the higher frequencies 'unstuck'
> > for me.
> >
> > These are all observed at around 55C SoC temperature, so throttling is
> > not an issue. Regulators are stuck at 950000 uV - way above 700000 uV
> > that the 408 MHz OPP requires (and power readings seem to match: I'm
> > getting about 2.3W consumption at 408 MHz in idle vs. normal idle
> > reading of 1.4W at around 1 GHz).
> >
> > Not sure what's going on here, and I don't remember seeing anything
> > similar on RK3588. Thoughts welcome.
>
> This may once again be a "accidentally uses wrong clock IDs" type
> situation. The other possibility is that we're getting confused
> between what we think the clock rate is and what SCMI actually set
> the clock rate to.
>
> Things to check is whether the right clock controller (scmi vs cru)
> and the right clock id (check ATF source for this) is used.
Clock IDs in the kernel seem to match those in ATF, but I've noticed
what appears to be a buffer overflow in some of the SCMI clock names
defined in the opensource TF-A (thanks GCC 15 and its zealous
warnings):
alchark@alchark-surface ~/trusted-firmware-a $ make
CC=aarch64-unknown-linux-gnu-gcc PLAT=rk3576 -j12
Building rk3576
CC plat/rockchip/rk3576/scmi/rk3576_clk.c
plat/rockchip/rk3576/scmi/rk3576_clk.c:1102:154: error:
initializer-string for array of ‘char’ truncates NUL terminator but
destination lacks ‘nonstring’ attribute (17 chars into 16 available)
[-Werror=unterminated-string-initialization]
1102 | stimer0_root, p_100m_24m, clk_stimer0_root_info,
&clk_scmi_ops_com_critical, rk3576_common_rates, false, true);
|
^
plat/rockchip/rk3576/scmi/rk3576_clk.c:246:18: note: in definition of
macro ‘RK3576_SCMI_CLOCK_COM’
246 | .name = #_name,
\
| ^~~~~
plat/rockchip/rk3576/scmi/rk3576_clk.c:1103:154: error:
initializer-string for array of ‘char’ truncates NUL terminator but
destination lacks ‘nonstring’ attribute (17 chars into 16 available)
[-Werror=unterminated-string-initialization]
1103 | stimer1_root, p_100m_24m, clk_stimer1_root_info,
&clk_scmi_ops_com_critical, rk3576_common_rates, false, true);
|
^
plat/rockchip/rk3576/scmi/rk3576_clk.c:246:18: note: in definition of
macro ‘RK3576_SCMI_CLOCK_COM’
246 | .name = #_name,
\
| ^~~~~
plat/rockchip/rk3576/scmi/rk3576_clk.c:1107:155: error:
initializer-string for array of ‘char’ truncates NUL terminator but
destination lacks ‘nonstring’ attribute (17 chars into 16 available)
[-Werror=unterminated-string-initialization]
1107 | ka_crypto_s, p_350m_175m_116m_24m, clk_pka_crypto_s_info,
&clk_scmi_ops_com, rk3576_common_rates, false, true);
|
^
plat/rockchip/rk3576/scmi/rk3576_clk.c:246:18: note: in definition of
macro ‘RK3576_SCMI_CLOCK_COM’
246 | .name = #_name,
\
| ^~~~~
cc1: all warnings being treated as errors
make: *** [Makefile:1644:
/home/alchark/trusted-firmware-a/build/rk3576/release/bl31/rk3576_clk.o]
Error 1
And indeed, clock names such as "clk_stimer0_root" don't leave enough
space in .name for the null terminator (given that .name is defined as
char name[SCMI_CLOCK_NAME_LENGTH_MAX]; a.k.a. 16).
Not sure if the binary BL31 has a similar issue and if it can lead to
the observed weirdness in CPU frequency switching. Looping in XiaoDong
Huang who last touched those lines in the opensource TF-A - any
insights would be much appreciated!
Thanks a lot,
Alexey
^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [PATCH 1/4] arm64: dts: rockchip: list all CPU supplies on ArmSoM Sige5
2025-06-18 14:48 ` Alexey Charkov
@ 2025-06-20 16:02 ` Alexey Charkov
2025-06-21 19:35 ` Alexey Charkov
0 siblings, 1 reply; 44+ messages in thread
From: Alexey Charkov @ 2025-06-20 16:02 UTC (permalink / raw)
To: Nicolas Frattaroli, XiaoDong Huang
Cc: Piotr Oniszczuk, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Heiko Stuebner, devicetree, linux-arm-kernel, linux-rockchip,
linux-kernel, Jonas Karlman
On Wed, Jun 18, 2025 at 6:48 PM Alexey Charkov <alchark@gmail.com> wrote:
>
> On Wed, Jun 18, 2025 at 6:06 PM Nicolas Frattaroli
> <nicolas.frattaroli@collabora.com> wrote:
> >
> > Hello,
> >
> > +Cc Jonas Karlman as he is intimately familiar with RK3576 clock shenanigans by now,
> >
> > On Wednesday, 18 June 2025 15:51:45 Central European Summer Time Alexey Charkov wrote:
> > > On Sun, Jun 15, 2025 at 8:00 PM Piotr Oniszczuk
> > > <piotr.oniszczuk@gmail.com> wrote:
> > > >
> > > >
> > > >
> > > > > Wiadomość napisana przez Alexey Charkov <alchark@gmail.com> w dniu 9 cze 2025, o godz. 16:05:
> > > > >
> > > > > On Sun, Jun 8, 2025 at 11:24 AM Piotr Oniszczuk
> > > > > <piotr.oniszczuk@gmail.com> wrote:
> > > > >>> Wiadomość napisana przez Alexey Charkov <alchark@gmail.com> w dniu 5 cze 2025, o godz. 15:42:
> > > > >>>> Alexey,
> > > > >>>> I see you are using rk3576 board like me (nanopi-m5)
> > > > >>>> Have you on your board correctly working cpu dvfs?
> > > > >>>> I mean: [1][desired clocks reported by kernel sysfs are in pair with [2[]cur clocks?
> > > > >>>> In my case i see mine cpu lives totally on it’s own with dvfs:
> > > > >>>
> > > > >>> Hi Piotr,
> > > > >>>
> > > > >>> I haven't tried to validate actual running frequencies vs. requested
> > > > >>> frequencies, but subjective performance and power consumption seem to
> > > > >>> be in line with what I expect.
> > > > >>
> > > > >> well - my subjective l&f is that - currently - my rk3576 seems „slower" than i.e. 4xA53 h618.
> > > > >
> > > > > In my experience, native compilation of GCC 14 using 8 threads on
> > > > > RK3576 (mainline with passive cooling and throttling enabled): 2 hours
> > > > > 6 minutes, on RK3588 (mainline with passive cooling via Radxa Rock 5B
> > > > > case and throttling enabled but never kicking in): 1 hour 10 minutes
> > > >
> > > > by curiosity i looked randomly on 3576 vs 3588:
> > > > multithread passmark: 3675 (https://www.cpubenchmark.net/cpu.php?cpu=Rockchip+RK3576&id=6213)
> > > > multithread passmark: 4530 (https://www.cpubenchmark.net/cpu.php?cpu=Rockchip+RK3588&id=4906)
> > > >
> > > > assuming 3588 as baseline, 3576 is approx 20% slower on multithread passmark (has ~0,8 comp power of 3588)
> > > > 70 min compile on 3588 should take something like ~86min on 3576.
> > > > In your case 126min compile on 3576 shows 3576 offers 0,55 comp power of 3588.
> > > > Roughly 3576 should do this task in 40min less than you currently see i think
> > > >
> > > >
> > > > > Can't see how u-boot would affect CPU speed in Linux, as long as you
> > > > > use comparable ATF images. Do you use the same kernel and dtb in all
> > > > > these cases? Also, what's your thermal setup?
> > > >
> > > > yes. in all cases only change was: uboot & atf
> > > > thermal is based on recent collabora series (+ recent pooling fix for clocks return from throttling)
> > > >
> > > > >
> > > > >
> > > > > Not sure UX is a particularly good measure of CPU performance, as long
> > > > > as you've got a properly accelerated DRM graphics pipeline. More
> > > > > likely 2D/3D and memory.
> > > >
> > > > indeed.
> > > > For quantified look i’m looking on v.simple approach to estimate real clock is http://uob-hpc.github.io/2017/11/22/arm-clock-freq.html
> > > > by curiosity i looked what it reports on a53/a55/a72/a76 and it is surprisingly accurate :-)
> > > > on mine 3576 with collabora uboot+mainline atf is hows 800MHz (and in perf. gov it seems to be constant)
> > > >
> > > > >
> > > > > There might be some difference in how PVTPLL behaves on RK3576 vs.
> > > > > RK3588. But frankly first I would check if you are using comparable
> > > > > ATF implementations (e.g. upstream TF-A in both cases), kernels and
> > > > > thermal environment :)
> > > >
> > > > all tests: the same 6.15.2 mainline + some collabora patches
> > > >
> > > > diffs were:
> > > > 1.collabora uboot[1] + mainline atf 2.13
> > > > 2.collabora uboot[1] + rockchip rkbin bl31 blob
> > > > 3.vendor uboot (bin dump from friendlyelec ubuntu image)
> > > >
> > > > on 1/2 i see kind of issue with clock values (i.e. perf gov gives constant 800MHz on mainline atf).
> > > > 3 seems to perform better - (i.e. perf gov gives constant 1500MHz so all is snappier/faster)
> > >
> > > There is indeed something weird going on. I've tried running sbc-bench
> > > [1], and even though I observe dynamically varying CPU frequencies
> > > after boot with schedutil governor, once sbc-bench switches the
> > > governor to "performance" and goes through the OPPs in descending
> > > frequency order, the CPUs seem to get stuck at the last applied low
> > > frequency. Even after max frequency gets reverted from 408 MHz to
> > > something higher, even after I switch the governor to something else -
> > > no matter what. Only a reboot gets the higher frequencies 'unstuck'
> > > for me.
> > >
> > > These are all observed at around 55C SoC temperature, so throttling is
> > > not an issue. Regulators are stuck at 950000 uV - way above 700000 uV
> > > that the 408 MHz OPP requires (and power readings seem to match: I'm
> > > getting about 2.3W consumption at 408 MHz in idle vs. normal idle
> > > reading of 1.4W at around 1 GHz).
> > >
> > > Not sure what's going on here, and I don't remember seeing anything
> > > similar on RK3588. Thoughts welcome.
> >
> > This may once again be a "accidentally uses wrong clock IDs" type
> > situation. The other possibility is that we're getting confused
> > between what we think the clock rate is and what SCMI actually set
> > the clock rate to.
> >
> > Things to check is whether the right clock controller (scmi vs cru)
> > and the right clock id (check ATF source for this) is used.
>
> Clock IDs in the kernel seem to match those in ATF, but I've noticed
> what appears to be a buffer overflow in some of the SCMI clock names
> defined in the opensource TF-A (thanks GCC 15 and its zealous
> warnings):
After some more testing, I tend to confirm what Piotr observed
earlier. Namely, frequency scaling acts weird on any ATF version (be
it binary BL31 or opensource TF-A), as long as mainline u-boot is
used. Using the u-boot binary extracted from the ArmSoM QWRT image
does not lead to "stuck" CPU frequencies when running sbc-bench.
I'm getting this with the exact same kernel build (6.16-rc1 with some
Sige5 related patches, namely v2 of this series, Nicolas' USB
enablement series and TSADC). The only other difference is that the
binary u-boot doesn't have EFI support, so I had to boot into the
ARM64 uncompressed Image instead of vmlinuz.efi, but those were both
taken from the same build.
What I'm observing during the sbc-bench run:
- It switches the cpufreq governor from schedutil to performance
- It goes through all CPU OPPs in descending frequency order
--- While it does that when booted using mainline u-boot +
vmlinuz.efi: "hardware limits" line in "cpupower -c 0,4
frequency-info" changes with each OPP change (the max frequency
getting reduced sequentially), then it resets to the initial full
range, but the actual frequency stays stuck at the lowest possible
value
--- While it does that when booted using binary u-boot + Image:
"hardware limits" line in "cpupower -c 0,4 frequency-info" doesn't
change, but the actual frequency gets reduced sequentially. Then after
the iteration over all OPPs is completed it returns to the highest
possible value, and adjusts dynamically based on thermal throttling as
the benchmark progresses
So it seems that it's not really linked to SCMI clocks or PVTPLL per
se, but rather what the binary u-boot configures differently vs.
mainline before the kernel takes over, or something in other firmware
services that the binary u-boot provides (?)
I'm wondering if there is any clock related functionality in the
OP-TEE? I didn't have any OP-TEE image in my mainline u-boot builds
(frankly, I don't even know where to grab one), but the binary u-boot
from ArmSoM advertises the following:
I/TC: OP-TEE version: 3.13.0-791-g185dc3c92 #hisping.lin (gcc version
10.2.1 20201103 (GNU Toolchain for the A-profile Architecture
10.2-2020.11 (arm-10.16))) #2 Tue Apr 16 11:05:25 CST 2024 aarch64,
fwver: v1.01
Any thoughts would be much appreciated.
Best regards,
Alexey
^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [PATCH 1/4] arm64: dts: rockchip: list all CPU supplies on ArmSoM Sige5
2025-06-20 16:02 ` Alexey Charkov
@ 2025-06-21 19:35 ` Alexey Charkov
2025-06-21 19:44 ` Heiko Stuebner
0 siblings, 1 reply; 44+ messages in thread
From: Alexey Charkov @ 2025-06-21 19:35 UTC (permalink / raw)
To: Nicolas Frattaroli, XiaoDong Huang
Cc: Piotr Oniszczuk, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Heiko Stuebner, devicetree, linux-arm-kernel, linux-rockchip,
linux-kernel, Jonas Karlman
On Fri, Jun 20, 2025 at 8:02 PM Alexey Charkov <alchark@gmail.com> wrote:
>
> On Wed, Jun 18, 2025 at 6:48 PM Alexey Charkov <alchark@gmail.com> wrote:
> >
> > On Wed, Jun 18, 2025 at 6:06 PM Nicolas Frattaroli
> > <nicolas.frattaroli@collabora.com> wrote:
> > >
> > > Hello,
> > >
> > > +Cc Jonas Karlman as he is intimately familiar with RK3576 clock shenanigans by now,
> > >
> > > On Wednesday, 18 June 2025 15:51:45 Central European Summer Time Alexey Charkov wrote:
> > > > On Sun, Jun 15, 2025 at 8:00 PM Piotr Oniszczuk
> > > > <piotr.oniszczuk@gmail.com> wrote:
> > > > >
> > > > >
> > > > >
> > > > > > Wiadomość napisana przez Alexey Charkov <alchark@gmail.com> w dniu 9 cze 2025, o godz. 16:05:
> > > > > >
> > > > > > On Sun, Jun 8, 2025 at 11:24 AM Piotr Oniszczuk
> > > > > > <piotr.oniszczuk@gmail.com> wrote:
> > > > > >>> Wiadomość napisana przez Alexey Charkov <alchark@gmail.com> w dniu 5 cze 2025, o godz. 15:42:
> > > > > >>>> Alexey,
> > > > > >>>> I see you are using rk3576 board like me (nanopi-m5)
> > > > > >>>> Have you on your board correctly working cpu dvfs?
> > > > > >>>> I mean: [1][desired clocks reported by kernel sysfs are in pair with [2[]cur clocks?
> > > > > >>>> In my case i see mine cpu lives totally on it’s own with dvfs:
> > > > > >>>
> > > > > >>> Hi Piotr,
> > > > > >>>
> > > > > >>> I haven't tried to validate actual running frequencies vs. requested
> > > > > >>> frequencies, but subjective performance and power consumption seem to
> > > > > >>> be in line with what I expect.
> > > > > >>
> > > > > >> well - my subjective l&f is that - currently - my rk3576 seems „slower" than i.e. 4xA53 h618.
> > > > > >
> > > > > > In my experience, native compilation of GCC 14 using 8 threads on
> > > > > > RK3576 (mainline with passive cooling and throttling enabled): 2 hours
> > > > > > 6 minutes, on RK3588 (mainline with passive cooling via Radxa Rock 5B
> > > > > > case and throttling enabled but never kicking in): 1 hour 10 minutes
> > > > >
> > > > > by curiosity i looked randomly on 3576 vs 3588:
> > > > > multithread passmark: 3675 (https://www.cpubenchmark.net/cpu.php?cpu=Rockchip+RK3576&id=6213)
> > > > > multithread passmark: 4530 (https://www.cpubenchmark.net/cpu.php?cpu=Rockchip+RK3588&id=4906)
> > > > >
> > > > > assuming 3588 as baseline, 3576 is approx 20% slower on multithread passmark (has ~0,8 comp power of 3588)
> > > > > 70 min compile on 3588 should take something like ~86min on 3576.
> > > > > In your case 126min compile on 3576 shows 3576 offers 0,55 comp power of 3588.
> > > > > Roughly 3576 should do this task in 40min less than you currently see i think
> > > > >
> > > > >
> > > > > > Can't see how u-boot would affect CPU speed in Linux, as long as you
> > > > > > use comparable ATF images. Do you use the same kernel and dtb in all
> > > > > > these cases? Also, what's your thermal setup?
> > > > >
> > > > > yes. in all cases only change was: uboot & atf
> > > > > thermal is based on recent collabora series (+ recent pooling fix for clocks return from throttling)
> > > > >
> > > > > >
> > > > > >
> > > > > > Not sure UX is a particularly good measure of CPU performance, as long
> > > > > > as you've got a properly accelerated DRM graphics pipeline. More
> > > > > > likely 2D/3D and memory.
> > > > >
> > > > > indeed.
> > > > > For quantified look i’m looking on v.simple approach to estimate real clock is http://uob-hpc.github.io/2017/11/22/arm-clock-freq.html
> > > > > by curiosity i looked what it reports on a53/a55/a72/a76 and it is surprisingly accurate :-)
> > > > > on mine 3576 with collabora uboot+mainline atf is hows 800MHz (and in perf. gov it seems to be constant)
> > > > >
> > > > > >
> > > > > > There might be some difference in how PVTPLL behaves on RK3576 vs.
> > > > > > RK3588. But frankly first I would check if you are using comparable
> > > > > > ATF implementations (e.g. upstream TF-A in both cases), kernels and
> > > > > > thermal environment :)
> > > > >
> > > > > all tests: the same 6.15.2 mainline + some collabora patches
> > > > >
> > > > > diffs were:
> > > > > 1.collabora uboot[1] + mainline atf 2.13
> > > > > 2.collabora uboot[1] + rockchip rkbin bl31 blob
> > > > > 3.vendor uboot (bin dump from friendlyelec ubuntu image)
> > > > >
> > > > > on 1/2 i see kind of issue with clock values (i.e. perf gov gives constant 800MHz on mainline atf).
> > > > > 3 seems to perform better - (i.e. perf gov gives constant 1500MHz so all is snappier/faster)
> > > >
> > > > There is indeed something weird going on. I've tried running sbc-bench
> > > > [1], and even though I observe dynamically varying CPU frequencies
> > > > after boot with schedutil governor, once sbc-bench switches the
> > > > governor to "performance" and goes through the OPPs in descending
> > > > frequency order, the CPUs seem to get stuck at the last applied low
> > > > frequency. Even after max frequency gets reverted from 408 MHz to
> > > > something higher, even after I switch the governor to something else -
> > > > no matter what. Only a reboot gets the higher frequencies 'unstuck'
> > > > for me.
> > > >
> > > > These are all observed at around 55C SoC temperature, so throttling is
> > > > not an issue. Regulators are stuck at 950000 uV - way above 700000 uV
> > > > that the 408 MHz OPP requires (and power readings seem to match: I'm
> > > > getting about 2.3W consumption at 408 MHz in idle vs. normal idle
> > > > reading of 1.4W at around 1 GHz).
> > > >
> > > > Not sure what's going on here, and I don't remember seeing anything
> > > > similar on RK3588. Thoughts welcome.
> > >
> > > This may once again be a "accidentally uses wrong clock IDs" type
> > > situation. The other possibility is that we're getting confused
> > > between what we think the clock rate is and what SCMI actually set
> > > the clock rate to.
> > >
> > > Things to check is whether the right clock controller (scmi vs cru)
> > > and the right clock id (check ATF source for this) is used.
> >
> > Clock IDs in the kernel seem to match those in ATF, but I've noticed
> > what appears to be a buffer overflow in some of the SCMI clock names
> > defined in the opensource TF-A (thanks GCC 15 and its zealous
> > warnings):
>
> After some more testing, I tend to confirm what Piotr observed
> earlier. Namely, frequency scaling acts weird on any ATF version (be
> it binary BL31 or opensource TF-A), as long as mainline u-boot is
> used. Using the u-boot binary extracted from the ArmSoM QWRT image
> does not lead to "stuck" CPU frequencies when running sbc-bench.
>
> I'm getting this with the exact same kernel build (6.16-rc1 with some
> Sige5 related patches, namely v2 of this series, Nicolas' USB
> enablement series and TSADC). The only other difference is that the
> binary u-boot doesn't have EFI support, so I had to boot into the
> ARM64 uncompressed Image instead of vmlinuz.efi, but those were both
> taken from the same build.
>
> What I'm observing during the sbc-bench run:
> - It switches the cpufreq governor from schedutil to performance
> - It goes through all CPU OPPs in descending frequency order
> --- While it does that when booted using mainline u-boot +
> vmlinuz.efi: "hardware limits" line in "cpupower -c 0,4
> frequency-info" changes with each OPP change (the max frequency
> getting reduced sequentially), then it resets to the initial full
> range, but the actual frequency stays stuck at the lowest possible
> value
> --- While it does that when booted using binary u-boot + Image:
> "hardware limits" line in "cpupower -c 0,4 frequency-info" doesn't
> change, but the actual frequency gets reduced sequentially. Then after
> the iteration over all OPPs is completed it returns to the highest
> possible value, and adjusts dynamically based on thermal throttling as
> the benchmark progresses
Slight correction: it's not the "hardware limits" line, but rather
"current policy".
Note that booting mainline u-boot in non-EFI mode (using plain Image)
doesn't change the results above.
> So it seems that it's not really linked to SCMI clocks or PVTPLL per
> se, but rather what the binary u-boot configures differently vs.
> mainline before the kernel takes over, or something in other firmware
> services that the binary u-boot provides (?)
>
> I'm wondering if there is any clock related functionality in the
> OP-TEE? I didn't have any OP-TEE image in my mainline u-boot builds
> (frankly, I don't even know where to grab one), but the binary u-boot
> from ArmSoM advertises the following:
>
> I/TC: OP-TEE version: 3.13.0-791-g185dc3c92 #hisping.lin (gcc version
> 10.2.1 20201103 (GNU Toolchain for the A-profile Architecture
> 10.2-2020.11 (arm-10.16))) #2 Tue Apr 16 11:05:25 CST 2024 aarch64,
> fwver: v1.01
FTR: I've tried to bluntly wrap rk3576_bl32_v1.05.bin into an ELF file
using the following linker script and feed it as $TEE to the mainline
u-boot build, but the resulting u-boot-rockchip.bin gets stuck at boot
after checking hashes of ATF images, so I'm still lost as to how one
can check if the OP-TEE has any influence on the cpufreq behavior.
---
ENTRY(_binary_rk3576_bl32_v1_05_bin_start);
SECTIONS
{
. = 0x08400000;
.data : {
*(.data)
}
}
---
0x08400000 is the addr listed for BL32 in RK3576TRUST.ini in rkbin.
Best regards,
Alexey
^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [PATCH 1/4] arm64: dts: rockchip: list all CPU supplies on ArmSoM Sige5
2025-06-21 19:35 ` Alexey Charkov
@ 2025-06-21 19:44 ` Heiko Stuebner
2025-06-21 21:21 ` Alexey Charkov
0 siblings, 1 reply; 44+ messages in thread
From: Heiko Stuebner @ 2025-06-21 19:44 UTC (permalink / raw)
To: Nicolas Frattaroli, XiaoDong Huang, Alexey Charkov
Cc: Piotr Oniszczuk, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
devicetree, linux-arm-kernel, linux-rockchip, linux-kernel,
Jonas Karlman
Am Samstag, 21. Juni 2025, 21:35:56 Mitteleuropäische Sommerzeit schrieb Alexey Charkov:
> On Fri, Jun 20, 2025 at 8:02 PM Alexey Charkov <alchark@gmail.com> wrote:
> >
> > On Wed, Jun 18, 2025 at 6:48 PM Alexey Charkov <alchark@gmail.com> wrote:
> > >
> > > On Wed, Jun 18, 2025 at 6:06 PM Nicolas Frattaroli
> > > <nicolas.frattaroli@collabora.com> wrote:
> > > >
> > > > Hello,
> > > >
> > > > +Cc Jonas Karlman as he is intimately familiar with RK3576 clock shenanigans by now,
> > > >
> > > > On Wednesday, 18 June 2025 15:51:45 Central European Summer Time Alexey Charkov wrote:
> > > > > On Sun, Jun 15, 2025 at 8:00 PM Piotr Oniszczuk
> > > > > <piotr.oniszczuk@gmail.com> wrote:
> > > > > >
> > > > > >
> > > > > >
> > > > > > > Wiadomość napisana przez Alexey Charkov <alchark@gmail.com> w dniu 9 cze 2025, o godz. 16:05:
> > > > > > >
> > > > > > > On Sun, Jun 8, 2025 at 11:24 AM Piotr Oniszczuk
> > > > > > > <piotr.oniszczuk@gmail.com> wrote:
> > > > > > >>> Wiadomość napisana przez Alexey Charkov <alchark@gmail.com> w dniu 5 cze 2025, o godz. 15:42:
> > > > > > >>>> Alexey,
> > > > > > >>>> I see you are using rk3576 board like me (nanopi-m5)
> > > > > > >>>> Have you on your board correctly working cpu dvfs?
> > > > > > >>>> I mean: [1][desired clocks reported by kernel sysfs are in pair with [2[]cur clocks?
> > > > > > >>>> In my case i see mine cpu lives totally on it’s own with dvfs:
> > > > > > >>>
> > > > > > >>> Hi Piotr,
> > > > > > >>>
> > > > > > >>> I haven't tried to validate actual running frequencies vs. requested
> > > > > > >>> frequencies, but subjective performance and power consumption seem to
> > > > > > >>> be in line with what I expect.
> > > > > > >>
> > > > > > >> well - my subjective l&f is that - currently - my rk3576 seems „slower" than i.e. 4xA53 h618.
> > > > > > >
> > > > > > > In my experience, native compilation of GCC 14 using 8 threads on
> > > > > > > RK3576 (mainline with passive cooling and throttling enabled): 2 hours
> > > > > > > 6 minutes, on RK3588 (mainline with passive cooling via Radxa Rock 5B
> > > > > > > case and throttling enabled but never kicking in): 1 hour 10 minutes
> > > > > >
> > > > > > by curiosity i looked randomly on 3576 vs 3588:
> > > > > > multithread passmark: 3675 (https://www.cpubenchmark.net/cpu.php?cpu=Rockchip+RK3576&id=6213)
> > > > > > multithread passmark: 4530 (https://www.cpubenchmark.net/cpu.php?cpu=Rockchip+RK3588&id=4906)
> > > > > >
> > > > > > assuming 3588 as baseline, 3576 is approx 20% slower on multithread passmark (has ~0,8 comp power of 3588)
> > > > > > 70 min compile on 3588 should take something like ~86min on 3576.
> > > > > > In your case 126min compile on 3576 shows 3576 offers 0,55 comp power of 3588.
> > > > > > Roughly 3576 should do this task in 40min less than you currently see i think
> > > > > >
> > > > > >
> > > > > > > Can't see how u-boot would affect CPU speed in Linux, as long as you
> > > > > > > use comparable ATF images. Do you use the same kernel and dtb in all
> > > > > > > these cases? Also, what's your thermal setup?
> > > > > >
> > > > > > yes. in all cases only change was: uboot & atf
> > > > > > thermal is based on recent collabora series (+ recent pooling fix for clocks return from throttling)
> > > > > >
> > > > > > >
> > > > > > >
> > > > > > > Not sure UX is a particularly good measure of CPU performance, as long
> > > > > > > as you've got a properly accelerated DRM graphics pipeline. More
> > > > > > > likely 2D/3D and memory.
> > > > > >
> > > > > > indeed.
> > > > > > For quantified look i’m looking on v.simple approach to estimate real clock is http://uob-hpc.github.io/2017/11/22/arm-clock-freq.html
> > > > > > by curiosity i looked what it reports on a53/a55/a72/a76 and it is surprisingly accurate :-)
> > > > > > on mine 3576 with collabora uboot+mainline atf is hows 800MHz (and in perf. gov it seems to be constant)
> > > > > >
> > > > > > >
> > > > > > > There might be some difference in how PVTPLL behaves on RK3576 vs.
> > > > > > > RK3588. But frankly first I would check if you are using comparable
> > > > > > > ATF implementations (e.g. upstream TF-A in both cases), kernels and
> > > > > > > thermal environment :)
> > > > > >
> > > > > > all tests: the same 6.15.2 mainline + some collabora patches
> > > > > >
> > > > > > diffs were:
> > > > > > 1.collabora uboot[1] + mainline atf 2.13
> > > > > > 2.collabora uboot[1] + rockchip rkbin bl31 blob
> > > > > > 3.vendor uboot (bin dump from friendlyelec ubuntu image)
> > > > > >
> > > > > > on 1/2 i see kind of issue with clock values (i.e. perf gov gives constant 800MHz on mainline atf).
> > > > > > 3 seems to perform better - (i.e. perf gov gives constant 1500MHz so all is snappier/faster)
> > > > >
> > > > > There is indeed something weird going on. I've tried running sbc-bench
> > > > > [1], and even though I observe dynamically varying CPU frequencies
> > > > > after boot with schedutil governor, once sbc-bench switches the
> > > > > governor to "performance" and goes through the OPPs in descending
> > > > > frequency order, the CPUs seem to get stuck at the last applied low
> > > > > frequency. Even after max frequency gets reverted from 408 MHz to
> > > > > something higher, even after I switch the governor to something else -
> > > > > no matter what. Only a reboot gets the higher frequencies 'unstuck'
> > > > > for me.
> > > > >
> > > > > These are all observed at around 55C SoC temperature, so throttling is
> > > > > not an issue. Regulators are stuck at 950000 uV - way above 700000 uV
> > > > > that the 408 MHz OPP requires (and power readings seem to match: I'm
> > > > > getting about 2.3W consumption at 408 MHz in idle vs. normal idle
> > > > > reading of 1.4W at around 1 GHz).
> > > > >
> > > > > Not sure what's going on here, and I don't remember seeing anything
> > > > > similar on RK3588. Thoughts welcome.
> > > >
> > > > This may once again be a "accidentally uses wrong clock IDs" type
> > > > situation. The other possibility is that we're getting confused
> > > > between what we think the clock rate is and what SCMI actually set
> > > > the clock rate to.
> > > >
> > > > Things to check is whether the right clock controller (scmi vs cru)
> > > > and the right clock id (check ATF source for this) is used.
> > >
> > > Clock IDs in the kernel seem to match those in ATF, but I've noticed
> > > what appears to be a buffer overflow in some of the SCMI clock names
> > > defined in the opensource TF-A (thanks GCC 15 and its zealous
> > > warnings):
> >
> > After some more testing, I tend to confirm what Piotr observed
> > earlier. Namely, frequency scaling acts weird on any ATF version (be
> > it binary BL31 or opensource TF-A), as long as mainline u-boot is
> > used. Using the u-boot binary extracted from the ArmSoM QWRT image
> > does not lead to "stuck" CPU frequencies when running sbc-bench.
> >
> > I'm getting this with the exact same kernel build (6.16-rc1 with some
> > Sige5 related patches, namely v2 of this series, Nicolas' USB
> > enablement series and TSADC). The only other difference is that the
> > binary u-boot doesn't have EFI support, so I had to boot into the
> > ARM64 uncompressed Image instead of vmlinuz.efi, but those were both
> > taken from the same build.
> >
> > What I'm observing during the sbc-bench run:
> > - It switches the cpufreq governor from schedutil to performance
> > - It goes through all CPU OPPs in descending frequency order
> > --- While it does that when booted using mainline u-boot +
> > vmlinuz.efi: "hardware limits" line in "cpupower -c 0,4
> > frequency-info" changes with each OPP change (the max frequency
> > getting reduced sequentially), then it resets to the initial full
> > range, but the actual frequency stays stuck at the lowest possible
> > value
> > --- While it does that when booted using binary u-boot + Image:
> > "hardware limits" line in "cpupower -c 0,4 frequency-info" doesn't
> > change, but the actual frequency gets reduced sequentially. Then after
> > the iteration over all OPPs is completed it returns to the highest
> > possible value, and adjusts dynamically based on thermal throttling as
> > the benchmark progresses
>
> Slight correction: it's not the "hardware limits" line, but rather
> "current policy".
>
> Note that booting mainline u-boot in non-EFI mode (using plain Image)
> doesn't change the results above.
I'm in a similar boat, while trying to make DSI run on the rk3576.
Andy from Rockchip was able to make it work "just" by using vendor-
firmware - while using mainline u-boot (with both mainline TF-A
or vendor TF-A) produces just black output.
I think when I did the mainline u-boot thing I took the "vendor"-code
from the armbian rk3576 vendor-u-boot ... but that actually may differ
from what the vendors provided?
Because at least looking at that code did not show any clock differences
to me.
> > So it seems that it's not really linked to SCMI clocks or PVTPLL per
> > se, but rather what the binary u-boot configures differently vs.
> > mainline before the kernel takes over, or something in other firmware
> > services that the binary u-boot provides (?)
> >
> > I'm wondering if there is any clock related functionality in the
> > OP-TEE? I didn't have any OP-TEE image in my mainline u-boot builds
> > (frankly, I don't even know where to grab one), but the binary u-boot
> > from ArmSoM advertises the following:
> >
> > I/TC: OP-TEE version: 3.13.0-791-g185dc3c92 #hisping.lin (gcc version
> > 10.2.1 20201103 (GNU Toolchain for the A-profile Architecture
> > 10.2-2020.11 (arm-10.16))) #2 Tue Apr 16 11:05:25 CST 2024 aarch64,
> > fwver: v1.01
>
> FTR: I've tried to bluntly wrap rk3576_bl32_v1.05.bin into an ELF file
> using the following linker script and feed it as $TEE to the mainline
> u-boot build, but the resulting u-boot-rockchip.bin gets stuck at boot
> after checking hashes of ATF images, so I'm still lost as to how one
> can check if the OP-TEE has any influence on the cpufreq behavior.
>
> ---
> ENTRY(_binary_rk3576_bl32_v1_05_bin_start);
>
> SECTIONS
> {
> . = 0x08400000;
> .data : {
> *(.data)
> }
> }
> ---
>
> 0x08400000 is the addr listed for BL32 in RK3576TRUST.ini in rkbin.
>
> Best regards,
> Alexey
>
^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [PATCH 1/4] arm64: dts: rockchip: list all CPU supplies on ArmSoM Sige5
2025-06-21 19:44 ` Heiko Stuebner
@ 2025-06-21 21:21 ` Alexey Charkov
2025-06-22 13:48 ` Heiko Stuebner
0 siblings, 1 reply; 44+ messages in thread
From: Alexey Charkov @ 2025-06-21 21:21 UTC (permalink / raw)
To: Heiko Stuebner
Cc: Nicolas Frattaroli, XiaoDong Huang, Piotr Oniszczuk, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, devicetree, linux-arm-kernel,
linux-rockchip, linux-kernel, Jonas Karlman
On Sat, Jun 21, 2025 at 11:44 PM Heiko Stuebner <heiko@sntech.de> wrote:
>
> Am Samstag, 21. Juni 2025, 21:35:56 Mitteleuropäische Sommerzeit schrieb Alexey Charkov:
> > On Fri, Jun 20, 2025 at 8:02 PM Alexey Charkov <alchark@gmail.com> wrote:
> > >
> > > On Wed, Jun 18, 2025 at 6:48 PM Alexey Charkov <alchark@gmail.com> wrote:
> > > >
> > > > On Wed, Jun 18, 2025 at 6:06 PM Nicolas Frattaroli
> > > > <nicolas.frattaroli@collabora.com> wrote:
> > > > >
> > > > > Hello,
> > > > >
> > > > > +Cc Jonas Karlman as he is intimately familiar with RK3576 clock shenanigans by now,
> > > > >
> > > > > On Wednesday, 18 June 2025 15:51:45 Central European Summer Time Alexey Charkov wrote:
> > > > > > On Sun, Jun 15, 2025 at 8:00 PM Piotr Oniszczuk
> > > > > > <piotr.oniszczuk@gmail.com> wrote:
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > > Wiadomość napisana przez Alexey Charkov <alchark@gmail.com> w dniu 9 cze 2025, o godz. 16:05:
> > > > > > > >
> > > > > > > > On Sun, Jun 8, 2025 at 11:24 AM Piotr Oniszczuk
> > > > > > > > <piotr.oniszczuk@gmail.com> wrote:
> > > > > > > >>> Wiadomość napisana przez Alexey Charkov <alchark@gmail.com> w dniu 5 cze 2025, o godz. 15:42:
> > > > > > > >>>> Alexey,
> > > > > > > >>>> I see you are using rk3576 board like me (nanopi-m5)
> > > > > > > >>>> Have you on your board correctly working cpu dvfs?
> > > > > > > >>>> I mean: [1][desired clocks reported by kernel sysfs are in pair with [2[]cur clocks?
> > > > > > > >>>> In my case i see mine cpu lives totally on it’s own with dvfs:
> > > > > > > >>>
> > > > > > > >>> Hi Piotr,
> > > > > > > >>>
> > > > > > > >>> I haven't tried to validate actual running frequencies vs. requested
> > > > > > > >>> frequencies, but subjective performance and power consumption seem to
> > > > > > > >>> be in line with what I expect.
> > > > > > > >>
> > > > > > > >> well - my subjective l&f is that - currently - my rk3576 seems „slower" than i.e. 4xA53 h618.
> > > > > > > >
> > > > > > > > In my experience, native compilation of GCC 14 using 8 threads on
> > > > > > > > RK3576 (mainline with passive cooling and throttling enabled): 2 hours
> > > > > > > > 6 minutes, on RK3588 (mainline with passive cooling via Radxa Rock 5B
> > > > > > > > case and throttling enabled but never kicking in): 1 hour 10 minutes
> > > > > > >
> > > > > > > by curiosity i looked randomly on 3576 vs 3588:
> > > > > > > multithread passmark: 3675 (https://www.cpubenchmark.net/cpu.php?cpu=Rockchip+RK3576&id=6213)
> > > > > > > multithread passmark: 4530 (https://www.cpubenchmark.net/cpu.php?cpu=Rockchip+RK3588&id=4906)
> > > > > > >
> > > > > > > assuming 3588 as baseline, 3576 is approx 20% slower on multithread passmark (has ~0,8 comp power of 3588)
> > > > > > > 70 min compile on 3588 should take something like ~86min on 3576.
> > > > > > > In your case 126min compile on 3576 shows 3576 offers 0,55 comp power of 3588.
> > > > > > > Roughly 3576 should do this task in 40min less than you currently see i think
> > > > > > >
> > > > > > >
> > > > > > > > Can't see how u-boot would affect CPU speed in Linux, as long as you
> > > > > > > > use comparable ATF images. Do you use the same kernel and dtb in all
> > > > > > > > these cases? Also, what's your thermal setup?
> > > > > > >
> > > > > > > yes. in all cases only change was: uboot & atf
> > > > > > > thermal is based on recent collabora series (+ recent pooling fix for clocks return from throttling)
> > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > Not sure UX is a particularly good measure of CPU performance, as long
> > > > > > > > as you've got a properly accelerated DRM graphics pipeline. More
> > > > > > > > likely 2D/3D and memory.
> > > > > > >
> > > > > > > indeed.
> > > > > > > For quantified look i’m looking on v.simple approach to estimate real clock is http://uob-hpc.github.io/2017/11/22/arm-clock-freq.html
> > > > > > > by curiosity i looked what it reports on a53/a55/a72/a76 and it is surprisingly accurate :-)
> > > > > > > on mine 3576 with collabora uboot+mainline atf is hows 800MHz (and in perf. gov it seems to be constant)
> > > > > > >
> > > > > > > >
> > > > > > > > There might be some difference in how PVTPLL behaves on RK3576 vs.
> > > > > > > > RK3588. But frankly first I would check if you are using comparable
> > > > > > > > ATF implementations (e.g. upstream TF-A in both cases), kernels and
> > > > > > > > thermal environment :)
> > > > > > >
> > > > > > > all tests: the same 6.15.2 mainline + some collabora patches
> > > > > > >
> > > > > > > diffs were:
> > > > > > > 1.collabora uboot[1] + mainline atf 2.13
> > > > > > > 2.collabora uboot[1] + rockchip rkbin bl31 blob
> > > > > > > 3.vendor uboot (bin dump from friendlyelec ubuntu image)
> > > > > > >
> > > > > > > on 1/2 i see kind of issue with clock values (i.e. perf gov gives constant 800MHz on mainline atf).
> > > > > > > 3 seems to perform better - (i.e. perf gov gives constant 1500MHz so all is snappier/faster)
> > > > > >
> > > > > > There is indeed something weird going on. I've tried running sbc-bench
> > > > > > [1], and even though I observe dynamically varying CPU frequencies
> > > > > > after boot with schedutil governor, once sbc-bench switches the
> > > > > > governor to "performance" and goes through the OPPs in descending
> > > > > > frequency order, the CPUs seem to get stuck at the last applied low
> > > > > > frequency. Even after max frequency gets reverted from 408 MHz to
> > > > > > something higher, even after I switch the governor to something else -
> > > > > > no matter what. Only a reboot gets the higher frequencies 'unstuck'
> > > > > > for me.
> > > > > >
> > > > > > These are all observed at around 55C SoC temperature, so throttling is
> > > > > > not an issue. Regulators are stuck at 950000 uV - way above 700000 uV
> > > > > > that the 408 MHz OPP requires (and power readings seem to match: I'm
> > > > > > getting about 2.3W consumption at 408 MHz in idle vs. normal idle
> > > > > > reading of 1.4W at around 1 GHz).
> > > > > >
> > > > > > Not sure what's going on here, and I don't remember seeing anything
> > > > > > similar on RK3588. Thoughts welcome.
> > > > >
> > > > > This may once again be a "accidentally uses wrong clock IDs" type
> > > > > situation. The other possibility is that we're getting confused
> > > > > between what we think the clock rate is and what SCMI actually set
> > > > > the clock rate to.
> > > > >
> > > > > Things to check is whether the right clock controller (scmi vs cru)
> > > > > and the right clock id (check ATF source for this) is used.
> > > >
> > > > Clock IDs in the kernel seem to match those in ATF, but I've noticed
> > > > what appears to be a buffer overflow in some of the SCMI clock names
> > > > defined in the opensource TF-A (thanks GCC 15 and its zealous
> > > > warnings):
> > >
> > > After some more testing, I tend to confirm what Piotr observed
> > > earlier. Namely, frequency scaling acts weird on any ATF version (be
> > > it binary BL31 or opensource TF-A), as long as mainline u-boot is
> > > used. Using the u-boot binary extracted from the ArmSoM QWRT image
> > > does not lead to "stuck" CPU frequencies when running sbc-bench.
> > >
> > > I'm getting this with the exact same kernel build (6.16-rc1 with some
> > > Sige5 related patches, namely v2 of this series, Nicolas' USB
> > > enablement series and TSADC). The only other difference is that the
> > > binary u-boot doesn't have EFI support, so I had to boot into the
> > > ARM64 uncompressed Image instead of vmlinuz.efi, but those were both
> > > taken from the same build.
> > >
> > > What I'm observing during the sbc-bench run:
> > > - It switches the cpufreq governor from schedutil to performance
> > > - It goes through all CPU OPPs in descending frequency order
> > > --- While it does that when booted using mainline u-boot +
> > > vmlinuz.efi: "hardware limits" line in "cpupower -c 0,4
> > > frequency-info" changes with each OPP change (the max frequency
> > > getting reduced sequentially), then it resets to the initial full
> > > range, but the actual frequency stays stuck at the lowest possible
> > > value
> > > --- While it does that when booted using binary u-boot + Image:
> > > "hardware limits" line in "cpupower -c 0,4 frequency-info" doesn't
> > > change, but the actual frequency gets reduced sequentially. Then after
> > > the iteration over all OPPs is completed it returns to the highest
> > > possible value, and adjusts dynamically based on thermal throttling as
> > > the benchmark progresses
> >
> > Slight correction: it's not the "hardware limits" line, but rather
> > "current policy".
> >
> > Note that booting mainline u-boot in non-EFI mode (using plain Image)
> > doesn't change the results above.
>
> I'm in a similar boat, while trying to make DSI run on the rk3576.
> Andy from Rockchip was able to make it work "just" by using vendor-
> firmware - while using mainline u-boot (with both mainline TF-A
> or vendor TF-A) produces just black output.
>
> I think when I did the mainline u-boot thing I took the "vendor"-code
> from the armbian rk3576 vendor-u-boot ... but that actually may differ
> from what the vendors provided?
Just tried booting into u-boot built from ArmSoM sources at [1] - same
issues as using mainline. Either I'm doing something stupid building
it (don't know what though), or the binary shipped in ArmSoM images is
indeed different from what the sources are.
FTR, my steps to build the vendor u-boot were:
make rk3576_defconfig
cp ~/rkbin/bin/rk35/rk3576_bl31_v1.15.elf bl31.elf
cp ~/rkbin/bin/rk35/rk3576_bl32_v1.05.bin tee.bin
make -j12
make u-boot.itb
./tools/mkimage -n rk3576 -T rksd -d
~/rkbin/bin/rk35/rk3576_ddr_lp4_2112MHz_lp5_2736MHz_v1.09.bin:spl/u-boot-spl-dtb.bin
idbloader.img
Then I wrote idbloader.img to eMMC starting from sector 64, u-boot.itb
starting from sector 16384. It boots, but exhibits the same "stuck"
CPU frequencies as with mainline u-boot.
FWIW, I've managed to load Rockchip BL32 as OP-TEE with mainline
u-boot too: turns out the right address to load it is 0x48400000 and
not 0x08400000. It didn't help with the problem though.
Best regards,
Alexey
[1] https://github.com/ArmSoM/u-boot/tree/rk3576-6.1-rk3.1
^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [PATCH 1/4] arm64: dts: rockchip: list all CPU supplies on ArmSoM Sige5
2025-06-21 21:21 ` Alexey Charkov
@ 2025-06-22 13:48 ` Heiko Stuebner
2025-06-23 9:19 ` Alexey Charkov
0 siblings, 1 reply; 44+ messages in thread
From: Heiko Stuebner @ 2025-06-22 13:48 UTC (permalink / raw)
To: Alexey Charkov
Cc: Nicolas Frattaroli, XiaoDong Huang, Piotr Oniszczuk, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, devicetree, linux-arm-kernel,
linux-rockchip, linux-kernel, Jonas Karlman
Am Samstag, 21. Juni 2025, 23:21:11 Mitteleuropäische Sommerzeit schrieb Alexey Charkov:
> On Sat, Jun 21, 2025 at 11:44 PM Heiko Stuebner <heiko@sntech.de> wrote:
> >
> > Am Samstag, 21. Juni 2025, 21:35:56 Mitteleuropäische Sommerzeit schrieb Alexey Charkov:
> > > On Fri, Jun 20, 2025 at 8:02 PM Alexey Charkov <alchark@gmail.com> wrote:
> > > >
> > > > On Wed, Jun 18, 2025 at 6:48 PM Alexey Charkov <alchark@gmail.com> wrote:
> > > > >
> > > > > On Wed, Jun 18, 2025 at 6:06 PM Nicolas Frattaroli
> > > > > <nicolas.frattaroli@collabora.com> wrote:
> > > > > >
> > > > > > Hello,
> > > > > >
> > > > > > +Cc Jonas Karlman as he is intimately familiar with RK3576 clock shenanigans by now,
> > > > > >
> > > > > > On Wednesday, 18 June 2025 15:51:45 Central European Summer Time Alexey Charkov wrote:
> > > > > > > On Sun, Jun 15, 2025 at 8:00 PM Piotr Oniszczuk
> > > > > > > <piotr.oniszczuk@gmail.com> wrote:
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > > Wiadomość napisana przez Alexey Charkov <alchark@gmail.com> w dniu 9 cze 2025, o godz. 16:05:
> > > > > > > > >
> > > > > > > > > On Sun, Jun 8, 2025 at 11:24 AM Piotr Oniszczuk
> > > > > > > > > <piotr.oniszczuk@gmail.com> wrote:
> > > > > > > > >>> Wiadomość napisana przez Alexey Charkov <alchark@gmail.com> w dniu 5 cze 2025, o godz. 15:42:
> > > > > > > > >>>> Alexey,
> > > > > > > > >>>> I see you are using rk3576 board like me (nanopi-m5)
> > > > > > > > >>>> Have you on your board correctly working cpu dvfs?
> > > > > > > > >>>> I mean: [1][desired clocks reported by kernel sysfs are in pair with [2[]cur clocks?
> > > > > > > > >>>> In my case i see mine cpu lives totally on it’s own with dvfs:
> > > > > > > > >>>
> > > > > > > > >>> Hi Piotr,
> > > > > > > > >>>
> > > > > > > > >>> I haven't tried to validate actual running frequencies vs. requested
> > > > > > > > >>> frequencies, but subjective performance and power consumption seem to
> > > > > > > > >>> be in line with what I expect.
> > > > > > > > >>
> > > > > > > > >> well - my subjective l&f is that - currently - my rk3576 seems „slower" than i.e. 4xA53 h618.
> > > > > > > > >
> > > > > > > > > In my experience, native compilation of GCC 14 using 8 threads on
> > > > > > > > > RK3576 (mainline with passive cooling and throttling enabled): 2 hours
> > > > > > > > > 6 minutes, on RK3588 (mainline with passive cooling via Radxa Rock 5B
> > > > > > > > > case and throttling enabled but never kicking in): 1 hour 10 minutes
> > > > > > > >
> > > > > > > > by curiosity i looked randomly on 3576 vs 3588:
> > > > > > > > multithread passmark: 3675 (https://www.cpubenchmark.net/cpu.php?cpu=Rockchip+RK3576&id=6213)
> > > > > > > > multithread passmark: 4530 (https://www.cpubenchmark.net/cpu.php?cpu=Rockchip+RK3588&id=4906)
> > > > > > > >
> > > > > > > > assuming 3588 as baseline, 3576 is approx 20% slower on multithread passmark (has ~0,8 comp power of 3588)
> > > > > > > > 70 min compile on 3588 should take something like ~86min on 3576.
> > > > > > > > In your case 126min compile on 3576 shows 3576 offers 0,55 comp power of 3588.
> > > > > > > > Roughly 3576 should do this task in 40min less than you currently see i think
> > > > > > > >
> > > > > > > >
> > > > > > > > > Can't see how u-boot would affect CPU speed in Linux, as long as you
> > > > > > > > > use comparable ATF images. Do you use the same kernel and dtb in all
> > > > > > > > > these cases? Also, what's your thermal setup?
> > > > > > > >
> > > > > > > > yes. in all cases only change was: uboot & atf
> > > > > > > > thermal is based on recent collabora series (+ recent pooling fix for clocks return from throttling)
> > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > Not sure UX is a particularly good measure of CPU performance, as long
> > > > > > > > > as you've got a properly accelerated DRM graphics pipeline. More
> > > > > > > > > likely 2D/3D and memory.
> > > > > > > >
> > > > > > > > indeed.
> > > > > > > > For quantified look i’m looking on v.simple approach to estimate real clock is http://uob-hpc.github.io/2017/11/22/arm-clock-freq.html
> > > > > > > > by curiosity i looked what it reports on a53/a55/a72/a76 and it is surprisingly accurate :-)
> > > > > > > > on mine 3576 with collabora uboot+mainline atf is hows 800MHz (and in perf. gov it seems to be constant)
> > > > > > > >
> > > > > > > > >
> > > > > > > > > There might be some difference in how PVTPLL behaves on RK3576 vs.
> > > > > > > > > RK3588. But frankly first I would check if you are using comparable
> > > > > > > > > ATF implementations (e.g. upstream TF-A in both cases), kernels and
> > > > > > > > > thermal environment :)
> > > > > > > >
> > > > > > > > all tests: the same 6.15.2 mainline + some collabora patches
> > > > > > > >
> > > > > > > > diffs were:
> > > > > > > > 1.collabora uboot[1] + mainline atf 2.13
> > > > > > > > 2.collabora uboot[1] + rockchip rkbin bl31 blob
> > > > > > > > 3.vendor uboot (bin dump from friendlyelec ubuntu image)
> > > > > > > >
> > > > > > > > on 1/2 i see kind of issue with clock values (i.e. perf gov gives constant 800MHz on mainline atf).
> > > > > > > > 3 seems to perform better - (i.e. perf gov gives constant 1500MHz so all is snappier/faster)
> > > > > > >
> > > > > > > There is indeed something weird going on. I've tried running sbc-bench
> > > > > > > [1], and even though I observe dynamically varying CPU frequencies
> > > > > > > after boot with schedutil governor, once sbc-bench switches the
> > > > > > > governor to "performance" and goes through the OPPs in descending
> > > > > > > frequency order, the CPUs seem to get stuck at the last applied low
> > > > > > > frequency. Even after max frequency gets reverted from 408 MHz to
> > > > > > > something higher, even after I switch the governor to something else -
> > > > > > > no matter what. Only a reboot gets the higher frequencies 'unstuck'
> > > > > > > for me.
> > > > > > >
> > > > > > > These are all observed at around 55C SoC temperature, so throttling is
> > > > > > > not an issue. Regulators are stuck at 950000 uV - way above 700000 uV
> > > > > > > that the 408 MHz OPP requires (and power readings seem to match: I'm
> > > > > > > getting about 2.3W consumption at 408 MHz in idle vs. normal idle
> > > > > > > reading of 1.4W at around 1 GHz).
> > > > > > >
> > > > > > > Not sure what's going on here, and I don't remember seeing anything
> > > > > > > similar on RK3588. Thoughts welcome.
> > > > > >
> > > > > > This may once again be a "accidentally uses wrong clock IDs" type
> > > > > > situation. The other possibility is that we're getting confused
> > > > > > between what we think the clock rate is and what SCMI actually set
> > > > > > the clock rate to.
> > > > > >
> > > > > > Things to check is whether the right clock controller (scmi vs cru)
> > > > > > and the right clock id (check ATF source for this) is used.
> > > > >
> > > > > Clock IDs in the kernel seem to match those in ATF, but I've noticed
> > > > > what appears to be a buffer overflow in some of the SCMI clock names
> > > > > defined in the opensource TF-A (thanks GCC 15 and its zealous
> > > > > warnings):
> > > >
> > > > After some more testing, I tend to confirm what Piotr observed
> > > > earlier. Namely, frequency scaling acts weird on any ATF version (be
> > > > it binary BL31 or opensource TF-A), as long as mainline u-boot is
> > > > used. Using the u-boot binary extracted from the ArmSoM QWRT image
> > > > does not lead to "stuck" CPU frequencies when running sbc-bench.
> > > >
> > > > I'm getting this with the exact same kernel build (6.16-rc1 with some
> > > > Sige5 related patches, namely v2 of this series, Nicolas' USB
> > > > enablement series and TSADC). The only other difference is that the
> > > > binary u-boot doesn't have EFI support, so I had to boot into the
> > > > ARM64 uncompressed Image instead of vmlinuz.efi, but those were both
> > > > taken from the same build.
> > > >
> > > > What I'm observing during the sbc-bench run:
> > > > - It switches the cpufreq governor from schedutil to performance
> > > > - It goes through all CPU OPPs in descending frequency order
> > > > --- While it does that when booted using mainline u-boot +
> > > > vmlinuz.efi: "hardware limits" line in "cpupower -c 0,4
> > > > frequency-info" changes with each OPP change (the max frequency
> > > > getting reduced sequentially), then it resets to the initial full
> > > > range, but the actual frequency stays stuck at the lowest possible
> > > > value
> > > > --- While it does that when booted using binary u-boot + Image:
> > > > "hardware limits" line in "cpupower -c 0,4 frequency-info" doesn't
> > > > change, but the actual frequency gets reduced sequentially. Then after
> > > > the iteration over all OPPs is completed it returns to the highest
> > > > possible value, and adjusts dynamically based on thermal throttling as
> > > > the benchmark progresses
> > >
> > > Slight correction: it's not the "hardware limits" line, but rather
> > > "current policy".
> > >
> > > Note that booting mainline u-boot in non-EFI mode (using plain Image)
> > > doesn't change the results above.
> >
> > I'm in a similar boat, while trying to make DSI run on the rk3576.
> > Andy from Rockchip was able to make it work "just" by using vendor-
> > firmware - while using mainline u-boot (with both mainline TF-A
> > or vendor TF-A) produces just black output.
> >
> > I think when I did the mainline u-boot thing I took the "vendor"-code
> > from the armbian rk3576 vendor-u-boot ... but that actually may differ
> > from what the vendors provided?
>
> Just tried booting into u-boot built from ArmSoM sources at [1] - same
> issues as using mainline. Either I'm doing something stupid building
> it (don't know what though), or the binary shipped in ArmSoM images is
> indeed different from what the sources are.
Can you list the versions you see for the _working_ binaries?
I.e. u-boot and friends may list someversion-gGITHASH thingy like your
OPTEE already does: OP-TEE version: 3.13.0-791-g185dc3c92 .
Also possibly the build date.
I.e. I'm wondering/hoping if we can match to some git commit.
Heiko
>
> FTR, my steps to build the vendor u-boot were:
>
> make rk3576_defconfig
> cp ~/rkbin/bin/rk35/rk3576_bl31_v1.15.elf bl31.elf
> cp ~/rkbin/bin/rk35/rk3576_bl32_v1.05.bin tee.bin
> make -j12
> make u-boot.itb
> ./tools/mkimage -n rk3576 -T rksd -d
> ~/rkbin/bin/rk35/rk3576_ddr_lp4_2112MHz_lp5_2736MHz_v1.09.bin:spl/u-boot-spl-dtb.bin
> idbloader.img
>
> Then I wrote idbloader.img to eMMC starting from sector 64, u-boot.itb
> starting from sector 16384. It boots, but exhibits the same "stuck"
> CPU frequencies as with mainline u-boot.
>
> FWIW, I've managed to load Rockchip BL32 as OP-TEE with mainline
> u-boot too: turns out the right address to load it is 0x48400000 and
> not 0x08400000. It didn't help with the problem though.
>
> Best regards,
> Alexey
>
> [1] https://github.com/ArmSoM/u-boot/tree/rk3576-6.1-rk3.1
>
^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [PATCH 1/4] arm64: dts: rockchip: list all CPU supplies on ArmSoM Sige5
2025-06-22 13:48 ` Heiko Stuebner
@ 2025-06-23 9:19 ` Alexey Charkov
2025-06-23 13:58 ` Alexey Charkov
0 siblings, 1 reply; 44+ messages in thread
From: Alexey Charkov @ 2025-06-23 9:19 UTC (permalink / raw)
To: Heiko Stuebner
Cc: Nicolas Frattaroli, XiaoDong Huang, Piotr Oniszczuk, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, devicetree, linux-arm-kernel,
linux-rockchip, linux-kernel, Jonas Karlman
On Sun, Jun 22, 2025 at 5:48 PM Heiko Stuebner <heiko@sntech.de> wrote:
>
> Am Samstag, 21. Juni 2025, 23:21:11 Mitteleuropäische Sommerzeit schrieb Alexey Charkov:
> > On Sat, Jun 21, 2025 at 11:44 PM Heiko Stuebner <heiko@sntech.de> wrote:
> > >
> > > Am Samstag, 21. Juni 2025, 21:35:56 Mitteleuropäische Sommerzeit schrieb Alexey Charkov:
> > > > On Fri, Jun 20, 2025 at 8:02 PM Alexey Charkov <alchark@gmail.com> wrote:
> > > > >
> > > > > On Wed, Jun 18, 2025 at 6:48 PM Alexey Charkov <alchark@gmail.com> wrote:
> > > > > >
> > > > > > On Wed, Jun 18, 2025 at 6:06 PM Nicolas Frattaroli
> > > > > > <nicolas.frattaroli@collabora.com> wrote:
> > > > > > >
> > > > > > > Hello,
> > > > > > >
> > > > > > > +Cc Jonas Karlman as he is intimately familiar with RK3576 clock shenanigans by now,
> > > > > > >
> > > > > > > On Wednesday, 18 June 2025 15:51:45 Central European Summer Time Alexey Charkov wrote:
> > > > > > > > On Sun, Jun 15, 2025 at 8:00 PM Piotr Oniszczuk
> > > > > > > > <piotr.oniszczuk@gmail.com> wrote:
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > > Wiadomość napisana przez Alexey Charkov <alchark@gmail.com> w dniu 9 cze 2025, o godz. 16:05:
> > > > > > > > > >
> > > > > > > > > > On Sun, Jun 8, 2025 at 11:24 AM Piotr Oniszczuk
> > > > > > > > > > <piotr.oniszczuk@gmail.com> wrote:
> > > > > > > > > >>> Wiadomość napisana przez Alexey Charkov <alchark@gmail.com> w dniu 5 cze 2025, o godz. 15:42:
> > > > > > > > > >>>> Alexey,
> > > > > > > > > >>>> I see you are using rk3576 board like me (nanopi-m5)
> > > > > > > > > >>>> Have you on your board correctly working cpu dvfs?
> > > > > > > > > >>>> I mean: [1][desired clocks reported by kernel sysfs are in pair with [2[]cur clocks?
> > > > > > > > > >>>> In my case i see mine cpu lives totally on it’s own with dvfs:
> > > > > > > > > >>>
> > > > > > > > > >>> Hi Piotr,
> > > > > > > > > >>>
> > > > > > > > > >>> I haven't tried to validate actual running frequencies vs. requested
> > > > > > > > > >>> frequencies, but subjective performance and power consumption seem to
> > > > > > > > > >>> be in line with what I expect.
> > > > > > > > > >>
> > > > > > > > > >> well - my subjective l&f is that - currently - my rk3576 seems „slower" than i.e. 4xA53 h618.
> > > > > > > > > >
> > > > > > > > > > In my experience, native compilation of GCC 14 using 8 threads on
> > > > > > > > > > RK3576 (mainline with passive cooling and throttling enabled): 2 hours
> > > > > > > > > > 6 minutes, on RK3588 (mainline with passive cooling via Radxa Rock 5B
> > > > > > > > > > case and throttling enabled but never kicking in): 1 hour 10 minutes
> > > > > > > > >
> > > > > > > > > by curiosity i looked randomly on 3576 vs 3588:
> > > > > > > > > multithread passmark: 3675 (https://www.cpubenchmark.net/cpu.php?cpu=Rockchip+RK3576&id=6213)
> > > > > > > > > multithread passmark: 4530 (https://www.cpubenchmark.net/cpu.php?cpu=Rockchip+RK3588&id=4906)
> > > > > > > > >
> > > > > > > > > assuming 3588 as baseline, 3576 is approx 20% slower on multithread passmark (has ~0,8 comp power of 3588)
> > > > > > > > > 70 min compile on 3588 should take something like ~86min on 3576.
> > > > > > > > > In your case 126min compile on 3576 shows 3576 offers 0,55 comp power of 3588.
> > > > > > > > > Roughly 3576 should do this task in 40min less than you currently see i think
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > > Can't see how u-boot would affect CPU speed in Linux, as long as you
> > > > > > > > > > use comparable ATF images. Do you use the same kernel and dtb in all
> > > > > > > > > > these cases? Also, what's your thermal setup?
> > > > > > > > >
> > > > > > > > > yes. in all cases only change was: uboot & atf
> > > > > > > > > thermal is based on recent collabora series (+ recent pooling fix for clocks return from throttling)
> > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > Not sure UX is a particularly good measure of CPU performance, as long
> > > > > > > > > > as you've got a properly accelerated DRM graphics pipeline. More
> > > > > > > > > > likely 2D/3D and memory.
> > > > > > > > >
> > > > > > > > > indeed.
> > > > > > > > > For quantified look i’m looking on v.simple approach to estimate real clock is http://uob-hpc.github.io/2017/11/22/arm-clock-freq.html
> > > > > > > > > by curiosity i looked what it reports on a53/a55/a72/a76 and it is surprisingly accurate :-)
> > > > > > > > > on mine 3576 with collabora uboot+mainline atf is hows 800MHz (and in perf. gov it seems to be constant)
> > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > There might be some difference in how PVTPLL behaves on RK3576 vs.
> > > > > > > > > > RK3588. But frankly first I would check if you are using comparable
> > > > > > > > > > ATF implementations (e.g. upstream TF-A in both cases), kernels and
> > > > > > > > > > thermal environment :)
> > > > > > > > >
> > > > > > > > > all tests: the same 6.15.2 mainline + some collabora patches
> > > > > > > > >
> > > > > > > > > diffs were:
> > > > > > > > > 1.collabora uboot[1] + mainline atf 2.13
> > > > > > > > > 2.collabora uboot[1] + rockchip rkbin bl31 blob
> > > > > > > > > 3.vendor uboot (bin dump from friendlyelec ubuntu image)
> > > > > > > > >
> > > > > > > > > on 1/2 i see kind of issue with clock values (i.e. perf gov gives constant 800MHz on mainline atf).
> > > > > > > > > 3 seems to perform better - (i.e. perf gov gives constant 1500MHz so all is snappier/faster)
> > > > > > > >
> > > > > > > > There is indeed something weird going on. I've tried running sbc-bench
> > > > > > > > [1], and even though I observe dynamically varying CPU frequencies
> > > > > > > > after boot with schedutil governor, once sbc-bench switches the
> > > > > > > > governor to "performance" and goes through the OPPs in descending
> > > > > > > > frequency order, the CPUs seem to get stuck at the last applied low
> > > > > > > > frequency. Even after max frequency gets reverted from 408 MHz to
> > > > > > > > something higher, even after I switch the governor to something else -
> > > > > > > > no matter what. Only a reboot gets the higher frequencies 'unstuck'
> > > > > > > > for me.
> > > > > > > >
> > > > > > > > These are all observed at around 55C SoC temperature, so throttling is
> > > > > > > > not an issue. Regulators are stuck at 950000 uV - way above 700000 uV
> > > > > > > > that the 408 MHz OPP requires (and power readings seem to match: I'm
> > > > > > > > getting about 2.3W consumption at 408 MHz in idle vs. normal idle
> > > > > > > > reading of 1.4W at around 1 GHz).
> > > > > > > >
> > > > > > > > Not sure what's going on here, and I don't remember seeing anything
> > > > > > > > similar on RK3588. Thoughts welcome.
> > > > > > >
> > > > > > > This may once again be a "accidentally uses wrong clock IDs" type
> > > > > > > situation. The other possibility is that we're getting confused
> > > > > > > between what we think the clock rate is and what SCMI actually set
> > > > > > > the clock rate to.
> > > > > > >
> > > > > > > Things to check is whether the right clock controller (scmi vs cru)
> > > > > > > and the right clock id (check ATF source for this) is used.
> > > > > >
> > > > > > Clock IDs in the kernel seem to match those in ATF, but I've noticed
> > > > > > what appears to be a buffer overflow in some of the SCMI clock names
> > > > > > defined in the opensource TF-A (thanks GCC 15 and its zealous
> > > > > > warnings):
> > > > >
> > > > > After some more testing, I tend to confirm what Piotr observed
> > > > > earlier. Namely, frequency scaling acts weird on any ATF version (be
> > > > > it binary BL31 or opensource TF-A), as long as mainline u-boot is
> > > > > used. Using the u-boot binary extracted from the ArmSoM QWRT image
> > > > > does not lead to "stuck" CPU frequencies when running sbc-bench.
> > > > >
> > > > > I'm getting this with the exact same kernel build (6.16-rc1 with some
> > > > > Sige5 related patches, namely v2 of this series, Nicolas' USB
> > > > > enablement series and TSADC). The only other difference is that the
> > > > > binary u-boot doesn't have EFI support, so I had to boot into the
> > > > > ARM64 uncompressed Image instead of vmlinuz.efi, but those were both
> > > > > taken from the same build.
> > > > >
> > > > > What I'm observing during the sbc-bench run:
> > > > > - It switches the cpufreq governor from schedutil to performance
> > > > > - It goes through all CPU OPPs in descending frequency order
> > > > > --- While it does that when booted using mainline u-boot +
> > > > > vmlinuz.efi: "hardware limits" line in "cpupower -c 0,4
> > > > > frequency-info" changes with each OPP change (the max frequency
> > > > > getting reduced sequentially), then it resets to the initial full
> > > > > range, but the actual frequency stays stuck at the lowest possible
> > > > > value
> > > > > --- While it does that when booted using binary u-boot + Image:
> > > > > "hardware limits" line in "cpupower -c 0,4 frequency-info" doesn't
> > > > > change, but the actual frequency gets reduced sequentially. Then after
> > > > > the iteration over all OPPs is completed it returns to the highest
> > > > > possible value, and adjusts dynamically based on thermal throttling as
> > > > > the benchmark progresses
> > > >
> > > > Slight correction: it's not the "hardware limits" line, but rather
> > > > "current policy".
> > > >
> > > > Note that booting mainline u-boot in non-EFI mode (using plain Image)
> > > > doesn't change the results above.
> > >
> > > I'm in a similar boat, while trying to make DSI run on the rk3576.
> > > Andy from Rockchip was able to make it work "just" by using vendor-
> > > firmware - while using mainline u-boot (with both mainline TF-A
> > > or vendor TF-A) produces just black output.
> > >
> > > I think when I did the mainline u-boot thing I took the "vendor"-code
> > > from the armbian rk3576 vendor-u-boot ... but that actually may differ
> > > from what the vendors provided?
> >
> > Just tried booting into u-boot built from ArmSoM sources at [1] - same
> > issues as using mainline. Either I'm doing something stupid building
> > it (don't know what though), or the binary shipped in ArmSoM images is
> > indeed different from what the sources are.
>
> Can you list the versions you see for the _working_ binaries?
Those are not as detailed as I'd like, as vendor builds seem to
override the default U-boot versioning rules (stripping the git hash
information off).
I've identified the following versions for the binary image that worked for me:
DDR init v1.03 (version string "DDR 81dd75088a wesley.yao
24/04/16-11:19:41,fwver: v1.03")
U-boot SPL 2017.09 (no traces of any particular git commit, version
string "U-Boot SPL 2017.09 (Aug 23 2024 - 00:47:39)")
U-boot proper 2017.09 (ditto, version string "U-Boot 2017.09 (Aug 23
2024 - 00:47:39 +0000) OpenWrt")
BL31 image v1.04 (version string
"v2.3():v2.3-749-g30018b771:derrick.huang, fwver: v1.04")
BL32 image v1.01 (version string "U3.13.0-791-g185dc3c92 #hisping.lin
(gcc version 10.2.1 20201103 (GNU Toolchain for the A-profile
Architecture 10.2-2020.11 (arm-10.16))) #2 Tue Apr 16 11:05:25 CST
2024 aarch64, fwver: v1.01")
> I.e. u-boot and friends may list someversion-gGITHASH thingy like your
> OPTEE already does: OP-TEE version: 3.13.0-791-g185dc3c92 .
> Also possibly the build date.
The build date is later than any commit I see in the ArmSoM repo
leading up to either of the two tags they have there ("rk3576" and
"rk3576-6.1-rk3.1", neither of them belonging to any published branch
there)
> I.e. I'm wondering/hoping if we can match to some git commit.
I've also noticed that ArmSoM SDK references the "boost" binary from
rkbin (rk3576_boost_v1.00.bin in particular), but it doesn't seem to
be present in the bootloader binary I'm looking at. The version string
of the SPL binary in rkbin as included in the SDK is also different
from what I'm seeing in the actual binary: SDK has "U-Boot SPL
2017.09-g57b8ceed1c3-240418 #lxh (Apr 19 2024 - 17:07:22), fwver:
v1.02".
I'll try and rebuild the vendor u-boot from source with these specific
versions of rkbin blobs (ddr v1.03, bl31 v1.04 and bl32 v1.01), but
the changelog in rkbin didn't mention anything that would seem
relevant to the issue I'm observing :(
Best regards,
Alexey
^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [PATCH 1/4] arm64: dts: rockchip: list all CPU supplies on ArmSoM Sige5
2025-06-23 9:19 ` Alexey Charkov
@ 2025-06-23 13:58 ` Alexey Charkov
2025-06-23 15:02 ` Piotr Oniszczuk
2025-06-23 18:04 ` Jonas Karlman
0 siblings, 2 replies; 44+ messages in thread
From: Alexey Charkov @ 2025-06-23 13:58 UTC (permalink / raw)
To: Heiko Stuebner
Cc: Nicolas Frattaroli, XiaoDong Huang, Piotr Oniszczuk, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, devicetree, linux-arm-kernel,
linux-rockchip, linux-kernel, Jonas Karlman
On Mon, Jun 23, 2025 at 1:19 PM Alexey Charkov <alchark@gmail.com> wrote:
>
> On Sun, Jun 22, 2025 at 5:48 PM Heiko Stuebner <heiko@sntech.de> wrote:
> >
> > Am Samstag, 21. Juni 2025, 23:21:11 Mitteleuropäische Sommerzeit schrieb Alexey Charkov:
> > > On Sat, Jun 21, 2025 at 11:44 PM Heiko Stuebner <heiko@sntech.de> wrote:
> > > >
> > > > Am Samstag, 21. Juni 2025, 21:35:56 Mitteleuropäische Sommerzeit schrieb Alexey Charkov:
> > > > > On Fri, Jun 20, 2025 at 8:02 PM Alexey Charkov <alchark@gmail.com> wrote:
> > > > > >
> > > > > > On Wed, Jun 18, 2025 at 6:48 PM Alexey Charkov <alchark@gmail.com> wrote:
> > > > > > >
> > > > > > > On Wed, Jun 18, 2025 at 6:06 PM Nicolas Frattaroli
> > > > > > > <nicolas.frattaroli@collabora.com> wrote:
> > > > > > > >
> > > > > > > > Hello,
> > > > > > > >
> > > > > > > > +Cc Jonas Karlman as he is intimately familiar with RK3576 clock shenanigans by now,
> > > > > > > >
> > > > > > > > On Wednesday, 18 June 2025 15:51:45 Central European Summer Time Alexey Charkov wrote:
> > > > > > > > > On Sun, Jun 15, 2025 at 8:00 PM Piotr Oniszczuk
> > > > > > > > > <piotr.oniszczuk@gmail.com> wrote:
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > > Wiadomość napisana przez Alexey Charkov <alchark@gmail.com> w dniu 9 cze 2025, o godz. 16:05:
> > > > > > > > > > >
> > > > > > > > > > > On Sun, Jun 8, 2025 at 11:24 AM Piotr Oniszczuk
> > > > > > > > > > > <piotr.oniszczuk@gmail.com> wrote:
> > > > > > > > > > >>> Wiadomość napisana przez Alexey Charkov <alchark@gmail.com> w dniu 5 cze 2025, o godz. 15:42:
> > > > > > > > > > >>>> Alexey,
> > > > > > > > > > >>>> I see you are using rk3576 board like me (nanopi-m5)
> > > > > > > > > > >>>> Have you on your board correctly working cpu dvfs?
> > > > > > > > > > >>>> I mean: [1][desired clocks reported by kernel sysfs are in pair with [2[]cur clocks?
> > > > > > > > > > >>>> In my case i see mine cpu lives totally on it’s own with dvfs:
> > > > > > > > > > >>>
> > > > > > > > > > >>> Hi Piotr,
> > > > > > > > > > >>>
> > > > > > > > > > >>> I haven't tried to validate actual running frequencies vs. requested
> > > > > > > > > > >>> frequencies, but subjective performance and power consumption seem to
> > > > > > > > > > >>> be in line with what I expect.
> > > > > > > > > > >>
> > > > > > > > > > >> well - my subjective l&f is that - currently - my rk3576 seems „slower" than i.e. 4xA53 h618.
> > > > > > > > > > >
> > > > > > > > > > > In my experience, native compilation of GCC 14 using 8 threads on
> > > > > > > > > > > RK3576 (mainline with passive cooling and throttling enabled): 2 hours
> > > > > > > > > > > 6 minutes, on RK3588 (mainline with passive cooling via Radxa Rock 5B
> > > > > > > > > > > case and throttling enabled but never kicking in): 1 hour 10 minutes
> > > > > > > > > >
> > > > > > > > > > by curiosity i looked randomly on 3576 vs 3588:
> > > > > > > > > > multithread passmark: 3675 (https://www.cpubenchmark.net/cpu.php?cpu=Rockchip+RK3576&id=6213)
> > > > > > > > > > multithread passmark: 4530 (https://www.cpubenchmark.net/cpu.php?cpu=Rockchip+RK3588&id=4906)
> > > > > > > > > >
> > > > > > > > > > assuming 3588 as baseline, 3576 is approx 20% slower on multithread passmark (has ~0,8 comp power of 3588)
> > > > > > > > > > 70 min compile on 3588 should take something like ~86min on 3576.
> > > > > > > > > > In your case 126min compile on 3576 shows 3576 offers 0,55 comp power of 3588.
> > > > > > > > > > Roughly 3576 should do this task in 40min less than you currently see i think
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > > Can't see how u-boot would affect CPU speed in Linux, as long as you
> > > > > > > > > > > use comparable ATF images. Do you use the same kernel and dtb in all
> > > > > > > > > > > these cases? Also, what's your thermal setup?
> > > > > > > > > >
> > > > > > > > > > yes. in all cases only change was: uboot & atf
> > > > > > > > > > thermal is based on recent collabora series (+ recent pooling fix for clocks return from throttling)
> > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > > Not sure UX is a particularly good measure of CPU performance, as long
> > > > > > > > > > > as you've got a properly accelerated DRM graphics pipeline. More
> > > > > > > > > > > likely 2D/3D and memory.
> > > > > > > > > >
> > > > > > > > > > indeed.
> > > > > > > > > > For quantified look i’m looking on v.simple approach to estimate real clock is http://uob-hpc.github.io/2017/11/22/arm-clock-freq.html
> > > > > > > > > > by curiosity i looked what it reports on a53/a55/a72/a76 and it is surprisingly accurate :-)
> > > > > > > > > > on mine 3576 with collabora uboot+mainline atf is hows 800MHz (and in perf. gov it seems to be constant)
> > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > > There might be some difference in how PVTPLL behaves on RK3576 vs.
> > > > > > > > > > > RK3588. But frankly first I would check if you are using comparable
> > > > > > > > > > > ATF implementations (e.g. upstream TF-A in both cases), kernels and
> > > > > > > > > > > thermal environment :)
> > > > > > > > > >
> > > > > > > > > > all tests: the same 6.15.2 mainline + some collabora patches
> > > > > > > > > >
> > > > > > > > > > diffs were:
> > > > > > > > > > 1.collabora uboot[1] + mainline atf 2.13
> > > > > > > > > > 2.collabora uboot[1] + rockchip rkbin bl31 blob
> > > > > > > > > > 3.vendor uboot (bin dump from friendlyelec ubuntu image)
> > > > > > > > > >
> > > > > > > > > > on 1/2 i see kind of issue with clock values (i.e. perf gov gives constant 800MHz on mainline atf).
> > > > > > > > > > 3 seems to perform better - (i.e. perf gov gives constant 1500MHz so all is snappier/faster)
> > > > > > > > >
> > > > > > > > > There is indeed something weird going on. I've tried running sbc-bench
> > > > > > > > > [1], and even though I observe dynamically varying CPU frequencies
> > > > > > > > > after boot with schedutil governor, once sbc-bench switches the
> > > > > > > > > governor to "performance" and goes through the OPPs in descending
> > > > > > > > > frequency order, the CPUs seem to get stuck at the last applied low
> > > > > > > > > frequency. Even after max frequency gets reverted from 408 MHz to
> > > > > > > > > something higher, even after I switch the governor to something else -
> > > > > > > > > no matter what. Only a reboot gets the higher frequencies 'unstuck'
> > > > > > > > > for me.
> > > > > > > > >
> > > > > > > > > These are all observed at around 55C SoC temperature, so throttling is
> > > > > > > > > not an issue. Regulators are stuck at 950000 uV - way above 700000 uV
> > > > > > > > > that the 408 MHz OPP requires (and power readings seem to match: I'm
> > > > > > > > > getting about 2.3W consumption at 408 MHz in idle vs. normal idle
> > > > > > > > > reading of 1.4W at around 1 GHz).
> > > > > > > > >
> > > > > > > > > Not sure what's going on here, and I don't remember seeing anything
> > > > > > > > > similar on RK3588. Thoughts welcome.
> > > > > > > >
> > > > > > > > This may once again be a "accidentally uses wrong clock IDs" type
> > > > > > > > situation. The other possibility is that we're getting confused
> > > > > > > > between what we think the clock rate is and what SCMI actually set
> > > > > > > > the clock rate to.
> > > > > > > >
> > > > > > > > Things to check is whether the right clock controller (scmi vs cru)
> > > > > > > > and the right clock id (check ATF source for this) is used.
> > > > > > >
> > > > > > > Clock IDs in the kernel seem to match those in ATF, but I've noticed
> > > > > > > what appears to be a buffer overflow in some of the SCMI clock names
> > > > > > > defined in the opensource TF-A (thanks GCC 15 and its zealous
> > > > > > > warnings):
> > > > > >
> > > > > > After some more testing, I tend to confirm what Piotr observed
> > > > > > earlier. Namely, frequency scaling acts weird on any ATF version (be
> > > > > > it binary BL31 or opensource TF-A), as long as mainline u-boot is
> > > > > > used. Using the u-boot binary extracted from the ArmSoM QWRT image
> > > > > > does not lead to "stuck" CPU frequencies when running sbc-bench.
> > > > > >
> > > > > > I'm getting this with the exact same kernel build (6.16-rc1 with some
> > > > > > Sige5 related patches, namely v2 of this series, Nicolas' USB
> > > > > > enablement series and TSADC). The only other difference is that the
> > > > > > binary u-boot doesn't have EFI support, so I had to boot into the
> > > > > > ARM64 uncompressed Image instead of vmlinuz.efi, but those were both
> > > > > > taken from the same build.
> > > > > >
> > > > > > What I'm observing during the sbc-bench run:
> > > > > > - It switches the cpufreq governor from schedutil to performance
> > > > > > - It goes through all CPU OPPs in descending frequency order
> > > > > > --- While it does that when booted using mainline u-boot +
> > > > > > vmlinuz.efi: "hardware limits" line in "cpupower -c 0,4
> > > > > > frequency-info" changes with each OPP change (the max frequency
> > > > > > getting reduced sequentially), then it resets to the initial full
> > > > > > range, but the actual frequency stays stuck at the lowest possible
> > > > > > value
> > > > > > --- While it does that when booted using binary u-boot + Image:
> > > > > > "hardware limits" line in "cpupower -c 0,4 frequency-info" doesn't
> > > > > > change, but the actual frequency gets reduced sequentially. Then after
> > > > > > the iteration over all OPPs is completed it returns to the highest
> > > > > > possible value, and adjusts dynamically based on thermal throttling as
> > > > > > the benchmark progresses
> > > > >
> > > > > Slight correction: it's not the "hardware limits" line, but rather
> > > > > "current policy".
> > > > >
> > > > > Note that booting mainline u-boot in non-EFI mode (using plain Image)
> > > > > doesn't change the results above.
> > > >
> > > > I'm in a similar boat, while trying to make DSI run on the rk3576.
> > > > Andy from Rockchip was able to make it work "just" by using vendor-
> > > > firmware - while using mainline u-boot (with both mainline TF-A
> > > > or vendor TF-A) produces just black output.
> > > >
> > > > I think when I did the mainline u-boot thing I took the "vendor"-code
> > > > from the armbian rk3576 vendor-u-boot ... but that actually may differ
> > > > from what the vendors provided?
> > >
> > > Just tried booting into u-boot built from ArmSoM sources at [1] - same
> > > issues as using mainline. Either I'm doing something stupid building
> > > it (don't know what though), or the binary shipped in ArmSoM images is
> > > indeed different from what the sources are.
> >
> > Can you list the versions you see for the _working_ binaries?
>
> Those are not as detailed as I'd like, as vendor builds seem to
> override the default U-boot versioning rules (stripping the git hash
> information off).
>
> I've identified the following versions for the binary image that worked for me:
>
> DDR init v1.03 (version string "DDR 81dd75088a wesley.yao
> 24/04/16-11:19:41,fwver: v1.03")
> U-boot SPL 2017.09 (no traces of any particular git commit, version
> string "U-Boot SPL 2017.09 (Aug 23 2024 - 00:47:39)")
> U-boot proper 2017.09 (ditto, version string "U-Boot 2017.09 (Aug 23
> 2024 - 00:47:39 +0000) OpenWrt")
> BL31 image v1.04 (version string
> "v2.3():v2.3-749-g30018b771:derrick.huang, fwver: v1.04")
> BL32 image v1.01 (version string "U3.13.0-791-g185dc3c92 #hisping.lin
> (gcc version 10.2.1 20201103 (GNU Toolchain for the A-profile
> Architecture 10.2-2020.11 (arm-10.16))) #2 Tue Apr 16 11:05:25 CST
> 2024 aarch64, fwver: v1.01")
>
> > I.e. u-boot and friends may list someversion-gGITHASH thingy like your
> > OPTEE already does: OP-TEE version: 3.13.0-791-g185dc3c92 .
> > Also possibly the build date.
>
> The build date is later than any commit I see in the ArmSoM repo
> leading up to either of the two tags they have there ("rk3576" and
> "rk3576-6.1-rk3.1", neither of them belonging to any published branch
> there)
>
> > I.e. I'm wondering/hoping if we can match to some git commit.
>
> I've also noticed that ArmSoM SDK references the "boost" binary from
> rkbin (rk3576_boost_v1.00.bin in particular), but it doesn't seem to
> be present in the bootloader binary I'm looking at. The version string
> of the SPL binary in rkbin as included in the SDK is also different
> from what I'm seeing in the actual binary: SDK has "U-Boot SPL
> 2017.09-g57b8ceed1c3-240418 #lxh (Apr 19 2024 - 17:07:22), fwver:
> v1.02".
>
> I'll try and rebuild the vendor u-boot from source with these specific
> versions of rkbin blobs (ddr v1.03, bl31 v1.04 and bl32 v1.01), but
> the changelog in rkbin didn't mention anything that would seem
> relevant to the issue I'm observing :(
Okay, I've bisected this.
TLDR: Linux and u-boot seem to have nothing to do with it, opensource
TF-A doesn't work, binary BL31 starting with v1.09 do not work. BL31
v1.08 and earlier work fine. Tested with vendor u-boot and with
2025.07-rc2, results are similar. OP-TEE presence does not affect the
results.
To test:
1. Build and apply a fresh u-boot-rockchip.bin using the DDR init and
BL31 from rkbin repo [1]
2. Run "watch cpupower -c 0,4 frequency-info" to observe how CPU
frequencies change
3. In a separate terminal, run "bash sbc-bench.sh -c" [2]
4. "Good" behavior:
a. Once the cpufreq governor is switched to "performance" (if it
was anything different at boot), both CPU clusters go up to their max
frequencies
b. While the benchmark runs through the stage where it says
"Checking cpufreq OPP", CPU frequencies consecutively decrease from
the max OPP frequency to the min
c. After the benchmark finishes the stage where it says "Checking
cpufreq OPP", both CPU clusters go up to their max frequencies for the
rest of the benchmarking run
"Bad" behavior:
a. Once the cpufreq governor is switched to "performance" (if it
was anything different at boot), both CPU clusters stay at whatever
frequencies they were at when the switch occurred
b. While the benchmark runs through the stage where it says
"Checking cpufreq OPP", CPU frequencies consecutively decrease from
the "pre-max" OPP frequency to the min (max frequency never gets
applied on either of the clusters!)
c. After the benchmark finishes the stage where it says "Checking
cpufreq OPP", both CPU clusters stay at their min frequencies for the
rest of the benchmarking run
I suspect it has something to do with the topmost OPP somehow becoming
unselectable in ATF starting from binary BL31 v1.09 (and similarly in
opensource TF-A). This time I couldn't reproduce the "permanently
stuck" CPU frequencies though.
Here are the git bisect results (running in rkbin repo):
0b338fd6ae7ad816295a75c80b00968bb1868625 is the first bad commit
commit 0b338fd6ae7ad816295a75c80b00968bb1868625 (HEAD)
Author: XiaoDong Huang <derrick.huang@rock-chips.com>
Date: Fri Jun 28 17:47:55 2024 +0800
rk3576: bl31: update version to v1.09
Build from ATF commit:
286c013b2 plat: rockchip: rk3576: Add support to set low length
update feature:
286c013b2 plat: rockchip: rk3576: Add support to set low length
5fb78cd64 rockchip: uart: switch to loopback mode before
checking busy status
02ff3b0da rockchip: uart: save uart register once
23bd4684e plat: rk3576: support to switch hptimer to 1G
b4833e988 plat: rk3576: remove AUTOCS_EN_COUNT
437ed59cb plat: rockchip: rk3576: support aclk_sencure_s enable
6d8c67d6a plat: rk3576: support poweroff scu1 when cpu4~cpu7 off
Change-Id: I0fcb5afefcc3865cf8c413b4c0ed00234d2675cb
Signed-off-by: XiaoDong Huang <derrick.huang@rock-chips.com>
RKTRUST/RK3576TRUST.ini | 2 +-
bin/rk35/{rk3576_bl31_v1.08.elf => rk3576_bl31_v1.09.elf} | Bin
349032 -> 349032 bytes
doc/release/RK3576_CN.md | 13 +++++++++++++
doc/release/RK3576_EN.md | 14 ++++++++++++++
4 files changed, 28 insertions(+), 1 deletion(-)
rename bin/rk35/{rk3576_bl31_v1.08.elf => rk3576_bl31_v1.09.elf} (82%)
[1] https://github.com/rockchip-linux/rkbin.git
[2] https://github.com/ThomasKaiser/sbc-bench
Derrick, if you could chime in on what might be going on here, that
would be greatly appreciated :)
Best regards,
Alexey
^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [PATCH 1/4] arm64: dts: rockchip: list all CPU supplies on ArmSoM Sige5
2025-06-23 13:58 ` Alexey Charkov
@ 2025-06-23 15:02 ` Piotr Oniszczuk
2025-06-23 17:40 ` Jonas Karlman
2025-06-23 18:04 ` Jonas Karlman
1 sibling, 1 reply; 44+ messages in thread
From: Piotr Oniszczuk @ 2025-06-23 15:02 UTC (permalink / raw)
To: Alexey Charkov
Cc: Heiko Stuebner, Nicolas Frattaroli, XiaoDong Huang, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, devicetree, linux-arm-kernel,
linux-rockchip, linux-kernel, Jonas Karlman
> Wiadomość napisana przez Alexey Charkov <alchark@gmail.com> w dniu 23 cze 2025, o godz. 15:58:
>
> On Mon, Jun 23, 2025 at 1:19 PM Alexey Charkov <alchark@gmail.com> wrote:
>>
>>
>
> Okay, I've bisected this.
>
> TLDR: Linux and u-boot seem to have nothing to do with it, opensource
> TF-A doesn't work, binary BL31 starting with v1.09 do not work. BL31
> v1.08 and earlier work fine.
just fyi:
to confirm: replacing only bl31 to 1.08 makes all good
with perf gov. clocks staying on 2200/2300
clock estimations are predictable, constant and estimating constantly 2400
ux is „like” on 3588
Alexey: many thx for finding root cause component!
^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [PATCH 1/4] arm64: dts: rockchip: list all CPU supplies on ArmSoM Sige5
2025-06-23 15:02 ` Piotr Oniszczuk
@ 2025-06-23 17:40 ` Jonas Karlman
2025-06-23 21:07 ` Jonas Karlman
2025-06-24 7:41 ` Alexey Charkov
0 siblings, 2 replies; 44+ messages in thread
From: Jonas Karlman @ 2025-06-23 17:40 UTC (permalink / raw)
To: Piotr Oniszczuk, Alexey Charkov
Cc: Heiko Stuebner, Nicolas Frattaroli, XiaoDong Huang, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, devicetree, linux-arm-kernel,
linux-rockchip, linux-kernel
On 2025-06-23 17:02, Piotr Oniszczuk wrote:
>
>
>> Wiadomość napisana przez Alexey Charkov <alchark@gmail.com> w dniu 23 cze 2025, o godz. 15:58:
>>
>> On Mon, Jun 23, 2025 at 1:19 PM Alexey Charkov <alchark@gmail.com> wrote:
>>>
>>>
>>
>> Okay, I've bisected this.
>>
>> TLDR: Linux and u-boot seem to have nothing to do with it, opensource
>> TF-A doesn't work, binary BL31 starting with v1.09 do not work. BL31
>> v1.08 and earlier work fine.
v1.09 added support for 1 GHz hrtimer in addition to the normal 24 MHz
rate. Mainline U-Boot may only support use of 24 MHz hrtimer, unsure
what impact the hrtimer rate has. Mixing blobs with/without 1 GHz
support is known to cause issues. At one point the latest rkbin tree may
have contained incompatible rk3576 blobs (mixed 1 ghz vs 24 mhz rate).
Did you try with newer blobs, i.e. ddr init v1.09, bl31 v1.19 blobs [1]
and mainline U-Boot [2] ?
[1] https://github.com/radxa/rkbin/commits/develop-v2025.04/
[2] https://source.denx.de/u-boot/contributors/kwiboo/u-boot/-/commits/rk3576
Regards,
Jonas
>
>
> just fyi:
> to confirm: replacing only bl31 to 1.08 makes all good
> with perf gov. clocks staying on 2200/2300
> clock estimations are predictable, constant and estimating constantly 2400
> ux is „like” on 3588
>
> Alexey: many thx for finding root cause component!
>
>
^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [PATCH 1/4] arm64: dts: rockchip: list all CPU supplies on ArmSoM Sige5
2025-06-23 13:58 ` Alexey Charkov
2025-06-23 15:02 ` Piotr Oniszczuk
@ 2025-06-23 18:04 ` Jonas Karlman
1 sibling, 0 replies; 44+ messages in thread
From: Jonas Karlman @ 2025-06-23 18:04 UTC (permalink / raw)
To: Alexey Charkov, Heiko Stuebner
Cc: Nicolas Frattaroli, XiaoDong Huang, Piotr Oniszczuk, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, devicetree, linux-arm-kernel,
linux-rockchip, linux-kernel
On 2025-06-23 15:58, Alexey Charkov wrote:
> On Mon, Jun 23, 2025 at 1:19 PM Alexey Charkov <alchark@gmail.com> wrote:
>>
>> On Sun, Jun 22, 2025 at 5:48 PM Heiko Stuebner <heiko@sntech.de> wrote:
>>>
>>> Am Samstag, 21. Juni 2025, 23:21:11 Mitteleuropäische Sommerzeit schrieb Alexey Charkov:
>>>> On Sat, Jun 21, 2025 at 11:44 PM Heiko Stuebner <heiko@sntech.de> wrote:
>>>>>
>>>>> Am Samstag, 21. Juni 2025, 21:35:56 Mitteleuropäische Sommerzeit schrieb Alexey Charkov:
>>>>>> On Fri, Jun 20, 2025 at 8:02 PM Alexey Charkov <alchark@gmail.com> wrote:
>>>>>>>
>>>>>>> On Wed, Jun 18, 2025 at 6:48 PM Alexey Charkov <alchark@gmail.com> wrote:
>>>>>>>>
>>>>>>>> On Wed, Jun 18, 2025 at 6:06 PM Nicolas Frattaroli
>>>>>>>> <nicolas.frattaroli@collabora.com> wrote:
>>>>>>>>>
>>>>>>>>> Hello,
>>>>>>>>>
>>>>>>>>> +Cc Jonas Karlman as he is intimately familiar with RK3576 clock shenanigans by now,
>>>>>>>>>
>>>>>>>>> On Wednesday, 18 June 2025 15:51:45 Central European Summer Time Alexey Charkov wrote:
>>>>>>>>>> On Sun, Jun 15, 2025 at 8:00 PM Piotr Oniszczuk
>>>>>>>>>> <piotr.oniszczuk@gmail.com> wrote:
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>> Wiadomość napisana przez Alexey Charkov <alchark@gmail.com> w dniu 9 cze 2025, o godz. 16:05:
>>>>>>>>>>>>
>>>>>>>>>>>> On Sun, Jun 8, 2025 at 11:24 AM Piotr Oniszczuk
>>>>>>>>>>>> <piotr.oniszczuk@gmail.com> wrote:
>>>>>>>>>>>>>> Wiadomość napisana przez Alexey Charkov <alchark@gmail.com> w dniu 5 cze 2025, o godz. 15:42:
>>>>>>>>>>>>>>> Alexey,
>>>>>>>>>>>>>>> I see you are using rk3576 board like me (nanopi-m5)
>>>>>>>>>>>>>>> Have you on your board correctly working cpu dvfs?
>>>>>>>>>>>>>>> I mean: [1][desired clocks reported by kernel sysfs are in pair with [2[]cur clocks?
>>>>>>>>>>>>>>> In my case i see mine cpu lives totally on it’s own with dvfs:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Hi Piotr,
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> I haven't tried to validate actual running frequencies vs. requested
>>>>>>>>>>>>>> frequencies, but subjective performance and power consumption seem to
>>>>>>>>>>>>>> be in line with what I expect.
>>>>>>>>>>>>>
>>>>>>>>>>>>> well - my subjective l&f is that - currently - my rk3576 seems „slower" than i.e. 4xA53 h618.
>>>>>>>>>>>>
>>>>>>>>>>>> In my experience, native compilation of GCC 14 using 8 threads on
>>>>>>>>>>>> RK3576 (mainline with passive cooling and throttling enabled): 2 hours
>>>>>>>>>>>> 6 minutes, on RK3588 (mainline with passive cooling via Radxa Rock 5B
>>>>>>>>>>>> case and throttling enabled but never kicking in): 1 hour 10 minutes
>>>>>>>>>>>
>>>>>>>>>>> by curiosity i looked randomly on 3576 vs 3588:
>>>>>>>>>>> multithread passmark: 3675 (https://www.cpubenchmark.net/cpu.php?cpu=Rockchip+RK3576&id=6213
>>>>>>>>>>> multithread passmark: 4530 (https://www.cpubenchmark.net/cpu.php?cpu=Rockchip+RK3588&id=4906
>>>>>>>>>>>
>>>>>>>>>>> assuming 3588 as baseline, 3576 is approx 20% slower on multithread passmark (has ~0,8 comp power of 3588)
>>>>>>>>>>> 70 min compile on 3588 should take something like ~86min on 3576.
>>>>>>>>>>> In your case 126min compile on 3576 shows 3576 offers 0,55 comp power of 3588.
>>>>>>>>>>> Roughly 3576 should do this task in 40min less than you currently see i think
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>> Can't see how u-boot would affect CPU speed in Linux, as long as you
>>>>>>>>>>>> use comparable ATF images. Do you use the same kernel and dtb in all
>>>>>>>>>>>> these cases? Also, what's your thermal setup?
>>>>>>>>>>>
>>>>>>>>>>> yes. in all cases only change was: uboot & atf
>>>>>>>>>>> thermal is based on recent collabora series (+ recent pooling fix for clocks return from throttling)
>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> Not sure UX is a particularly good measure of CPU performance, as long
>>>>>>>>>>>> as you've got a properly accelerated DRM graphics pipeline. More
>>>>>>>>>>>> likely 2D/3D and memory.
>>>>>>>>>>>
>>>>>>>>>>> indeed.
>>>>>>>>>>> For quantified look i’m looking on v.simple approach to estimate real clock is http://uob-hpc.github.io/2017/11/22/arm-clock-freq.html
>>>>>>>>>>> by curiosity i looked what it reports on a53/a55/a72/a76 and it is surprisingly accurate :-)
>>>>>>>>>>> on mine 3576 with collabora uboot+mainline atf is hows 800MHz (and in perf. gov it seems to be constant)
>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> There might be some difference in how PVTPLL behaves on RK3576 vs.
>>>>>>>>>>>> RK3588. But frankly first I would check if you are using comparable
>>>>>>>>>>>> ATF implementations (e.g. upstream TF-A in both cases), kernels and
>>>>>>>>>>>> thermal environment :)
>>>>>>>>>>>
>>>>>>>>>>> all tests: the same 6.15.2 mainline + some collabora patches
>>>>>>>>>>>
>>>>>>>>>>> diffs were:
>>>>>>>>>>> 1.collabora uboot[1] + mainline atf 2.13
>>>>>>>>>>> 2.collabora uboot[1] + rockchip rkbin bl31 blob
>>>>>>>>>>> 3.vendor uboot (bin dump from friendlyelec ubuntu image)
>>>>>>>>>>>
>>>>>>>>>>> on 1/2 i see kind of issue with clock values (i.e. perf gov gives constant 800MHz on mainline atf).
>>>>>>>>>>> 3 seems to perform better - (i.e. perf gov gives constant 1500MHz so all is snappier/faster)
>>>>>>>>>>
>>>>>>>>>> There is indeed something weird going on. I've tried running sbc-bench
>>>>>>>>>> [1], and even though I observe dynamically varying CPU frequencies
>>>>>>>>>> after boot with schedutil governor, once sbc-bench switches the
>>>>>>>>>> governor to "performance" and goes through the OPPs in descending
>>>>>>>>>> frequency order, the CPUs seem to get stuck at the last applied low
>>>>>>>>>> frequency. Even after max frequency gets reverted from 408 MHz to
>>>>>>>>>> something higher, even after I switch the governor to something else -
>>>>>>>>>> no matter what. Only a reboot gets the higher frequencies 'unstuck'
>>>>>>>>>> for me.
>>>>>>>>>>
>>>>>>>>>> These are all observed at around 55C SoC temperature, so throttling is
>>>>>>>>>> not an issue. Regulators are stuck at 950000 uV - way above 700000 uV
>>>>>>>>>> that the 408 MHz OPP requires (and power readings seem to match: I'm
>>>>>>>>>> getting about 2.3W consumption at 408 MHz in idle vs. normal idle
>>>>>>>>>> reading of 1.4W at around 1 GHz).
>>>>>>>>>>
>>>>>>>>>> Not sure what's going on here, and I don't remember seeing anything
>>>>>>>>>> similar on RK3588. Thoughts welcome.
>>>>>>>>>
>>>>>>>>> This may once again be a "accidentally uses wrong clock IDs" type
>>>>>>>>> situation. The other possibility is that we're getting confused
>>>>>>>>> between what we think the clock rate is and what SCMI actually set
>>>>>>>>> the clock rate to.
>>>>>>>>>
>>>>>>>>> Things to check is whether the right clock controller (scmi vs cru)
>>>>>>>>> and the right clock id (check ATF source for this) is used.
>>>>>>>>
>>>>>>>> Clock IDs in the kernel seem to match those in ATF, but I've noticed
>>>>>>>> what appears to be a buffer overflow in some of the SCMI clock names
>>>>>>>> defined in the opensource TF-A (thanks GCC 15 and its zealous
>>>>>>>> warnings):
>>>>>>>
>>>>>>> After some more testing, I tend to confirm what Piotr observed
>>>>>>> earlier. Namely, frequency scaling acts weird on any ATF version (be
>>>>>>> it binary BL31 or opensource TF-A), as long as mainline u-boot is
>>>>>>> used. Using the u-boot binary extracted from the ArmSoM QWRT image
>>>>>>> does not lead to "stuck" CPU frequencies when running sbc-bench.
>>>>>>>
>>>>>>> I'm getting this with the exact same kernel build (6.16-rc1 with some
>>>>>>> Sige5 related patches, namely v2 of this series, Nicolas' USB
>>>>>>> enablement series and TSADC). The only other difference is that the
>>>>>>> binary u-boot doesn't have EFI support, so I had to boot into the
>>>>>>> ARM64 uncompressed Image instead of vmlinuz.efi, but those were both
>>>>>>> taken from the same build.
>>>>>>>
>>>>>>> What I'm observing during the sbc-bench run:
>>>>>>> - It switches the cpufreq governor from schedutil to performance
>>>>>>> - It goes through all CPU OPPs in descending frequency order
>>>>>>> --- While it does that when booted using mainline u-boot +
>>>>>>> vmlinuz.efi: "hardware limits" line in "cpupower -c 0,4
>>>>>>> frequency-info" changes with each OPP change (the max frequency
>>>>>>> getting reduced sequentially), then it resets to the initial full
>>>>>>> range, but the actual frequency stays stuck at the lowest possible
>>>>>>> value
>>>>>>> --- While it does that when booted using binary u-boot + Image:
>>>>>>> "hardware limits" line in "cpupower -c 0,4 frequency-info" doesn't
>>>>>>> change, but the actual frequency gets reduced sequentially. Then after
>>>>>>> the iteration over all OPPs is completed it returns to the highest
>>>>>>> possible value, and adjusts dynamically based on thermal throttling as
>>>>>>> the benchmark progresses
>>>>>>
>>>>>> Slight correction: it's not the "hardware limits" line, but rather
>>>>>> "current policy".
>>>>>>
>>>>>> Note that booting mainline u-boot in non-EFI mode (using plain Image)
>>>>>> doesn't change the results above.
>>>>>
>>>>> I'm in a similar boat, while trying to make DSI run on the rk3576.
>>>>> Andy from Rockchip was able to make it work "just" by using vendor-
>>>>> firmware - while using mainline u-boot (with both mainline TF-A
>>>>> or vendor TF-A) produces just black output.
>>>>>
>>>>> I think when I did the mainline u-boot thing I took the "vendor"-code
>>>>> from the armbian rk3576 vendor-u-boot ... but that actually may differ
>>>>> from what the vendors provided?
>>>>
>>>> Just tried booting into u-boot built from ArmSoM sources at [1] - same
>>>> issues as using mainline. Either I'm doing something stupid building
>>>> it (don't know what though), or the binary shipped in ArmSoM images is
>>>> indeed different from what the sources are.
>>>
>>> Can you list the versions you see for the _working_ binaries?
>>
>> Those are not as detailed as I'd like, as vendor builds seem to
>> override the default U-boot versioning rules (stripping the git hash
>> information off).
>>
>> I've identified the following versions for the binary image that worked for me:
>>
>> DDR init v1.03 (version string "DDR 81dd75088a wesley.yao
>> 24/04/16-11:19:41,fwver: v1.03")
>> U-boot SPL 2017.09 (no traces of any particular git commit, version
>> string "U-Boot SPL 2017.09 (Aug 23 2024 - 00:47:39)")
>> U-boot proper 2017.09 (ditto, version string "U-Boot 2017.09 (Aug 23
>> 2024 - 00:47:39 +0000) OpenWrt")
>> BL31 image v1.04 (version string
>> "v2.3():v2.3-749-g30018b771:derrick.huang, fwver: v1.04")
>> BL32 image v1.01 (version string "U3.13.0-791-g185dc3c92 #hisping.lin
>> (gcc version 10.2.1 20201103 (GNU Toolchain for the A-profile
>> Architecture 10.2-2020.11 (arm-10.16))) #2 Tue Apr 16 11:05:25 CST
>> 2024 aarch64, fwver: v1.01")
>>
>>> I.e. u-boot and friends may list someversion-gGITHASH thingy like your
>>> OPTEE already does: OP-TEE version: 3.13.0-791-g185dc3c92 .
>>> Also possibly the build date.
>>
>> The build date is later than any commit I see in the ArmSoM repo
>> leading up to either of the two tags they have there ("rk3576" and
>> "rk3576-6.1-rk3.1", neither of them belonging to any published branch
>> there)
>>
>>> I.e. I'm wondering/hoping if we can match to some git commit.
>>
>> I've also noticed that ArmSoM SDK references the "boost" binary from
>> rkbin (rk3576_boost_v1.00.bin in particular), but it doesn't seem to
>> be present in the bootloader binary I'm looking at. The version string
>> of the SPL binary in rkbin as included in the SDK is also different
>> from what I'm seeing in the actual binary: SDK has "U-Boot SPL
>> 2017.09-g57b8ceed1c3-240418 #lxh (Apr 19 2024 - 17:07:22), fwver:
>> v1.02".
>>
>> I'll try and rebuild the vendor u-boot from source with these specific
>> versions of rkbin blobs (ddr v1.03, bl31 v1.04 and bl32 v1.01), but
>> the changelog in rkbin didn't mention anything that would seem
>> relevant to the issue I'm observing :(
>
> Okay, I've bisected this.
>
> TLDR: Linux and u-boot seem to have nothing to do with it, opensource
> TF-A doesn't work, binary BL31 starting with v1.09 do not work. BL31
> v1.08 and earlier work fine. Tested with vendor u-boot and with
> 2025.07-rc2, results are similar. OP-TEE presence does not affect the
> results.
>
> To test:
> 1. Build and apply a fresh u-boot-rockchip.bin using the DDR init and
> BL31 from rkbin repo [1]
> 2. Run "watch cpupower -c 0,4 frequency-info" to observe how CPU
> frequencies change
> 3. In a separate terminal, run "bash sbc-bench.sh -c" [2]
> 4. "Good" behavior:
> a. Once the cpufreq governor is switched to "performance" (if it
> was anything different at boot), both CPU clusters go up to their max
> frequencies
> b. While the benchmark runs through the stage where it says
> "Checking cpufreq OPP", CPU frequencies consecutively decrease from
> the max OPP frequency to the min
> c. After the benchmark finishes the stage where it says "Checking
> cpufreq OPP", both CPU clusters go up to their max frequencies for the
> rest of the benchmarking run
> "Bad" behavior:
> a. Once the cpufreq governor is switched to "performance" (if it
> was anything different at boot), both CPU clusters stay at whatever
> frequencies they were at when the switch occurred
> b. While the benchmark runs through the stage where it says
> "Checking cpufreq OPP", CPU frequencies consecutively decrease from
> the "pre-max" OPP frequency to the min (max frequency never gets
> applied on either of the clusters!)
> c. After the benchmark finishes the stage where it says "Checking
> cpufreq OPP", both CPU clusters stay at their min frequencies for the
> rest of the benchmarking run
>
> I suspect it has something to do with the topmost OPP somehow becoming
> unselectable in ATF starting from binary BL31 v1.09 (and similarly in
> opensource TF-A). This time I couldn't reproduce the "permanently
> stuck" CPU frequencies though.
Open-source TF-A only seem to support rates up to 2208 MHz for cpub and
2016 MHz for cpul, see [3]. The opp-2304000000 should probably be
removed from rk3576.dtsi.
All rates starting from 816 MHz are expected to use the PVTPLL, i.e. the
configured osc ring length (by tf-a) and opp voltage (linux) will
regulate the rate. The measured rate can typically also be read from a
PVTPLL grf reg (0x18).
For the GPU clock I have an incoming series that switch to use GPU
PVTPLL instead of a normal PLL, see [4].
[3] https://github.com/ARM-software/arm-trusted-firmware/blob/master/plat/rockchip/rk3576/scmi/rk3576_clk.c#L264-L304
[4] https://github.com/Kwiboo/linux-rockchip/commits/next-20250428-rk35xx-scmi-gpu-clk/
Regards,
Jonas
>
> Here are the git bisect results (running in rkbin repo):
>
> 0b338fd6ae7ad816295a75c80b00968bb1868625 is the first bad commit
> commit 0b338fd6ae7ad816295a75c80b00968bb1868625 (HEAD)
> Author: XiaoDong Huang <derrick.huang@rock-chips.com>
> Date: Fri Jun 28 17:47:55 2024 +0800
>
> rk3576: bl31: update version to v1.09
>
> Build from ATF commit:
> 286c013b2 plat: rockchip: rk3576: Add support to set low length
> update feature:
> 286c013b2 plat: rockchip: rk3576: Add support to set low length
> 5fb78cd64 rockchip: uart: switch to loopback mode before
> checking busy status
> 02ff3b0da rockchip: uart: save uart register once
> 23bd4684e plat: rk3576: support to switch hptimer to 1G
> b4833e988 plat: rk3576: remove AUTOCS_EN_COUNT
> 437ed59cb plat: rockchip: rk3576: support aclk_sencure_s enable
> 6d8c67d6a plat: rk3576: support poweroff scu1 when cpu4~cpu7 off
>
> Change-Id: I0fcb5afefcc3865cf8c413b4c0ed00234d2675cb
> Signed-off-by: XiaoDong Huang <derrick.huang@rock-chips.com>
>
> RKTRUST/RK3576TRUST.ini | 2 +-
> bin/rk35/{rk3576_bl31_v1.08.elf => rk3576_bl31_v1.09.elf} | Bin
> 349032 -> 349032 bytes
> doc/release/RK3576_CN.md | 13 +++++++++++++
> doc/release/RK3576_EN.md | 14 ++++++++++++++
> 4 files changed, 28 insertions(+), 1 deletion(-)
> rename bin/rk35/{rk3576_bl31_v1.08.elf => rk3576_bl31_v1.09.elf} (82%)
>
> [1] https://github.com/rockchip-linux/rkbin.git
> [2] https://github.com/ThomasKaiser/sbc-bench
>
> Derrick, if you could chime in on what might be going on here, that
> would be greatly appreciated :)
>
> Best regards,
> Alexey
^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [PATCH 1/4] arm64: dts: rockchip: list all CPU supplies on ArmSoM Sige5
2025-06-23 17:40 ` Jonas Karlman
@ 2025-06-23 21:07 ` Jonas Karlman
2025-06-23 21:17 ` Heiko Stuebner
2025-06-24 7:41 ` Alexey Charkov
1 sibling, 1 reply; 44+ messages in thread
From: Jonas Karlman @ 2025-06-23 21:07 UTC (permalink / raw)
To: Piotr Oniszczuk, Alexey Charkov
Cc: Heiko Stuebner, Nicolas Frattaroli, XiaoDong Huang, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, devicetree, linux-arm-kernel,
linux-rockchip, linux-kernel
On 2025-06-23 19:40, Jonas Karlman wrote:
> On 2025-06-23 17:02, Piotr Oniszczuk wrote:
>>
>>
>>> Wiadomość napisana przez Alexey Charkov <alchark@gmail.com> w dniu 23 cze 2025, o godz. 15:58:
>>>
>>> On Mon, Jun 23, 2025 at 1:19 PM Alexey Charkov <alchark@gmail.com> wrote:
>>>>
>>>>
>>>
>>> Okay, I've bisected this.
>>>
>>> TLDR: Linux and u-boot seem to have nothing to do with it, opensource
>>> TF-A doesn't work, binary BL31 starting with v1.09 do not work. BL31
>>> v1.08 and earlier work fine.
>
> v1.09 added support for 1 GHz hrtimer in addition to the normal 24 MHz
> rate. Mainline U-Boot may only support use of 24 MHz hrtimer, unsure
> what impact the hrtimer rate has. Mixing blobs with/without 1 GHz
> support is known to cause issues. At one point the latest rkbin tree may
> have contained incompatible rk3576 blobs (mixed 1 ghz vs 24 mhz rate).
Clarification:
Following boot1 parameter activates use of 1 GHz hrtimer, see [3].
This parameter was added to rkbin repo before all blobs was updated to
fully support use of the 1 ghz mode, and is the source for incompatible
blobs I referenced above.
[BOOT1_PARAM]
WORD_2=0x100
[3] https://github.com/rockchip-linux/rkbin/commit/cbbc6868221fb416d4f0d86a10e493dbbbc1f117
Regards,
Jonas
>
> Did you try with newer blobs, i.e. ddr init v1.09, bl31 v1.19 blobs [1]
> and mainline U-Boot [2] ?
>
> [1] https://github.com/radxa/rkbin/commits/develop-v2025.04/
> [2] https://source.denx.de/u-boot/contributors/kwiboo/u-boot/-/commits/rk3576
>
> Regards,
> Jonas
>
>>
>>
>> just fyi:
>> to confirm: replacing only bl31 to 1.08 makes all good
>> with perf gov. clocks staying on 2200/2300
>> clock estimations are predictable, constant and estimating constantly 2400
>> ux is „like” on 3588
>>
>> Alexey: many thx for finding root cause component!
>>
>>
>
^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [PATCH 1/4] arm64: dts: rockchip: list all CPU supplies on ArmSoM Sige5
2025-06-23 21:07 ` Jonas Karlman
@ 2025-06-23 21:17 ` Heiko Stuebner
0 siblings, 0 replies; 44+ messages in thread
From: Heiko Stuebner @ 2025-06-23 21:17 UTC (permalink / raw)
To: Piotr Oniszczuk, Alexey Charkov, Jonas Karlman
Cc: Nicolas Frattaroli, XiaoDong Huang, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, devicetree, linux-arm-kernel,
linux-rockchip, linux-kernel
Am Montag, 23. Juni 2025, 23:07:53 Mitteleuropäische Sommerzeit schrieb Jonas Karlman:
> On 2025-06-23 19:40, Jonas Karlman wrote:
> > On 2025-06-23 17:02, Piotr Oniszczuk wrote:
> >>
> >>
> >>> Wiadomość napisana przez Alexey Charkov <alchark@gmail.com> w dniu 23 cze 2025, o godz. 15:58:
> >>>
> >>> On Mon, Jun 23, 2025 at 1:19 PM Alexey Charkov <alchark@gmail.com> wrote:
> >>>>
> >>>>
> >>>
> >>> Okay, I've bisected this.
> >>>
> >>> TLDR: Linux and u-boot seem to have nothing to do with it, opensource
> >>> TF-A doesn't work, binary BL31 starting with v1.09 do not work. BL31
> >>> v1.08 and earlier work fine.
> >
> > v1.09 added support for 1 GHz hrtimer in addition to the normal 24 MHz
> > rate. Mainline U-Boot may only support use of 24 MHz hrtimer, unsure
> > what impact the hrtimer rate has. Mixing blobs with/without 1 GHz
> > support is known to cause issues. At one point the latest rkbin tree may
> > have contained incompatible rk3576 blobs (mixed 1 ghz vs 24 mhz rate).
>
> Clarification:
> Following boot1 parameter activates use of 1 GHz hrtimer, see [3].
>
> This parameter was added to rkbin repo before all blobs was updated to
> fully support use of the 1 ghz mode, and is the source for incompatible
> blobs I referenced above.
>
> [BOOT1_PARAM]
> WORD_2=0x100
which I guess is something we don't do in u-boot at all right now?
Which would also mean, that something may have broken with the 24MHz mode
when the 1GHz thing was added. And nobody ever realized that because the
Rockchip thing uses that boot param for all of them?
>
> [3] https://github.com/rockchip-linux/rkbin/commit/cbbc6868221fb416d4f0d86a10e493dbbbc1f117
>
> Regards,
> Jonas
>
> >
> > Did you try with newer blobs, i.e. ddr init v1.09, bl31 v1.19 blobs [1]
> > and mainline U-Boot [2] ?
> >
> > [1] https://github.com/radxa/rkbin/commits/develop-v2025.04/
> > [2] https://source.denx.de/u-boot/contributors/kwiboo/u-boot/-/commits/rk3576
> >
> > Regards,
> > Jonas
> >
> >>
> >>
> >> just fyi:
> >> to confirm: replacing only bl31 to 1.08 makes all good
> >> with perf gov. clocks staying on 2200/2300
> >> clock estimations are predictable, constant and estimating constantly 2400
> >> ux is „like” on 3588
> >>
> >> Alexey: many thx for finding root cause component!
> >>
> >>
> >
>
>
^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [PATCH 1/4] arm64: dts: rockchip: list all CPU supplies on ArmSoM Sige5
2025-06-23 17:40 ` Jonas Karlman
2025-06-23 21:07 ` Jonas Karlman
@ 2025-06-24 7:41 ` Alexey Charkov
1 sibling, 0 replies; 44+ messages in thread
From: Alexey Charkov @ 2025-06-24 7:41 UTC (permalink / raw)
To: Jonas Karlman
Cc: Piotr Oniszczuk, Heiko Stuebner, Nicolas Frattaroli,
XiaoDong Huang, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
devicetree, linux-arm-kernel, linux-rockchip, linux-kernel
Hi Jonas,
On Mon, Jun 23, 2025 at 9:40 PM Jonas Karlman <jonas@kwiboo.se> wrote:
>
> On 2025-06-23 17:02, Piotr Oniszczuk wrote:
> >
> >
> >> Wiadomość napisana przez Alexey Charkov <alchark@gmail.com> w dniu 23 cze 2025, o godz. 15:58:
> >>
> >> On Mon, Jun 23, 2025 at 1:19 PM Alexey Charkov <alchark@gmail.com> wrote:
> >>>
> >>>
> >>
> >> Okay, I've bisected this.
> >>
> >> TLDR: Linux and u-boot seem to have nothing to do with it, opensource
> >> TF-A doesn't work, binary BL31 starting with v1.09 do not work. BL31
> >> v1.08 and earlier work fine.
>
> v1.09 added support for 1 GHz hrtimer in addition to the normal 24 MHz
> rate. Mainline U-Boot may only support use of 24 MHz hrtimer, unsure
> what impact the hrtimer rate has. Mixing blobs with/without 1 GHz
> support is known to cause issues. At one point the latest rkbin tree may
> have contained incompatible rk3576 blobs (mixed 1 ghz vs 24 mhz rate).
>
> Did you try with newer blobs, i.e. ddr init v1.09, bl31 v1.19 blobs [1]
> and mainline U-Boot [2] ?
>
> [1] https://github.com/radxa/rkbin/commits/develop-v2025.04/
> [2] https://source.denx.de/u-boot/contributors/kwiboo/u-boot/-/commits/rk3576
Thanks for the pointers! I've just tried the same with newer rkbin
blobs from Radxa's repo, as well as the tip of your rk3576 u-boot
branch. Same results: new blobs act weird, old blobs work fine (up to
and including bl31 v1.08).
> Clarification:
> Following boot1 parameter activates use of 1 GHz hrtimer, see [3].
>
> This parameter was added to rkbin repo before all blobs was updated to
> fully support use of the 1 ghz mode, and is the source for incompatible
> blobs I referenced above.
>
> [BOOT1_PARAM]
> WORD_2=0x100
>
> [3] https://github.com/rockchip-linux/rkbin/commit/cbbc6868221fb416d4f0d86a10e493dbbbc1f117
NB: I'm preparing the combined TPL+SPL+u-boot+ATF image
(u-boot-rockchip.bin) using the mainline u-boot binman-based approach,
not Rockchip boot_merger. So I don't think boot1_param gets applied
anywhere (for better or worse).
> > I suspect it has something to do with the topmost OPP somehow becoming
> > unselectable in ATF starting from binary BL31 v1.09 (and similarly in
> > opensource TF-A). This time I couldn't reproduce the "permanently
> > stuck" CPU frequencies though.
>
> Open-source TF-A only seem to support rates up to 2208 MHz for cpub and
> 2016 MHz for cpul, see [3]. The opp-2304000000 should probably be
> removed from rk3576.dtsi.
But both 2208 cpul and 2304 cpub rates work fine using bl31 v1.08, so
maybe the TF-A needs a fix instead? Or is this another case of
"overdrive mode" OPPs as with RK3588j?
Best regards,
Alexey
^ permalink raw reply [flat|nested] 44+ messages in thread
end of thread, other threads:[~2025-06-24 7:41 UTC | newest]
Thread overview: 44+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-06-03 17:01 [PATCH 0/4] arm64: dts: rockchip: enable further peripherals on ArmSoM Sige5 Alexey Charkov
2025-06-03 17:01 ` [PATCH 1/4] arm64: dts: rockchip: list all CPU supplies " Alexey Charkov
2025-06-04 18:38 ` Nicolas Frattaroli
2025-06-04 19:12 ` Alexey Charkov
2025-06-04 19:23 ` Nicolas Frattaroli
2025-06-04 19:54 ` Alexey Charkov
2025-06-05 13:22 ` Piotr Oniszczuk
2025-06-05 13:42 ` Alexey Charkov
2025-06-08 7:24 ` Piotr Oniszczuk
2025-06-09 14:05 ` Alexey Charkov
2025-06-15 15:59 ` Piotr Oniszczuk
2025-06-15 16:20 ` Alexey Charkov
2025-06-18 13:51 ` Alexey Charkov
2025-06-18 14:06 ` Nicolas Frattaroli
2025-06-18 14:48 ` Alexey Charkov
2025-06-20 16:02 ` Alexey Charkov
2025-06-21 19:35 ` Alexey Charkov
2025-06-21 19:44 ` Heiko Stuebner
2025-06-21 21:21 ` Alexey Charkov
2025-06-22 13:48 ` Heiko Stuebner
2025-06-23 9:19 ` Alexey Charkov
2025-06-23 13:58 ` Alexey Charkov
2025-06-23 15:02 ` Piotr Oniszczuk
2025-06-23 17:40 ` Jonas Karlman
2025-06-23 21:07 ` Jonas Karlman
2025-06-23 21:17 ` Heiko Stuebner
2025-06-24 7:41 ` Alexey Charkov
2025-06-23 18:04 ` Jonas Karlman
2025-06-05 11:17 ` Diederik de Haas
2025-06-05 11:23 ` Alexey Charkov
2025-06-03 17:01 ` [PATCH 2/4] arm64: dts: rockchip: enable USB A ports " Alexey Charkov
2025-06-03 17:51 ` Nicolas Frattaroli
2025-06-04 6:52 ` Alexey Charkov
2025-06-04 13:24 ` Nicolas Frattaroli
2025-06-03 17:01 ` [PATCH 3/4] arm64: dts: rockchip: enable wifi " Alexey Charkov
2025-06-04 19:01 ` Nicolas Frattaroli
2025-06-04 19:48 ` Alexey Charkov
2025-06-05 2:43 ` Jimmy Hon
2025-06-05 6:32 ` Alexey Charkov
2025-06-05 14:14 ` Alexey Charkov
2025-06-07 2:42 ` Jimmy Hon
2025-06-03 17:01 ` [PATCH 4/4] arm64: dts: rockchip: enable bluetooth " Alexey Charkov
2025-06-04 13:58 ` [PATCH 0/4] arm64: dts: rockchip: enable further peripherals " Rob Herring (Arm)
2025-06-04 14:15 ` Alexey Charkov
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).