From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from linux.microsoft.com (linux.microsoft.com [13.77.154.182]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 3755527703E for ; Fri, 20 Feb 2026 21:13:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=13.77.154.182 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771622029; cv=none; b=Ii08g4JW6GNMGTdIuDfpLuR8brEem8T9dVOuU3wLgYncnXqSGpC7ph68E5w+oxAWKrnal676II+pKatdqOYYoxk8JUIEU6E/q1pEU5e5BkN04u9lI5v+mxbqDRFim3HndfnOY8NTPxZthEwFxZxqX+rHAG8p3hel3c+kxo3+OGY= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771622029; c=relaxed/simple; bh=Ug2irEZR5pLwdPMCHLG3ZapA8XAgg3f5u9WXB3bCOFA=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=hSjtjBWm+HfQ2646EmQMTEoI7JlpeW0vfCA152K4+gBAHD+scEvpM2Ad8LXUdQUO2KEbcQe83e+s552W5fnHQr23PMqSZpV48kCsh5NysODHgfdu4lNIMWenQVEaWm60d8F6KywLYTqfzi8NBQUqzqn0kBSSXuSO6+By2TXkbU8= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.microsoft.com; spf=pass smtp.mailfrom=linux.microsoft.com; dkim=pass (1024-bit key) header.d=linux.microsoft.com header.i=@linux.microsoft.com header.b=Lb3Ew7sc; arc=none smtp.client-ip=13.77.154.182 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.microsoft.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.microsoft.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.microsoft.com header.i=@linux.microsoft.com header.b="Lb3Ew7sc" Received: by linux.microsoft.com (Postfix, from userid 1223) id D8D5A20B6F00; Fri, 20 Feb 2026 13:13:47 -0800 (PST) DKIM-Filter: OpenDKIM Filter v2.11.0 linux.microsoft.com D8D5A20B6F00 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.microsoft.com; s=default; t=1771622027; bh=xvjA05Kd+i3BfXoggGGGdDiduwLRfsQeRP2h/l97qB4=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=Lb3Ew7scP91PZctTiLu7ULBtsK5yJV2LoP5+O/SCJS4oQSdhObccADXaemXv9uduV QuSMkx93rNoqiA6ieax2NLDQTU6XChLNgLdCBtjvqM2h3n6pGm/lpT2yPDZMOnoT5l 6pbEWREfGoh0kvKP0CwJ8Qtpqi89OJHjpbrq6Bzg= Date: Fri, 20 Feb 2026 13:13:47 -0800 From: Meagan Lloyd To: Frank Li Cc: David =?iso-8859-1?Q?Nystr=F6m?= , Alexandre Belloni , linux-i3c@lists.infradead.org, linux-kernel@vger.kernel.org, Joshua Yeong Subject: Re: [PATCH v6] i3c: master: Add sysfs option to rescan bus via entdaa Message-ID: <20260220-fb92aef7e431041d8d0bb2bc@linux.microsoft.com> References: <20260219-i3c_rescan-v6-1-b81d6cc3cb30@est.tech> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: On Fri, Feb 20, 2026 at 11:05:26AM -0500, Frank Li wrote: > On Thu, Feb 19, 2026 at 09:58:03PM +0100, David Nyström wrote: > > Allow userspace to request dynamic address assignment, which is > > useful for i3cdev devices with broken hot-join support. > > This will assign dynamic addresses to all devices on the I3C bus > > which are currently unassigned. > > > > Signed-off-by: David Nyström > > --- > Reviewed-by: Frank Li Reviewed-by: Meagan Lloyd > > Changes in v6: > > - Add check for init_done to close race with init. > > - Link to v5: https://patch.msgid.link/20260219-i3c_rescan-v5-1-42404db20d18@est.tech > > > > Changes in v5: > > - Change sysfs interface to boolean. Comment: Meagan Lloyd > > - Change sysfs entry name to do_daa: Comment Megan Lloyd, Frank Li > > - Link to v4: https://patch.msgid.link/20260126-i3c_rescan-v4-1-6b3559d82abc@est.tech > > > > Changes in v4: > > - Improved commit message, once more. Comment: Frank Li > > - Added required documentation for sysfs addition. Comment: Frank Li > > - Link to v3: https://patch.msgid.link/20260123-i3c_rescan-v3-1-026429fa0c65@est.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 > > --- > > Documentation/ABI/testing/sysfs-bus-i3c | 20 ++++++++++++++++++++ > > drivers/i3c/master.c | 27 +++++++++++++++++++++++++++ > > 2 files changed, 47 insertions(+) > > > > diff --git a/Documentation/ABI/testing/sysfs-bus-i3c b/Documentation/ABI/testing/sysfs-bus-i3c > > index c1e048957a01..19f5cf8b1b11 100644 > > --- a/Documentation/ABI/testing/sysfs-bus-i3c > > +++ b/Documentation/ABI/testing/sysfs-bus-i3c > > @@ -172,3 +172,23 @@ Description: > > the automatic retries. Exist only when I3C constroller supports > > this retry on nack feature. > > > > +What: /sys/bus/i3c/devices/i3c-/do_daa > > +KernelVersion: 7.0 > > +Contact: linux-i3c@vger.kernel.org > > +Description: > > + Write-only attribute that triggers a Dynamic Address Assignment > > + (DAA) procedure which discovers new I3C devices on the bus. > > + Writing a boolean true value (1, y, yes, true, on) to this > > + attribute causes the master controller to perform DAA, which > > + includes broadcasting an ENTDAA (Enter Dynamic Address Assignment) > > + Common Command Code (CCC) on the bus. Writing a false value > > + returns -EINVAL. > > + > > + This is useful for discovering I3C devices that were not present > > + during initial bus initialization and are unable to issue > > + Hot-Join. Only devices without a currently assigned dynamic address > > + will respond to the ENTDAA broadcast and be assigned addresses. > > + > > + Note that this mechanism is distinct from Hot-Join, since this is > > + controller-initiated discovery, while Hot-Join is device-initiated > > + method to provoke controller discovery procedure. > > diff --git a/drivers/i3c/master.c b/drivers/i3c/master.c > > index 0eae19b3823d..8f49d4ad473d 100644 > > --- a/drivers/i3c/master.c > > +++ b/drivers/i3c/master.c > > @@ -758,6 +758,32 @@ static ssize_t dev_nack_retry_count_store(struct device *dev, > > > > static DEVICE_ATTR_RW(dev_nack_retry_count); > > > > +static ssize_t do_daa_store(struct device *dev, > > + struct device_attribute *attr, > > + const char *buf, size_t count) > > +{ > > + struct i3c_master_controller *master = dev_to_i3cmaster(dev); > > + bool val; > > + int ret; > > + > > + if (kstrtobool(buf, &val)) > > + return -EINVAL; > > + > > + if (!val) > > + return -EINVAL; > > + > > + if (!master->init_done) > > + return -EAGAIN; > > + > > + ret = i3c_master_do_daa(master); > > + if (ret) > > + return ret; > > + > > + return count; > > +} > > + > > +static DEVICE_ATTR_WO(do_daa); > > + > > static struct attribute *i3c_masterdev_attrs[] = { > > &dev_attr_mode.attr, > > &dev_attr_current_master.attr, > > @@ -769,6 +795,7 @@ static struct attribute *i3c_masterdev_attrs[] = { > > &dev_attr_dynamic_address.attr, > > &dev_attr_hdrcap.attr, > > &dev_attr_hotjoin.attr, > > + &dev_attr_do_daa.attr, > > NULL, > > }; > > ATTRIBUTE_GROUPS(i3c_masterdev); > > > > --- > > base-commit: 44982d352c33767cd8d19f8044e7e1161a587ff7 > > change-id: 20260116-i3c_rescan-4921d0b41a00 > > > > Best regards, > > -- > > David Nyström > >