summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorAdrian Hunter <adrian.hunter@intel.com>2026-01-13 09:27:00 +0200
committerAlexandre Belloni <alexandre.belloni@bootlin.com>2026-01-14 17:21:10 +0100
commit990c149c61ee45da4fb6372e6b2fdd9808414e7a (patch)
treea17d6d32ed15a0a0577af0a0fc57bbe5d4a1a9ab /include
parent3c3de6803a7d90faba0387ba248ac71e627ca827 (diff)
i3c: master: Introduce optional Runtime PM support
Master drivers currently manage Runtime PM individually, but all require runtime resume for bus operations. This can be centralized in common code. Add optional Runtime PM support to ensure the parent device is runtime resumed before bus operations and auto-suspended afterward. Notably, do not call ->bus_cleanup() if runtime resume fails. Master drivers that opt-in to core runtime PM support must take that into account. Also provide an option to allow IBIs and hot-joins while runtime suspended. Signed-off-by: Adrian Hunter <adrian.hunter@intel.com> Reviewed-by: Frank Li <Frank.Li@nxp.com> Link: https://patch.msgid.link/20260113072702.16268-20-adrian.hunter@intel.com Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Diffstat (limited to 'include')
-rw-r--r--include/linux/i3c/master.h4
1 files changed, 4 insertions, 0 deletions
diff --git a/include/linux/i3c/master.h b/include/linux/i3c/master.h
index d231c4fbc58b..38a821395426 100644
--- a/include/linux/i3c/master.h
+++ b/include/linux/i3c/master.h
@@ -509,6 +509,8 @@ struct i3c_master_controller_ops {
* @secondary: true if the master is a secondary master
* @init_done: true when the bus initialization is done
* @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
* @boardinfo.i3c: list of I3C boardinfo objects
* @boardinfo.i2c: list of I2C boardinfo objects
* @boardinfo: board-level information attached to devices connected on the bus
@@ -533,6 +535,8 @@ struct i3c_master_controller {
unsigned int secondary : 1;
unsigned int init_done : 1;
unsigned int hotjoin: 1;
+ unsigned int rpm_allowed: 1;
+ unsigned int rpm_ibi_allowed: 1;
struct {
struct list_head i3c;
struct list_head i2c;