Skip to content

Commit bef1eef

Browse files
outman119alexandrebelloni
authored andcommitted
i3c: master: dw-i3c: Fix missing reset assertion in remove() callback
The reset line acquired during probe is currently left deasserted when the driver is unbound. Switch to devm_reset_control_get_optional_exclusive_deasserted() to ensure the reset is automatically re-asserted by the devres core when the driver is removed. Fixes: 62fe9d0 ("i3c: dw: Add power management support") Reviewed-by: Philipp Zabel <p.zabel@pengutronix.de> Signed-off-by: Felix Gu <ustc.gu@gmail.com> Reviewed-by: Frank Li <Frank.Li@nxp.com> Link: https://patch.msgid.link/20260320-dw-i3c-v3-1-477040c2e3f5@gmail.com Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
1 parent e7a7186 commit bef1eef

1 file changed

Lines changed: 3 additions & 8 deletions

File tree

drivers/i3c/master/dw-i3c-master.c

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1606,13 +1606,11 @@ int dw_i3c_common_probe(struct dw_i3c_master *master,
16061606
if (IS_ERR(master->pclk))
16071607
return PTR_ERR(master->pclk);
16081608

1609-
master->core_rst = devm_reset_control_get_optional_exclusive(&pdev->dev,
1610-
"core_rst");
1609+
master->core_rst = devm_reset_control_get_optional_exclusive_deasserted(&pdev->dev,
1610+
"core_rst");
16111611
if (IS_ERR(master->core_rst))
16121612
return PTR_ERR(master->core_rst);
16131613

1614-
reset_control_deassert(master->core_rst);
1615-
16161614
spin_lock_init(&master->xferqueue.lock);
16171615
INIT_LIST_HEAD(&master->xferqueue.list);
16181616

@@ -1624,7 +1622,7 @@ int dw_i3c_common_probe(struct dw_i3c_master *master,
16241622
dw_i3c_master_irq_handler, 0,
16251623
dev_name(&pdev->dev), master);
16261624
if (ret)
1627-
goto err_assert_rst;
1625+
return ret;
16281626

16291627
platform_set_drvdata(pdev, master);
16301628

@@ -1673,9 +1671,6 @@ int dw_i3c_common_probe(struct dw_i3c_master *master,
16731671
pm_runtime_set_suspended(&pdev->dev);
16741672
pm_runtime_dont_use_autosuspend(&pdev->dev);
16751673

1676-
err_assert_rst:
1677-
reset_control_assert(master->core_rst);
1678-
16791674
return ret;
16801675
}
16811676
EXPORT_SYMBOL_GPL(dw_i3c_common_probe);

0 commit comments

Comments
 (0)