[PATCH V2] i3c: dw: Add shutdown support to dw_i3c_master driver

Guntupalli, Manikanta manikanta.guntupalli at amd.com
Thu Sep 11 23:54:32 PDT 2025


[Public]

Ping!

> -----Original Message-----
> From: Guntupalli, Manikanta
> Sent: Monday, September 1, 2025 1:18 PM
> To: Manikanta Guntupalli <manikanta.guntupalli at amd.com>; git (AMD-Xilinx)
> <git at amd.com>; alexandre.belloni at bootlin.com; Frank.Li at nxp.com;
> wsa+renesas at sang-engineering.com; quic_msavaliy at quicinc.com; S-k, Shyam-
> sundar <Shyam-sundar.S-k at amd.com>; xiaopei01 at kylinos.cn;
> billy_tsai at aspeedtech.com; linux-i3c at lists.infradead.org; linux-
> kernel at vger.kernel.org
> Cc: Simek, Michal <michal.simek at amd.com>; Pandey, Radhey Shyam
> <radhey.shyam.pandey at amd.com>; Goud, Srinivas <srinivas.goud at amd.com>;
> Datta, Shubhrajyoti <shubhrajyoti.datta at amd.com>; manion05gk at gmail.com
> Subject: RE: [PATCH V2] i3c: dw: Add shutdown support to dw_i3c_master driver
>
> Ping!
>
> > -----Original Message-----
> > From: Manikanta Guntupalli <manikanta.guntupalli at amd.com>
> > Sent: Wednesday, July 30, 2025 8:42 PM
> > To: git (AMD-Xilinx) <git at amd.com>; alexandre.belloni at bootlin.com;
> > Frank.Li at nxp.com; wsa+renesas at sang-engineering.com;
> > quic_msavaliy at quicinc.com; S-k, Shyam-sundar
> > <Shyam-sundar.S-k at amd.com>; xiaopei01 at kylinos.cn;
> > billy_tsai at aspeedtech.com; linux-i3c at lists.infradead.org;
> > linux-kernel at vger.kernel.org
> > Cc: Simek, Michal <michal.simek at amd.com>; Pandey, Radhey Shyam
> > <radhey.shyam.pandey at amd.com>; Goud, Srinivas <srinivas.goud at amd.com>;
> > Datta, Shubhrajyoti <shubhrajyoti.datta at amd.com>;
> > manion05gk at gmail.com; Guntupalli, Manikanta
> > <manikanta.guntupalli at amd.com>
> > Subject: [PATCH V2] i3c: dw: Add shutdown support to dw_i3c_master
> > driver
> >
> > Add shutdown handler to the Synopsys DesignWare I3C master driver,
> > ensuring the device is gracefully disabled during system shutdown.
> >
> > The shutdown handler cancels any pending hot-join work and disables interrupts.
> >
> > Signed-off-by: Manikanta Guntupalli <manikanta.guntupalli at amd.com>
> > ---
> > Changes for V2:
> > Removed pm_runtime_mark_last_busy() call from the shutdown handler, as
> > it is being removed in the following commit.
> > https://lore.kernel.org/linux-pm/20250704075225.3212486-1-
> > sakari.ailus at linux.intel.com/
> > ---
> >  drivers/i3c/master/dw-i3c-master.c | 23 +++++++++++++++++++++++
> >  1 file changed, 23 insertions(+)
> >
> > diff --git a/drivers/i3c/master/dw-i3c-master.c
> > b/drivers/i3c/master/dw-i3c-master.c
> > index ae1992665673..2d16b7d74743 100644
> > --- a/drivers/i3c/master/dw-i3c-master.c
> > +++ b/drivers/i3c/master/dw-i3c-master.c
> > @@ -1762,6 +1762,28 @@ static const struct dev_pm_ops dw_i3c_pm_ops = {
> >     SET_RUNTIME_PM_OPS(dw_i3c_master_runtime_suspend,
> > dw_i3c_master_runtime_resume, NULL)  };
> >
> > +static void dw_i3c_shutdown(struct platform_device *pdev) {
> > +   struct dw_i3c_master *master = platform_get_drvdata(pdev);
> > +   int ret;
> > +
> > +   ret = pm_runtime_resume_and_get(master->dev);
> > +   if (ret < 0) {
> > +           dev_err(master->dev,
> > +                   "<%s> cannot resume i3c bus master, err: %d\n",
> > +                   __func__, ret);
> > +           return;
> > +   }
> > +
> > +   cancel_work_sync(&master->hj_work);
> > +
> > +   /* Disable interrupts */
> > +   writel((u32)~INTR_ALL, master->regs + INTR_STATUS_EN);
> > +   writel((u32)~INTR_ALL, master->regs + INTR_SIGNAL_EN);
> > +
> > +   pm_runtime_put_autosuspend(master->dev);
> > +}
> > +
> >  static const struct of_device_id dw_i3c_master_of_match[] = {
> >     { .compatible = "snps,dw-i3c-master-1.00a", },
> >     {},
> > @@ -1777,6 +1799,7 @@ MODULE_DEVICE_TABLE(acpi,
> amd_i3c_device_match);
> > static struct platform_driver dw_i3c_driver = {
> >     .probe = dw_i3c_probe,
> >     .remove = dw_i3c_remove,
> > +   .shutdown = dw_i3c_shutdown,
> >     .driver = {
> >             .name = "dw-i3c-master",
> >             .of_match_table = dw_i3c_master_of_match,
> > --
> > 2.34.1
>

Thanks,
Manikanta.



More information about the linux-i3c mailing list