* [PATCH] i3c: dw: Add apb reset support
@ 2025-11-02 10:02 Jisheng Zhang
2025-11-03 15:44 ` Frank Li
0 siblings, 1 reply; 2+ messages in thread
From: Jisheng Zhang @ 2025-11-02 10:02 UTC (permalink / raw)
To: Alexandre Belloni, Frank Li; +Cc: linux-i3c, linux-kernel
Add support of apb reset which is to reset the APB interface.
Signed-off-by: Jisheng Zhang <jszhang@kernel.org>
---
drivers/i3c/master/dw-i3c-master.c | 9 +++++++++
drivers/i3c/master/dw-i3c-master.h | 1 +
2 files changed, 10 insertions(+)
diff --git a/drivers/i3c/master/dw-i3c-master.c b/drivers/i3c/master/dw-i3c-master.c
index 9ceedf09c3b6..ca2863d2b2b7 100644
--- a/drivers/i3c/master/dw-i3c-master.c
+++ b/drivers/i3c/master/dw-i3c-master.c
@@ -1558,7 +1558,13 @@ 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(&pdev->dev,
+ "apb_rst");
+ if (IS_ERR(master->apb_rst))
+ return PTR_ERR(master->apb_rst);
+
reset_control_deassert(master->core_rst);
+ reset_control_deassert(master->apb_rst);
spin_lock_init(&master->xferqueue.lock);
INIT_LIST_HEAD(&master->xferqueue.list);
@@ -1607,6 +1613,7 @@ int dw_i3c_common_probe(struct dw_i3c_master *master,
err_assert_rst:
reset_control_assert(master->core_rst);
+ reset_control_assert(master->apb_rst);
return ret;
}
@@ -1711,6 +1718,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;
@@ -1723,6 +1731,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.51.0
--
linux-i3c mailing list
linux-i3c@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-i3c
^ permalink raw reply related [flat|nested] 2+ messages in thread* Re: [PATCH] i3c: dw: Add apb reset support
2025-11-02 10:02 [PATCH] i3c: dw: Add apb reset support Jisheng Zhang
@ 2025-11-03 15:44 ` Frank Li
0 siblings, 0 replies; 2+ messages in thread
From: Frank Li @ 2025-11-03 15:44 UTC (permalink / raw)
To: Jisheng Zhang; +Cc: Alexandre Belloni, linux-i3c, linux-kernel
On Sun, Nov 02, 2025 at 06:02:37PM +0800, Jisheng Zhang wrote:
> Add support of apb reset which is to reset the APB interface.
>
> Signed-off-by: Jisheng Zhang <jszhang@kernel.org>
> ---
> drivers/i3c/master/dw-i3c-master.c | 9 +++++++++
> drivers/i3c/master/dw-i3c-master.h | 1 +
> 2 files changed, 10 insertions(+)
>
> diff --git a/drivers/i3c/master/dw-i3c-master.c b/drivers/i3c/master/dw-i3c-master.c
> index 9ceedf09c3b6..ca2863d2b2b7 100644
> --- a/drivers/i3c/master/dw-i3c-master.c
> +++ b/drivers/i3c/master/dw-i3c-master.c
> @@ -1558,7 +1558,13 @@ 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(&pdev->dev,
> + "apb_rst");
Does binding already add "app_rst"? The name "app" should be enough.
Frank
> + if (IS_ERR(master->apb_rst))
> + return PTR_ERR(master->apb_rst);
> +
> reset_control_deassert(master->core_rst);
> + reset_control_deassert(master->apb_rst);
>
> spin_lock_init(&master->xferqueue.lock);
> INIT_LIST_HEAD(&master->xferqueue.list);
> @@ -1607,6 +1613,7 @@ int dw_i3c_common_probe(struct dw_i3c_master *master,
>
> err_assert_rst:
> reset_control_assert(master->core_rst);
> + reset_control_assert(master->apb_rst);
>
> return ret;
> }
> @@ -1711,6 +1718,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;
> @@ -1723,6 +1731,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.51.0
>
--
linux-i3c mailing list
linux-i3c@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-i3c
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2025-11-03 15:44 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-11-02 10:02 [PATCH] i3c: dw: Add apb reset support Jisheng Zhang
2025-11-03 15:44 ` Frank Li
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).