[PATCH v2 09/17] i3c: renesas: Use reset_control_bulk_{assert, deassert}()
From: Claudiu Beznea
Date: Tue Jun 02 2026 - 09:34:53 EST
From: Claudiu Beznea <claudiu.beznea.uj@xxxxxxxxxxxxxx>
Use reset_control_bulk_assert() and reset_control_bulk_deassert() in the
suspend and resume paths to simplify the code.
Signed-off-by: Claudiu Beznea <claudiu.beznea.uj@xxxxxxxxxxxxxx>
---
Changes in v2:
- none
drivers/i3c/master/renesas-i3c.c | 30 +++++++++++++-----------------
1 file changed, 13 insertions(+), 17 deletions(-)
diff --git a/drivers/i3c/master/renesas-i3c.c b/drivers/i3c/master/renesas-i3c.c
index 7167ca12a328..860c9f2f17de 100644
--- a/drivers/i3c/master/renesas-i3c.c
+++ b/drivers/i3c/master/renesas-i3c.c
@@ -1485,6 +1485,10 @@ static void renesas_i3c_remove(struct platform_device *pdev)
static int renesas_i3c_suspend(struct device *dev)
{
struct renesas_i3c *i3c = dev_get_drvdata(dev);
+ struct reset_control_bulk_data resets[] = {
+ { .rstc = i3c->presetn },
+ { .rstc = i3c->tresetn },
+ };
int i, ret;
i2c_mark_adapter_suspended(&i3c->base.i2c);
@@ -1493,20 +1497,14 @@ static int renesas_i3c_suspend(struct device *dev)
for (i = 0; i < i3c->maxdevs; i++)
i3c->DATBASn[i] = renesas_readl(i3c->regs, DATBAS(i));
- ret = reset_control_assert(i3c->presetn);
+ ret = reset_control_bulk_assert(ARRAY_SIZE(resets), resets);
if (ret)
goto err_mark_resumed;
- ret = reset_control_assert(i3c->tresetn);
- if (ret)
- goto err_presetn;
-
clk_bulk_disable(i3c->num_clks, i3c->clks);
return 0;
-err_presetn:
- reset_control_deassert(i3c->presetn);
err_mark_resumed:
i2c_mark_adapter_resumed(&i3c->base.i2c);
@@ -1516,19 +1514,19 @@ static int renesas_i3c_suspend(struct device *dev)
static int renesas_i3c_resume(struct device *dev)
{
struct renesas_i3c *i3c = dev_get_drvdata(dev);
+ struct reset_control_bulk_data resets[] = {
+ { .rstc = i3c->presetn },
+ { .rstc = i3c->tresetn },
+ };
int ret;
- ret = reset_control_deassert(i3c->tresetn);
+ ret = reset_control_bulk_deassert(ARRAY_SIZE(resets), resets);
if (ret)
return ret;
- ret = reset_control_deassert(i3c->presetn);
- if (ret)
- goto err_tresetn;
-
ret = clk_bulk_enable(i3c->num_clks, i3c->clks);
if (ret)
- goto err_presetn;
+ goto err_resets_asserted;
ret = renesas_i3c_reset(i3c);
if (ret)
@@ -1563,10 +1561,8 @@ static int renesas_i3c_resume(struct device *dev)
err_clks_disable:
clk_bulk_disable(i3c->num_clks, i3c->clks);
-err_presetn:
- reset_control_assert(i3c->presetn);
-err_tresetn:
- reset_control_assert(i3c->tresetn);
+err_resets_asserted:
+ reset_control_bulk_assert(ARRAY_SIZE(resets), resets);
return ret;
}
--
2.43.0