* [PATCH] bus: sunxi-rsb: fail hardware init on soft-reset timeout
@ 2026-06-25 0:34 Pengpeng Hou
2026-06-27 6:40 ` Jernej Škrabec
0 siblings, 1 reply; 2+ messages in thread
From: Pengpeng Hou @ 2026-06-25 0:34 UTC (permalink / raw)
To: Chen-Yu Tsai
Cc: pengpeng, Jernej Skrabec, Samuel Holland, Philipp Zabel,
linux-arm-kernel, linux-sunxi, linux-kernel
sunxi_rsb_hw_init() issues a controller soft reset and waits for the reset
bit to clear, but it ignores readl_poll_timeout()'s return value.
If the controller never leaves reset, probe can continue to publish child
devices and system resume can report success without a usable RSB
controller.
Return the timeout error, assert reset again, and disable the clock before
leaving the hardware-init path.
Signed-off-by: Pengpeng Hou <pengpeng@iscas.ac.cn>
---
drivers/bus/sunxi-rsb.c | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/drivers/bus/sunxi-rsb.c b/drivers/bus/sunxi-rsb.c
index daf0ea563..f83224dea 100644
--- a/drivers/bus/sunxi-rsb.c
+++ b/drivers/bus/sunxi-rsb.c
@@ -669,8 +669,12 @@ static int sunxi_rsb_hw_init(struct sunxi_rsb *rsb)
/* reset the controller */
writel(RSB_CTRL_SOFT_RST, rsb->regs + RSB_CTRL);
- readl_poll_timeout(rsb->regs + RSB_CTRL, reg,
- !(reg & RSB_CTRL_SOFT_RST), 1000, 100000);
+ ret = readl_poll_timeout(rsb->regs + RSB_CTRL, reg,
+ !(reg & RSB_CTRL_SOFT_RST), 1000, 100000);
+ if (ret) {
+ dev_err(dev, "soft reset timed out\n");
+ goto err_reset_assert;
+ }
/*
* Clock frequency and delay calculation code is from
@@ -696,6 +700,8 @@ static int sunxi_rsb_hw_init(struct sunxi_rsb *rsb)
return 0;
+err_reset_assert:
+ reset_control_assert(rsb->rstc);
err_clk_disable:
clk_disable_unprepare(rsb->clk);
--
2.50.1 (Apple Git-155)
^ permalink raw reply related [flat|nested] 2+ messages in thread* Re: [PATCH] bus: sunxi-rsb: fail hardware init on soft-reset timeout
2026-06-25 0:34 [PATCH] bus: sunxi-rsb: fail hardware init on soft-reset timeout Pengpeng Hou
@ 2026-06-27 6:40 ` Jernej Škrabec
0 siblings, 0 replies; 2+ messages in thread
From: Jernej Škrabec @ 2026-06-27 6:40 UTC (permalink / raw)
To: Chen-Yu Tsai, Pengpeng Hou
Cc: pengpeng, Samuel Holland, Philipp Zabel, linux-arm-kernel,
linux-sunxi, linux-kernel
Dne četrtek, 25. junij 2026 ob 02:34:16 Srednjeevropski poletni čas je Pengpeng Hou napisal(a):
> sunxi_rsb_hw_init() issues a controller soft reset and waits for the reset
> bit to clear, but it ignores readl_poll_timeout()'s return value.
>
> If the controller never leaves reset, probe can continue to publish child
> devices and system resume can report success without a usable RSB
> controller.
>
> Return the timeout error, assert reset again, and disable the clock before
> leaving the hardware-init path.
>
> Signed-off-by: Pengpeng Hou <pengpeng@iscas.ac.cn>
Acked-by: Jernej Skrabec <jernej.skrabec@gmail.com>
Best regards,
Jernej
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-06-27 6:41 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-06-25 0:34 [PATCH] bus: sunxi-rsb: fail hardware init on soft-reset timeout Pengpeng Hou
2026-06-27 6:40 ` Jernej Škrabec
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox