I have a Radxa Zero 3E and was facing the same issue.
Since RK3566 is a stripped down version of RK3588. I figured the quirks on RK3588 might be able to apply to RK3566 as well.
The issue seems to be fixed now after I implemented these quirks taken from rk3588-base.dtsi on top of rk356x-base.dtsi. tested on Linux 6.17.9 and 6.18.0-rc7(Armbian linux-edge-rockchip64)
usb_host1_xhci: usb@fd000000 {
compatible = "rockchip,rk3568-dwc3", "snps,dwc3";
reg = <0x0 0xfd000000 0x0 0x400000>;
interrupts = <GIC_SPI 170 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&cru CLK_USB3OTG1_REF>, <&cru CLK_USB3OTG1_SUSPEND>,
<&cru ACLK_USB3OTG1>;
clock-names = "ref_clk", "suspend_clk",
"bus_clk";
dr_mode = "host";
phys = <&usb2phy0_host>, <&combphy1 PHY_TYPE_USB3>;
phy-names = "usb2-phy", "usb3-phy";
phy_type = "utmi_wide";
power-domains = <&power RK3568_PD_PIPE>;
resets = <&cru SRST_USB3OTG1>;
snps,dis_u2_susphy_quirk;
+ snps,dis_enblslpm_quirk;
+ snps,dis-u2-freeclk-exists-quirk;
+ snps,dis-del-phy-power-chg-quirk;
+ snps,dis-tx-ipgap-linecheck-quirk;
status = "disabled";
};
If anyone else has other RK356x devices please try it out and I think it would be nice if someone could submit a patch to mainline kernel dts.