Re: [PATCH V3 10/14] i3c: master: Add helper to query bus wakeup requirements
From: Mukesh Savaliya
Date: Tue Aug 04 2026 - 14:57:16 EST
On 8/4/2026 7:08 PM, Adrian Hunter wrote:
[...]
diff --git a/drivers/i3c/master.c b/drivers/i3c/master.c
index 8c9e62e6f146..baf4769f0512 100644
--- a/drivers/i3c/master.c
+++ b/drivers/i3c/master.c
@@ -2150,6 +2150,41 @@ static void i3c_master_reg_work_fn(struct work_struct *work)
i3c_master_register_new_i3c_devs(master);
}
+/**
+ * i3c_master_any_wakeup_enabled() - check if any device can wake the system
+ * @master: I3C master controller
+ *
+ * Iterate over devices on the bus and return true if any device has
+ * system wakeup enabled and IBI enabled.
+ *
+ * Whether a device is enabled for system wakeup is user space policy,
+ * settable at any time through the device's power/wakeup sysfs attribute,
+ * so the answer is only stable once user space is frozen. Call this from
+ * a system suspend callback.
+ *
+ * Return: true if any device may wake the system via IBI, false otherwise.
+ */
+bool i3c_master_any_wakeup_enabled(struct i3c_master_controller *master)
wanted to suggest if this function name suits ?i3c_master_has_wakeup_enabled_devs()
+{[...]
+ struct i3c_dev_desc *desc;
+ bool wakeup = false;
+
+ i3c_bus_normaluse_lock(&master->bus);
+ i3c_bus_for_each_i3cdev(&master->bus, desc) {
+ if (!desc->dev || desc == master->this || !device_may_wakeup(&desc->dev->dev))
+ continue;
+ guard(mutex)(&desc->ibi_lock);
+ if (desc->ibi && desc->ibi->enabled) {
+ wakeup = true;
+ break;
+ }
+ }
+ i3c_bus_normaluse_unlock(&master->bus);
+
+ return wakeup;
+}
+EXPORT_SYMBOL_GPL(i3c_master_any_wakeup_enabled);\[...]