Re: [PATCH V3 11/16] i3c: mipi-i3c-hci: Factor out reset-and-restore helper

Frank Li <[email protected]>
Newsgroups org.infradead.lists.linux-i3c,org.kernel.vger.linux-kernel
Message-ID <agNdaBruGi5a3tg2@lizhi-Precision-Tower-5810>
On Mon, May 04, 2026 at 02:33:47PM +0300, Adrian Hunter wrote:
> Factor the reset-and-restore sequence out of i3c_hci_rpm_resume() into
> a separate helper.
>
> This allows the same logic to be reused for recovery paths in subsequent
> changes without duplicating suspend/resume handling.
>
> No functional change.
>
> Signed-off-by: Adrian Hunter <[email protected]>
> ---
Reviewed-by: Frank Li <[email protected]>
>
>
> Changes in V3:
>
> 	None
>
> Changes in V2:
>
> 	Drop redundant i3c_hci_sync_irq_inactive(hci)
> 	from i3c_hci_reset_and_restore() because it is called by
> 	hci->io->suspend() anyway
>
>
>  drivers/i3c/master/mipi-i3c-hci/core.c | 19 +++++++++++++++++--
>  drivers/i3c/master/mipi-i3c-hci/hci.h  |  2 ++
>  2 files changed, 19 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/i3c/master/mipi-i3c-hci/core.c b/drivers/i3c/master/mipi-i3c-hci/core.c
> index 8274c84b16be..12a0122fb709 100644
> --- a/drivers/i3c/master/mipi-i3c-hci/core.c
> +++ b/drivers/i3c/master/mipi-i3c-hci/core.c
> @@ -798,9 +798,8 @@ int i3c_hci_rpm_suspend(struct device *dev)
>  }
>  EXPORT_SYMBOL_GPL(i3c_hci_rpm_suspend);
>
> -int i3c_hci_rpm_resume(struct device *dev)
> +static int i3c_hci_do_reset_and_restore(struct i3c_hci *hci)
>  {
> -	struct i3c_hci *hci = dev_get_drvdata(dev);
>  	int ret;
>
>  	ret = i3c_hci_reset_and_init(hci);
> @@ -821,6 +820,22 @@ int i3c_hci_rpm_resume(struct device *dev)
>
>  	return 0;
>  }
> +
> +int i3c_hci_reset_and_restore(struct i3c_hci *hci)
> +{
> +	i3c_hci_bus_disable(hci);
> +
> +	hci->io->suspend(hci);
> +
> +	return i3c_hci_do_reset_and_restore(hci);
> +}
> +
> +int i3c_hci_rpm_resume(struct device *dev)
> +{
> +	struct i3c_hci *hci = dev_get_drvdata(dev);
> +
> +	return i3c_hci_do_reset_and_restore(hci);
> +}
>  EXPORT_SYMBOL_GPL(i3c_hci_rpm_resume);
>
>  static int i3c_hci_runtime_suspend(struct device *dev)
> diff --git a/drivers/i3c/master/mipi-i3c-hci/hci.h b/drivers/i3c/master/mipi-i3c-hci/hci.h
> index 97c31a315a6e..a3151c26827e 100644
> --- a/drivers/i3c/master/mipi-i3c-hci/hci.h
> +++ b/drivers/i3c/master/mipi-i3c-hci/hci.h
> @@ -175,4 +175,6 @@ int i3c_hci_process_xfer(struct i3c_hci *hci, struct hci_xfer *xfer, int n);
>  int i3c_hci_rpm_suspend(struct device *dev);
>  int i3c_hci_rpm_resume(struct device *dev);
>
> +int i3c_hci_reset_and_restore(struct i3c_hci *hci);
> +
>  #endif
> --
> 2.51.0
>

-- 
linux-i3c mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-i3c
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.