mirror of
https://github.com/torvalds/linux.git
synced 2026-09-24 06:24:02 +02:00
i3c: master: Support IBI-based wakeup capability
An I3C controller acts as a bus controller for one or more I3C devices. If the controller can wake the system in response to an In-Band Interrupt (IBI), then any device on that bus that is capable of generating IBIs can potentially be used as a wakeup source. Add an ibi_wakeup flag to struct i3c_master_controller so controller drivers can advertise support for IBI-based wakeup. If set, mark IBI-capable I3C devices as wakeup capable when they are registered, allowing wakeup management through the standard device wakeup framework. Signed-off-by: Adrian Hunter <adrian.hunter@intel.com> Reviewed-by: Frank Li <Frank.Li@nxp.com> Acked-by: Mukesh Savaliya <mukesh.savaliya@oss.qualcomm.com> Link: https://patch.msgid.link/20260807145638.168865-9-adrian.hunter@intel.com Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
This commit is contained in:
parent
f44d3b1532
commit
9fd18a8655
|
|
@ -2110,6 +2110,10 @@ i3c_master_register_new_i3c_devs(struct i3c_master_controller *master)
|
|||
if (desc->boardinfo)
|
||||
device_set_node(&desc->dev->dev, desc->boardinfo->fwnode);
|
||||
|
||||
/* If the device has IBI capability, set as wakeup capable */
|
||||
if (master->ibi_wakeup && (desc->info.bcr & I3C_BCR_IBI_REQ_CAP))
|
||||
device_set_wakeup_capable(&desc->dev->dev, true);
|
||||
|
||||
list_add_tail(&desc->dev->node, &i3c_unreg_devs);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -524,6 +524,7 @@ struct i3c_master_controller_ops {
|
|||
* @hotjoin: true if the master support hotjoin
|
||||
* @rpm_allowed: true if Runtime PM allowed
|
||||
* @rpm_ibi_allowed: true if IBI and Hot-Join allowed while runtime suspended
|
||||
* @ibi_wakeup: IBI can wakeup the system
|
||||
* @shutting_down: set to true when master begins shutdown or unregister
|
||||
* @boardinfo.i3c: list of I3C boardinfo objects
|
||||
* @boardinfo.i2c: list of I2C boardinfo objects
|
||||
|
|
@ -563,6 +564,7 @@ struct i3c_master_controller {
|
|||
unsigned int hotjoin: 1;
|
||||
unsigned int rpm_allowed: 1;
|
||||
unsigned int rpm_ibi_allowed: 1;
|
||||
unsigned int ibi_wakeup: 1;
|
||||
bool shutting_down;
|
||||
struct {
|
||||
struct list_head i3c;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user