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