[PATCH 06/17] i3c: renesas: Reset the controller on resume
Claudiu Beznea <[email protected]>
| Newsgroups | org.infradead.lists.linux-i3c,org.kernel.vger.linux-kernel,org.kernel.vger.linux-renesas-soc,org.kernel.vger.stable |
|---|---|
| Message-ID | <[email protected]> |
From: Claudiu Beznea <[email protected]> Reset the controller on resume after enabling the clocks to follow the same sequence as in probe and avoid potential ordering related failures. Fixes: e7218986319b ("i3c: renesas: Add suspend/resume support") Cc: [email protected] Signed-off-by: Claudiu Beznea <[email protected]> --- drivers/i3c/master/renesas-i3c.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/drivers/i3c/master/renesas-i3c.c b/drivers/i3c/master/renesas-i3c.c index 5174a390d668..2f3c6ddf75c0 100644 --- a/drivers/i3c/master/renesas-i3c.c +++ b/drivers/i3c/master/renesas-i3c.c @@ -1464,6 +1464,10 @@ static int renesas_i3c_resume_noirq(struct device *dev) if (ret) goto err_presetn; + ret = renesas_i3c_reset(i3c); + if (ret) + goto err_clks_disable; + /* Re-store I3C registers value. */ renesas_writel(i3c->regs, STDBR, i3c->i3c_STDBR); renesas_writel(i3c->regs, EXTBR, i3c->extbr); @@ -1483,6 +1487,8 @@ static int renesas_i3c_resume_noirq(struct device *dev) return 0; +err_clks_disable: + clk_bulk_disable(i3c->num_clks, i3c->clks); err_presetn: reset_control_assert(i3c->presetn); err_tresetn: -- 2.43.0 -- linux-i3c mailing list [email protected] http://lists.infradead.org/mailman/listinfo/linux-i3c