i3c: dw: Add apb reset support
Subsystems (2)
PATCH 1/1 i3c: dw: Add apb reset support
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 | 9 +++++++++ drivers/i3c/master/dw-i3c-master.h | 1 + 2 files changed, 10 insertions(+)
drivers/i3c/master/dw-i3c-master.c +9 -0
@@ -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);
drivers/i3c/master/dw-i3c-master.h +1 -0
@@ -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 ];
Signature · 1 line
2.51.0
Frank Li
reviewerQuoted 13 lines · Jisheng Zhang
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 | 9 +++++++++ drivers/i3c/master/dw-i3c-master.h | 1 + 2 files changed, 10 insertions(+)drivers/i3c/master/dw-i3c-master.c +0
-0
drivers/i3c/master/dw-i3c-master.c int dw_i3c_common_probe(struct dw_i3c_master *master, · line 1562
Quoted 5 lines
drivers/i3c/master/dw-i3c-master.c +2
-0@@ -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
Quoted 47 lines
drivers/i3c/master/dw-i3c-master.c +7
-0+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);drivers/i3c/master/dw-i3c-master.h +1
-1@@ -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
Quoted 17 lines · Frank Li
Quoted 16 lines · Jisheng Zhang
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 | 9 +++++++++ drivers/i3c/master/dw-i3c-master.h | 1 + 2 files changed, 10 insertions(+)drivers/i3c/master/dw-i3c-master.c +0
-0@@ -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);
Quoted 4 lines
drivers/i3c/master/dw-i3c-master.c int dw_i3c_common_probe(struct dw_i3c_master *master, · line 1562
Quoted 2 lines
drivers/i3c/master/dw-i3c-master.c +2
-0+ 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.
The binding defines no resets at all, so there's a missing patch here.