From 4b51f88e56c54e3b517e584916241c4942dbfc5f Mon Sep 17 00:00:00 2001 From: Paolo Sabatino Date: Wed, 29 May 2024 22:36:49 +0200 Subject: [PATCH] rk322x: keep usb resets deasserted on exit uboot default behaviour is the assert resets when it has to pass control to the kernel. This may cause compatibility issues if the kernel driver is not instructed to properly deassert the resets, so we change the uboot behaviour for dwc and ehci usb drivers to deassert reset on exit. --- .../rk322x-add-usb-reset-props.patch | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/patch/u-boot/v2024.01/board_rk322x-box/rk322x-add-usb-reset-props.patch b/patch/u-boot/v2024.01/board_rk322x-box/rk322x-add-usb-reset-props.patch index 1035b4d848..c54d672be9 100644 --- a/patch/u-boot/v2024.01/board_rk322x-box/rk322x-add-usb-reset-props.patch +++ b/patch/u-boot/v2024.01/board_rk322x-box/rk322x-add-usb-reset-props.patch @@ -46,7 +46,42 @@ index 8eed9e3a92..ffe503e5db 100644 + reset-names = "ehci"; status = "disabled"; }; + +diff --git a/drivers/usb/host/dwc2.c b/drivers/usb/host/dwc2.c +index 936e30438d..09d3805e78 100644 +--- a/drivers/usb/host/dwc2.c ++++ b/drivers/usb/host/dwc2.c +@@ -1436,7 +1438,10 @@ static int dwc2_usb_remove(struct udevice *dev) + dwc2_uninit_common(priv->regs); + +- reset_release_bulk(&priv->resets); ++ // Assert first and then leave the resets deasserted ++ reset_assert_bulk(&priv->resets); ++ reset_deassert_bulk(&priv->resets); ++ + clk_disable_bulk(&priv->clks); + clk_release_bulk(&priv->clks); + +diff --git a/drivers/usb/host/ehci-generic.c b/drivers/usb/host/ehci-generic.c +index 936e30438d..09d3805e78 100644 +--- a/drivers/usb/host/ehci-generic.c ++++ b/drivers/usb/host/ehci-generic.c +@@ -148,9 +148,9 @@ static int ehci_usb_remove(struct udevice *dev) + if (ret) + return ret; + +- ret = reset_release_bulk(&priv->resets); +- if (ret) +- return ret; ++ // Assert first and then leave the resets deasserted ++ reset_assert_bulk(&priv->resets); ++ reset_deassert_bulk(&priv->resets); + + return clk_release_bulk(&priv->clocks); + } -- 2.34.1 + +