Re: [PATCH 2/2] arm64: dts: rockchip: Fix devices suspend freeze on RK3568/RK3566
From: Diederik de Haas
Date: Fri Jun 12 2026 - 06:48:04 EST
Hi Jonas,
On Tue Jun 9, 2026 at 5:41 PM CEST, Jonas Karlman wrote:
> The EHCI/OHCI controller depends on clk_usbphy1_480m being enabled, or
> the system may freeze when registers are accessed, i.e. during suspend
> in ohci_suspend().
>
> Add the missing clk_usbphy1_480m clocks reference to EHCI/OHCI
> controllers to ensure the clock is enabled when ECHI/OHCI registers are
> accessed to prevent a system freeze.
>
> Fixes suspend pm_test issue with EHCI/OHCI devices due to the missing
> clk_usbphy1_480m reference and makes following pm_test modes work:
>
> echo N > /sys/module/printk/parameters/console_suspend
>
> echo devices > /sys/power/pm_test
> echo platform > /sys/power/pm_test
> echo processors > /sys/power/pm_test
> echo core > /sys/power/pm_test
>
> echo mem > /sys/power/state
I did quite a few of ``echo mem > /sys/power/state`` while switching between
the various pm_test options on my PineTab2.
On my 7.1-rc7 kernel without this patch that resulted at some point in endless
'rk_iommu' errors and the only way out of that was a hard power down via the
power button.
On my 7.1-rc7 kernel with this patch, I have not been able to trigger such an
issue. Over multiple boots.
So feel free to include my
Tested-by: Diederik de Haas <diederik@xxxxxxxxxxxxxx>
FTR: I'm still able to trigger resume issues, so more is needed to make my
original tests [1] succeed as well. But I always suspected there were several
issues at play including the display pipeline.
It looks like this patch fixes at least one of them.
Thanks :-)
Cheers,
Diederik
[1] https://review.trustedfirmware.org/c/TF-A/trusted-firmware-a/+/31265
> Fixes: 91c4c3e06a25 ("arm64: dts: rockchip: add usb2 nodes to rk3568 device tree")
> Fixes: 78f7186095db ("arm64: dts: rockchip: rename and sort the rk356x usb2 phy handles")
> Signed-off-by: Jonas Karlman <jonas@xxxxxxxxx>
> ---
> arch/arm64/boot/dts/rockchip/rk356x-base.dtsi | 16 ++++++++--------
> 1 file changed, 8 insertions(+), 8 deletions(-)
>
> diff --git a/arch/arm64/boot/dts/rockchip/rk356x-base.dtsi b/arch/arm64/boot/dts/rockchip/rk356x-base.dtsi
> index a5832895bd39..c930a6fd6ea0 100644
> --- a/arch/arm64/boot/dts/rockchip/rk356x-base.dtsi
> +++ b/arch/arm64/boot/dts/rockchip/rk356x-base.dtsi
> @@ -321,44 +321,44 @@ its: msi-controller@fd440000 {
> };
>
> usb_host0_ehci: usb@fd800000 {
> - compatible = "generic-ehci";
> + compatible = "rockchip,rk3568-ehci", "generic-ehci";
> reg = <0x0 0xfd800000 0x0 0x40000>;
> interrupts = <GIC_SPI 130 IRQ_TYPE_LEVEL_HIGH>;
> clocks = <&cru HCLK_USB2HOST0>, <&cru HCLK_USB2HOST0_ARB>,
> - <&cru PCLK_USB>;
> + <&cru PCLK_USB>, <&usb2phy1>;
> phys = <&usb2phy1_otg>;
> phy-names = "usb";
> status = "disabled";
> };
>
> usb_host0_ohci: usb@fd840000 {
> - compatible = "generic-ohci";
> + compatible = "rockchip,rk3568-ohci", "generic-ohci";
> reg = <0x0 0xfd840000 0x0 0x40000>;
> interrupts = <GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>;
> clocks = <&cru HCLK_USB2HOST0>, <&cru HCLK_USB2HOST0_ARB>,
> - <&cru PCLK_USB>;
> + <&cru PCLK_USB>, <&usb2phy1>;
> phys = <&usb2phy1_otg>;
> phy-names = "usb";
> status = "disabled";
> };
>
> usb_host1_ehci: usb@fd880000 {
> - compatible = "generic-ehci";
> + compatible = "rockchip,rk3568-ehci", "generic-ehci";
> reg = <0x0 0xfd880000 0x0 0x40000>;
> interrupts = <GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>;
> clocks = <&cru HCLK_USB2HOST1>, <&cru HCLK_USB2HOST1_ARB>,
> - <&cru PCLK_USB>;
> + <&cru PCLK_USB>, <&usb2phy1>;
> phys = <&usb2phy1_host>;
> phy-names = "usb";
> status = "disabled";
> };
>
> usb_host1_ohci: usb@fd8c0000 {
> - compatible = "generic-ohci";
> + compatible = "rockchip,rk3568-ohci", "generic-ohci";
> reg = <0x0 0xfd8c0000 0x0 0x40000>;
> interrupts = <GIC_SPI 134 IRQ_TYPE_LEVEL_HIGH>;
> clocks = <&cru HCLK_USB2HOST1>, <&cru HCLK_USB2HOST1_ARB>,
> - <&cru PCLK_USB>;
> + <&cru PCLK_USB>, <&usb2phy1>;
> phys = <&usb2phy1_host>;
> phy-names = "usb";
> status = "disabled";