[PATCH v4 3/3] i3c: dw: Add apb reset support
Jisheng Zhang <[email protected]>
| Newsgroups | org.infradead.lists.linux-i3c,org.kernel.vger.linux-devicetree |
|---|---|
| Message-ID | <[email protected]> |
Add support of apb reset which is to reset the APB interface. Signed-off-by: Jisheng Zhang <[email protected]> --- drivers/i3c/master/dw-i3c-master.c | 7 +++++++ drivers/i3c/master/dw-i3c-master.h | 1 + 2 files changed, 8 insertions(+) diff --git a/drivers/i3c/master/dw-i3c-master.c b/drivers/i3c/master/dw-i3c-master.c index 655693a2187e..9de54d584bc3 100644 --- a/drivers/i3c/master/dw-i3c-master.c +++ b/drivers/i3c/master/dw-i3c-master.c @@ -1591,6 +1591,11 @@ int dw_i3c_common_probe(struct dw_i3c_master *master, if (IS_ERR(master->core_rst)) return PTR_ERR(master->core_rst); + master->apb_rst = devm_reset_control_get_optional_exclusive_deasserted(&pdev->dev, + "apb_rst"); + if (IS_ERR(master->apb_rst)) + return PTR_ERR(master->apb_rst); + spin_lock_init(&master->xferqueue.lock); INIT_LIST_HEAD(&master->xferqueue.list); @@ -1765,6 +1770,7 @@ static int __maybe_unused dw_i3c_master_runtime_suspend(struct device *dev) dw_i3c_master_disable(master); reset_control_assert(master->core_rst); + reset_control_assert(master->apb_rst); dw_i3c_master_disable_clks(master); pinctrl_pm_select_sleep_state(dev); return 0; @@ -1777,6 +1783,7 @@ static int __maybe_unused dw_i3c_master_runtime_resume(struct device *dev) pinctrl_pm_select_default_state(dev); dw_i3c_master_enable_clks(master); reset_control_deassert(master->core_rst); + reset_control_deassert(master->apb_rst); dw_i3c_master_set_intr_regs(master); dw_i3c_master_restore_timing_regs(master); diff --git a/drivers/i3c/master/dw-i3c-master.h b/drivers/i3c/master/dw-i3c-master.h index c5cb695c16ab..a4ba60043288 100644 --- a/drivers/i3c/master/dw-i3c-master.h +++ b/drivers/i3c/master/dw-i3c-master.h @@ -37,6 +37,7 @@ struct dw_i3c_master { struct dw_i3c_master_caps caps; void __iomem *regs; struct reset_control *core_rst; + struct reset_control *apb_rst; struct clk *core_clk; struct clk *pclk; char version[5]; -- 2.53.0 -- linux-i3c mailing list [email protected] http://lists.infradead.org/mailman/listinfo/linux-i3c