drivers/i3c/master.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+)
Add ability to rescan the i3c bus from userspace, i.e. provoke a DDA.
Signed-off-by: David Nyström <david.nystrom@est.tech>
---
drivers/i3c/master.c | 24 ++++++++++++++++++++++++
1 file changed, 24 insertions(+)
diff --git a/drivers/i3c/master.c b/drivers/i3c/master.c
index 80dda0e85558..edeae7493b3b 100644
--- a/drivers/i3c/master.c
+++ b/drivers/i3c/master.c
@@ -758,6 +758,29 @@ static ssize_t dev_nack_retry_count_store(struct device *dev,
static DEVICE_ATTR_RW(dev_nack_retry_count);
+static ssize_t rescan_store(struct device *dev,
+ struct device_attribute *attr,
+ const char *buf, size_t count)
+{
+ struct i3c_master_controller *master = dev_to_i3cmaster(dev);
+ unsigned long val;
+ int ret;
+
+ ret = kstrtoul(buf, 0, &val);
+ if (ret)
+ return ret;
+
+ if (val) {
+ ret = i3c_master_do_daa(master);
+ if (ret)
+ return ret;
+ }
+
+ return count;
+}
+
+static DEVICE_ATTR_WO(rescan);
+
static struct attribute *i3c_masterdev_attrs[] = {
&dev_attr_mode.attr,
&dev_attr_current_master.attr,
@@ -769,6 +792,7 @@ static struct attribute *i3c_masterdev_attrs[] = {
&dev_attr_dynamic_address.attr,
&dev_attr_hdrcap.attr,
&dev_attr_hotjoin.attr,
+ &dev_attr_rescan.attr,
NULL,
};
ATTRIBUTE_GROUPS(i3c_masterdev);
---
base-commit: 9b7977f9e39b7768c70c2aa497f04e7569fd3e00
change-id: 20260116-i3c_rescan-4921d0b41a00
Best regards,
--
David Nyström <david.nystrom@est.tech>
On Thu, Jan 22, 2026 at 12:36:30PM +0100, David Nyström wrote: > Add ability to rescan the i3c bus from userspace, i.e. provoke a DDA. Your are describing what you do but what is missing is why you want the change. What is the use case?
On Thu, 22 Jan 2026, Wolfram Sang wrote: > On Thu, Jan 22, 2026 at 12:36:30PM +0100, David Nyström wrote: >> Add ability to rescan the i3c bus from userspace, i.e. provoke a DDA. > > Your are describing what you do but what is missing is why you want the > change. What is the use case? The usecase would be an i3cdev userspace driver for a device with broken hotjoin support. The device requires FW loading(userspace framework) before it will respond to DAA, and is thus not registered during initial bus probe. I guess a similiar problem would apply if hot-join is bus disabled via sysfs, and resume hook DDA runs before i3c devices are powered up properly. A bit of a niche usecase, I know. I found it to be usable though, but perhaps this is better placed in debugfs in case its too much of an eyesore for the stable ABI.
On Thu, Jan 22, 2026 at 04:47:23PM +0100, David Nyström wrote: > > On Thu, 22 Jan 2026, Wolfram Sang wrote: > > > On Thu, Jan 22, 2026 at 12:36:30PM +0100, David Nyström wrote: > > > Add ability to rescan the i3c bus from userspace, i.e. provoke a DDA. > > > > Your are describing what you do but what is missing is why you want the > > change. What is the use case? > > The usecase would be an i3cdev userspace driver for a device with broken > hotjoin support. > The device requires FW loading(userspace framework) before it will respond > to DAA, and is thus not registered during initial bus probe. > I guess a similiar problem would apply if hot-join is bus disabled via > sysfs, and resume hook DDA runs before i3c devices are powered up properly. > > A bit of a niche usecase, I know. > I found it to be usable though, but perhaps this is better placed in debugfs > in case its too much of an eyesore for the stable ABI. It is useful. Please improve commit message. Frank
© 2016 - 2026 Red Hat, Inc.