[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20260123-i3c_rescan-v3-1-026429fa0c65@est.tech>
Date: Fri, 23 Jan 2026 08:55:37 +0100
From: David Nyström <david.nystrom@....tech>
To: Alexandre Belloni <alexandre.belloni@...tlin.com>,
Frank Li <Frank.Li@....com>
Cc: linux-i3c@...ts.infradead.org, linux-kernel@...r.kernel.org,
Joshua Yeong <joshua.yeong@...rfivetech.com>,
David Nyström <david.nystrom@....tech>
Subject: [PATCH v3] i3c: master: Add sysfs option to rescan bus via entdaa
Add the ability to rescan the i3c bus from userspace, i.e. provoke
an ENTDDA. The usecase could be f.ex. an i3cdev userspace driver
for a device with broken hotjoin support. If the i3c device
boots slowly, it might be miss the DDA during boot.
Signed-off-by: David Nyström <david.nystrom@....tech>
---
Changes in v3:
- Rename sysfs entry from rescan to entdda, Comment: Joshua Yeong
- Link to v2: https://patch.msgid.link/20260122-i3c_rescan-v2-1-84c74a483f03@est.tech
Changes in v2:
- Improved the commit message with "why".
- Link to v1: https://patch.msgid.link/20260122-i3c_rescan-v1-1-0c17071e232b@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..a1d816634a25 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 entdaa_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(entdaa);
+
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_entdaa.attr,
NULL,
};
ATTRIBUTE_GROUPS(i3c_masterdev);
---
base-commit: e3b32dcb9f23e3c3927ef3eec6a5842a988fb574
change-id: 20260116-i3c_rescan-4921d0b41a00
Best regards,
--
David Nyström <david.nystrom@....tech>
Powered by blists - more mailing lists