Re: [PATCH V4 09/14] i3c: master: Report wakeup events for IBIs
Frank Li <[email protected]>
| Newsgroups | org.infradead.lists.linux-i3c,org.kernel.vger.linux-kernel,org.kernel.vger.linux-pci,org.kernel.vger.linux-pm |
|---|---|
| Message-ID | <anTUDdTR_e92IFun@lizhi-Precision-Tower-5810> |
On Thu, Aug 06, 2026 at 04:18:52PM +0300, Adrian Hunter wrote: > An I3C device configured as a wakeup source can wake the system by > generating an In-Band Interrupt (IBI). > > When an IBI is queued for processing, record a wakeup event for the > device if wakeup is enabled. Use a 100 ms processing interval to give > the I3C device driver time to process the IBI. > > Signed-off-by: Adrian Hunter <[email protected]> > --- Reviewed-by: Frank Li <[email protected]> > > > Changes in V4: > > None > > Changes in V2 and V3: > > None > > > drivers/i3c/master.c | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/drivers/i3c/master.c b/drivers/i3c/master.c > index 2616354dbe54..6c5341491944 100644 > --- a/drivers/i3c/master.c > +++ b/drivers/i3c/master.c > @@ -3384,6 +3384,9 @@ static void i3c_master_unregister_i3c_devs(struct i3c_master_controller *master) > } > } > > +/* Approximate time for IBI handler to run */ > +#define I3C_WAKEUP_PROCESSING_TIME_MS 100 > + > /** > * i3c_master_queue_ibi() - Queue an IBI > * @dev: the device this IBI is coming from > @@ -3397,6 +3400,9 @@ void i3c_master_queue_ibi(struct i3c_dev_desc *dev, struct i3c_ibi_slot *slot) > if (!dev->ibi || !slot) > return; > > + if (device_may_wakeup(&dev->dev->dev)) > + pm_wakeup_event(&dev->dev->dev, I3C_WAKEUP_PROCESSING_TIME_MS); > + > atomic_inc(&dev->ibi->pending_ibis); > queue_work(dev->ibi->wq, &slot->work); > } > -- > 2.53.0 > -- linux-i3c mailing list [email protected] http://lists.infradead.org/mailman/listinfo/linux-i3c