From nobody Thu Dec 18 13:33:11 2025 Received: from PH7PR06CU001.outbound.protection.outlook.com (mail-westus3azon11010011.outbound.protection.outlook.com [52.101.201.11]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 176753126B1 for ; Fri, 12 Dec 2025 09:05:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.201.11 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765530339; cv=fail; b=EuZHlK4UtgmZKH0/mFxkTxBQE15PnUlPWdk5NQzxrU170x0cvHCYCuPCE+q7ENFvuLjiLZnbOZfPMszl9FII2IjACx/WngHSfmU/75fnaKFZ0ijvh+31caotHtcb5O7lCmub44IgJ8mYlleVYAWzZNEMUku5tRN26tS2sd9pzOc= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765530339; c=relaxed/simple; bh=5p75cV8MVtzFvaoXheWl6UKvJq8nENdR42Ek9ft+fnQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=sRRr4ORgo+dS7wXlaRFTcu/p1EJP4vNhSEUrjlIv+OijqWVoSJ0eA5+CScVs79cjFryFV025qZYm9KG+q91OXCsX+6xGQ6YnSxCbxBx6A5odTG8SiH8sg5u3QEdDkSne60JpmOfUMrmv4TpIICgVNTCsKXlVgbCvyoDjs1HRcb0= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=altera.com; spf=pass smtp.mailfrom=altera.com; dkim=pass (2048-bit key) header.d=altera.com header.i=@altera.com header.b=GbPYEE2B; arc=fail smtp.client-ip=52.101.201.11 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=altera.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=altera.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=altera.com header.i=@altera.com header.b="GbPYEE2B" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=UpQaMNzMo7waip+ezM4+2ll12A7NeAsoGpyd9UPMQWpopyD2bs8++I3LvLMSrBZDYGTC1Ryu6bIO0sAKMCJm8Ug0P52oRQc7dXMnuuQjWgG1ahxsJdvo5bxGKN+UzwbCBzmuWXIP3AFDbv1P34eGJbJ90Tkt7QveFysha37GbVutTWXbsqCSHfr7LnzHlaCIafIzeBzWOAIHq29NDYIcfxV7R/rUDQsV+/2+/7uKKv4sqOlOKkNEMvfPq7iU3j2BDvMYI65ypnUQldl0/qKUWkas4RDi37V1suyJcbcneConeyvJvLtaOYUZikdeJjJFFmMy8BfVtLijHrAO8tvYQA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=G5+LosO1l0OXbYOmmY82M6StrmtkXHbCxPzlTlmEyEM=; b=SoFY4SRj7Fi0A7xF4Y4WCMHbpyxEWcmpzviUJ7ni0ddIM+oGcMbeO0KncIBulsiw12spPPR8kMb3Kj3iyVtYsse+yQDbqH6BBQDPIo3KR6pE6O/DXh8FBHD1j8fut9xCxyDNpx5A/+2dt63dq+HMuIr/lPr1X0BMB2lVfekMI2TV/X2dZ0Q42fLoJriuPXWLQ8zfV7ufRacaWm+6BhH1waVU7qSaU/nY2wVYu8PE03riFmeDoOq7/j/UIZ4hkWMBczxX5FHbFKT/VIxR8eeYTvjkXJRGDkQoxzB+RkOd5Gt4uewgH0Gqu1rA+vcMgPAcj+6bQgXVUtrD/rd4ckCbEQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=altera.com; dmarc=pass action=none header.from=altera.com; dkim=pass header.d=altera.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=altera.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=G5+LosO1l0OXbYOmmY82M6StrmtkXHbCxPzlTlmEyEM=; b=GbPYEE2BEcL/1ArLGRAOZDqRMRejMIRcEKQlaq6CY72/am2Gdd7tdEPNdPpu2KhxPFWUxadHhVbVYIk1dVVf+wO5y2sAONRI2LuRMX7PhOgmA0IP587yv4Cgj/dgG/2epNeXRHUzDkYYosFkdXrnShKvUwEYcYtrXAZKat9VHHjFvcKrxqiGLjl7ChZ33rcU9rDoMr3NeHJ8dahXwBk+Lwm4SYxzCZfbLKpUKbj3FRgEhW/GE2y/uR5uQEkpphPGiU2dhWcX+x6oJGQEt1yFQKKIGlU1NYHoj2BFsdhUGHKLvKj2Go6IAtrUQj6GuF+84nezqD9wVpbJfaKeHz/Uhg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=altera.com; Received: from DM8PR03MB6230.namprd03.prod.outlook.com (2603:10b6:8:3c::13) by BN8PR03MB4916.namprd03.prod.outlook.com (2603:10b6:408:7a::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9412.11; Fri, 12 Dec 2025 09:05:34 +0000 Received: from DM8PR03MB6230.namprd03.prod.outlook.com ([fe80::abad:9d80:7a13:9542]) by DM8PR03MB6230.namprd03.prod.outlook.com ([fe80::abad:9d80:7a13:9542%3]) with mapi id 15.20.9388.013; Fri, 12 Dec 2025 09:05:34 +0000 From: adrianhoyin.ng@altera.com To: alexandre.belloni@bootlin.com, Frank.Li@nxp.com, linux-i3c@lists.infradead.org, linux-kernel@vger.kernel.org Cc: adrianhoyin.ng@altera.com Subject: [PATCH v8 1/4] i3c: add sysfs entry and attribute for Device NACK Retry count Date: Fri, 12 Dec 2025 17:02:55 +0800 Message-ID: <3c4b5082bde64024fc383c44bebeef89ad3c7ed3.1765529948.git.adrianhoyin.ng@altera.com> X-Mailer: git-send-email 2.49.GIT In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: KU0P306CA0061.MYSP306.PROD.OUTLOOK.COM (2603:1096:d10:23::14) To DM8PR03MB6230.namprd03.prod.outlook.com (2603:10b6:8:3c::13) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM8PR03MB6230:EE_|BN8PR03MB4916:EE_ X-MS-Office365-Filtering-Correlation-Id: e99ce9fa-f7b9-45e5-b647-08de395d9b81 X-MS-Exchange-AtpMessageProperties: SA X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|1800799024|366016; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?EqhrFYMsW+KDqM5g1PYdHaqRohwCIvL8OkVky8tpNj5i1lEf54RSDpEnQnen?= =?us-ascii?Q?s5rDDpVXE9ifYQIqqr77eJvoYU0xxFzZvb4Nn1F+lx1dNkI9IF2nUNqEoVQW?= =?us-ascii?Q?eyIYTK3BkKvL0uPvhDbANbpdaQ34hbdbtWBQxgvv1BiQCynN+iMVlvur3mNX?= =?us-ascii?Q?x4ZxSjw5SrYrs9qxQZTFq6oSFDABUqTvrBQTN+H/GkZiotpbPL1D9m51Kxmb?= =?us-ascii?Q?IP/0dJsEQY/Z0JPjyEATBHIv5bJ/LY8GusOXmPE0s47csz/k9YGCf7412jMm?= =?us-ascii?Q?x7z3/hdMrNlBivUyBJfr1fYwEeoRrXIErUd/gIAx8L3N/4FkDHp8iz95kpp/?= =?us-ascii?Q?jyb1qjRv6IeJPPDVUgfB9kNiIJS/1pC9lyx2PdsWwPXEagEIGEMgLIHYTKeb?= =?us-ascii?Q?aK5ejRG2JiGfqksE05q2GakQyTh3vTPu8SbeXrbslat9T0LLv01KO5O+zI9k?= =?us-ascii?Q?4gPgNPR08WDqUvCLOcde80J/AtyCweJH9vMRL6NL70lgcOsGGn8FCr0IPIBH?= =?us-ascii?Q?xevMV3vOi3otN73/f5XKnzfqVnqGRa5a59w3ChH8zWgELp64Vayxbs/rcSNF?= =?us-ascii?Q?BckuskUAlErwwbDdP/tW1XT920ctNOK39nrJweyag7wrVi7qmVHp0c0vRTwb?= =?us-ascii?Q?EGvOnf4tpsMmtcKbd6e0a/5ldLmUwurzjBUhVJcQqdpoM1qa+6NxaLzQi7YT?= =?us-ascii?Q?gzqGzNVykF3dNqh9mxDjVbFakNOkEQ5JRs7kQJMktSZ67VjxCUVev2adVWzj?= =?us-ascii?Q?PZ1uFWPQRxr0fhNdJ8biTZEezQ+bOTyHaAuJs5RI/nXOfVBE5bAGAstnqPvy?= =?us-ascii?Q?bID4cvhpHP96mTeWIjXsf2kDbbt/40RpYH+TzdYxw+Sb2V56R7n0ZS1EabIA?= =?us-ascii?Q?4yqJA0C0kwpPCp4KFHB3/gP0L+YaxQOAvAK/a8zlZlogYYk8NuhOgpeHi/78?= =?us-ascii?Q?DxG2jmE2lLGRx89O+lAtF5s4VQ3Gq+En3vYxwHcBL17++KiCqFoLkj+bAv98?= =?us-ascii?Q?e5TgtmC2lR9t44rPsSQHtklplY7nSzv2BzPACQEctIL2lzrkq/rFqTsn8UZf?= =?us-ascii?Q?Zdr9fNJ3aCE/6rjgvP4PFgeoW71uOY1ehFRbMS44g7PxvmEypbGpN1HksDls?= =?us-ascii?Q?+6pAURcFX5yKDLjBrsONwXDePwr/ZGyUrerTpVb/7vidW1fheKSxz9IY5UuU?= =?us-ascii?Q?kcqIDhlbkpvD0iRgFFcBbQHGyrQzeg4q/RYdkQlhcG+H0shMfGEbsRIuBOfV?= =?us-ascii?Q?BUo7DTY8WTI32Fq+AJlZBZsiwV9jfGqpHujwPGr1BQc3DTb7zKlhvrkpEgTB?= =?us-ascii?Q?6QQVARFmi5mpCLsd3QDdCdaCUIIuB4qQrTiqwZsB6uayaxg/JR1GzUbgcc2m?= =?us-ascii?Q?7C4QHCBB7WFvaY9vZ/JnejP7LtDn4ICGsmq5RxnSVRiyf769bot/4xuZCVhu?= =?us-ascii?Q?HqaKdbeBjkoMQXnmsTwi/6cWmuNEdBJC?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM8PR03MB6230.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?OtHL5t0mV5LC5GQVIKQckzyeVHqs+f6+YDkFCQbi5uZK7v3KJNeCkAO7NBHm?= =?us-ascii?Q?3RNg+aINeekPxPemU3M3kNET4qujw/u+S/XhqQGFAq3mHtLa1uWFW4Sj3A6/?= =?us-ascii?Q?7D4e91QCw80W7HQzZ1Zz1RhjJNTGttv/Muc64DWRy6Jqe7UR1u88JKw/aaQz?= =?us-ascii?Q?ezTICzHl43XFHoYb6C/u6xukcVZyu0jkMpjer93i9ednU8frSVxFdlcXiZno?= =?us-ascii?Q?n8aihFiAB0wF30BivizM8iQasiqvlOg1HJkUBsysg3bMOZ/7VEjrYZ3yOPsS?= =?us-ascii?Q?BMQWpC/sXOU0V+RCd+lJaiH0KuBA6ByCmtIS9KPDYCppGBJBR+vT5dSjLQhK?= =?us-ascii?Q?l9cv7cIv1bK1MaA6GRJ4ZYoF1cXwqVn8tEd6WK4bu9m3MaA8fDKVENqSGuWs?= =?us-ascii?Q?R5YJN32C8Eg3XDAw9Lc040pERmv9+vTgDiGDnnxdQcBCx2xSE+aT9u/cYTDI?= =?us-ascii?Q?s+1X+4tv+nk/4BQFE/imSslcijP7ZabquCoVlRt7xOF//Q6o9mVqk2aK50zS?= =?us-ascii?Q?0YLNgjt+8PX3v6LKGUkg2Yc3Ub+4UjcCMsNhuGinwXZGnPVlijphC6fd0tqE?= =?us-ascii?Q?qR1oAgX+VzuWCJ7u/7S66XbpDTU2iti6Xqgib3Q75xlTwe/bjn8KsEA1N1Fz?= =?us-ascii?Q?gsxRIo8EbbvujHLhG2VelRC22ykQFEtQNDDJ/06ooJ715ERIJ3sQPKvcx6kS?= =?us-ascii?Q?eJ6MV6B81v4qEIZVjAzeball5dKzMsU9TDLLiGu1VONvUEeuuf3AvSJUc4Ss?= =?us-ascii?Q?tF+NnEABCmG0uVcfwMQhqFIJt4rEda1A+EOhD01cGKqaTFaGw9M2dRUZE+Sf?= =?us-ascii?Q?pSpoQX+IEv/kkKAMcf5a8WPK4wXXXwhrJViiFSpbQRIeTKi46Uu6AAXkX4+q?= =?us-ascii?Q?DbCLLu4/uoDehv2AuLVcirWzo54Q5cgOp7HKCw6uMJRu3eIAXl/l+JN8XgFg?= =?us-ascii?Q?+0RnOuE6KIdagVC1cJTZ9qP/7kfu+1IacFBesbgVnIeFn/C5zwLtR95Dkn2/?= =?us-ascii?Q?vRiEiqB7PyK86ZBRhhKw36KVzmk+UlVXCA9fKJXCu+9CmvlGkV8ugatdpbqr?= =?us-ascii?Q?QGP+IkqR9MDD2wy/V8U7NAGj9UJ0q9xxYCUYp3MyFXqNgQcAXA/XHFkVsL4Y?= =?us-ascii?Q?zwCOi/5icKm+JHLccVHKgvYvLIXqKZYNa+n5maMdv1iY6ZABTgZiQ6q/oLUE?= =?us-ascii?Q?ESA4cpW3El0VgSK4jmeD+6dEP5H8nhzTdnjk02UlrYMg6Kazybg4xn1xREJD?= =?us-ascii?Q?z+dSh/7qOKUd79kgMWS0s9UhA8iQtglmO6o6u+6s6O7zY+uLHKsqEq9dqGFT?= =?us-ascii?Q?4rq+uD6agx/w9y4W78OtmksIxtEH4MkEqPDkCrZbzpZ27XQayLtsLrFXCelx?= =?us-ascii?Q?bRJqkrPpNA+CmGgwXwxVmIKG4cGS6TvWAkgKU66DiMzNpeihOLI+CXWlTL11?= =?us-ascii?Q?udKLbSVjQaLCCTsOVEhAPMg6iWMslnZ1fhQkh761KEuo8mwjskTvW2kratvX?= =?us-ascii?Q?ykrsMz3yFwz9oPpM36K3tC+lJieT9gg/w8HA9NgsM36R07yzdFNquwjP6SzJ?= =?us-ascii?Q?ZkdN2w1NovvAbqcnffUEIPQ4PaiE8Hc2bfLCUr0HuqqnEijDeA2ih+VvMMeK?= =?us-ascii?Q?xw=3D=3D?= X-OriginatorOrg: altera.com X-MS-Exchange-CrossTenant-Network-Message-Id: e99ce9fa-f7b9-45e5-b647-08de395d9b81 X-MS-Exchange-CrossTenant-AuthSource: DM8PR03MB6230.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Dec 2025 09:05:33.9922 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: fbd72e03-d4a5-4110-adce-614d51f2077a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: NW2nKqfobAzkGstu0BAKtKHqmW9m9UXAdZPVrcGlYJPrUXcbqaD5PLFRz6fDLT6iq9b93tcG+UMHQIXI7h1nakPy5L9WvVoEakUJpZyGwRU= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN8PR03MB4916 Content-Type: text/plain; charset="utf-8" From: Adrian Ng Ho Yin Document sysfs attribute dev_nack_retry_cnt that controls the number of automatic retries performed by the I3C controller when a target device returns a NACK Add a `dev_nack_retry_count` sysfs attribute to allow reading and updating the device NACK retry count. A new `dev_nack_retry_count` field and an optional `set_dev_nack_retry()` callback are added to i3c_master_controller. The attribute is created only when the callback is implemented. Updates are applied under the I3C bus maintenance lock to ensure safe hardware reconfiguration. Signed-off-by: Adrian Ng Ho Yin Reviewed-by: Frank Li --- Documentation/ABI/testing/sysfs-bus-i3c | 11 +++++++ drivers/i3c/master.c | 39 +++++++++++++++++++++++++ include/linux/i3c/master.h | 6 ++++ 3 files changed, 56 insertions(+) diff --git a/Documentation/ABI/testing/sysfs-bus-i3c b/Documentation/ABI/te= sting/sysfs-bus-i3c index c812ab180ff4..c1e048957a01 100644 --- a/Documentation/ABI/testing/sysfs-bus-i3c +++ b/Documentation/ABI/testing/sysfs-bus-i3c @@ -161,3 +161,14 @@ Contact: linux-i3c@vger.kernel.org Description: These directories are just symbolic links to /sys/bus/i3c/devices/i3c-/-. + +What: /sys/bus/i3c/devices/i3c-/-/dev_nack_re= try_count +KernelVersion: 6.18 +Contact: linux-i3c@vger.kernel.org +Description: + Expose the dev_nak_retry_count which controls the number of + automatic retries that will be performed by the controller when + the target device returns a NACK response. A value of 0 disables + the automatic retries. Exist only when I3C constroller supports + this retry on nack feature. + diff --git a/drivers/i3c/master.c b/drivers/i3c/master.c index d946db75df70..87f0c7b5df80 100644 --- a/drivers/i3c/master.c +++ b/drivers/i3c/master.c @@ -685,6 +685,39 @@ static ssize_t hotjoin_show(struct device *dev, struct= device_attribute *da, cha =20 static DEVICE_ATTR_RW(hotjoin); =20 +static ssize_t dev_nack_retry_count_show(struct device *dev, + struct device_attribute *attr, char *buf) +{ + return sysfs_emit(buf, "%u\n", dev_to_i3cmaster(dev)->dev_nack_retry_coun= t); +} + +static ssize_t dev_nack_retry_count_store(struct device *dev, + struct device_attribute *attr, + const char *buf, size_t count) +{ + struct i3c_bus *i3cbus =3D dev_to_i3cbus(dev); + struct i3c_master_controller *master =3D dev_to_i3cmaster(dev); + unsigned long val; + int ret; + + ret =3D kstrtoul(buf, 0, &val); + if (ret) + return ret; + + i3c_bus_maintenance_lock(i3cbus); + ret =3D master->ops->set_dev_nack_retry(master, val); + i3c_bus_maintenance_unlock(i3cbus); + + if (ret) + return ret; + + master->dev_nack_retry_count =3D val; + + return count; +} + +static DEVICE_ATTR_RW(dev_nack_retry_count); + static struct attribute *i3c_masterdev_attrs[] =3D { &dev_attr_mode.attr, &dev_attr_current_master.attr, @@ -2962,6 +2995,9 @@ int i3c_master_register(struct i3c_master_controller = *master, i3c_master_register_new_i3c_devs(master); i3c_bus_normaluse_unlock(&master->bus); =20 + if (master->ops->set_dev_nack_retry) + device_create_file(&master->dev, &dev_attr_dev_nack_retry_count); + return 0; =20 err_del_dev: @@ -2987,6 +3023,9 @@ void i3c_master_unregister(struct i3c_master_controll= er *master) { i3c_bus_notify(&master->bus, I3C_NOTIFY_BUS_REMOVE); =20 + if (master->ops->set_dev_nack_retry) + device_remove_file(&master->dev, &dev_attr_dev_nack_retry_count); + i3c_master_i2c_adapter_cleanup(master); i3c_master_unregister_i3c_devs(master); i3c_master_bus_cleanup(master); diff --git a/include/linux/i3c/master.h b/include/linux/i3c/master.h index c52a82dd79a6..b0fe3c266746 100644 --- a/include/linux/i3c/master.h +++ b/include/linux/i3c/master.h @@ -462,6 +462,8 @@ struct i3c_bus { * @enable_hotjoin: enable hot join event detect. * @disable_hotjoin: disable hot join event detect. * @set_speed: adjust I3C open drain mode timing. + * @set_dev_nack_retry: configure device NACK retry count for the master + * controller. */ struct i3c_master_controller_ops { int (*bus_init)(struct i3c_master_controller *master); @@ -491,6 +493,8 @@ struct i3c_master_controller_ops { int (*enable_hotjoin)(struct i3c_master_controller *master); int (*disable_hotjoin)(struct i3c_master_controller *master); int (*set_speed)(struct i3c_master_controller *master, enum i3c_open_drai= n_speed speed); + int (*set_dev_nack_retry)(struct i3c_master_controller *master, + unsigned long dev_nack_retry_cnt); }; =20 /** @@ -514,6 +518,7 @@ struct i3c_master_controller_ops { * in a thread context. Typical examples are Hot Join processing which * requires taking the bus lock in maintenance, which in turn, can only * be done from a sleep-able context + * @dev_nack_retry_count: retry count when slave device nack * * A &struct i3c_master_controller has to be registered to the I3C subsyst= em * through i3c_master_register(). None of &struct i3c_master_controller fi= elds @@ -534,6 +539,7 @@ struct i3c_master_controller { } boardinfo; struct i3c_bus bus; struct workqueue_struct *wq; + unsigned int dev_nack_retry_count; }; =20 /** --=20 2.49.GIT From nobody Thu Dec 18 13:33:11 2025 Received: from PH7PR06CU001.outbound.protection.outlook.com (mail-westus3azon11010011.outbound.protection.outlook.com [52.101.201.11]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 242943126B8 for ; Fri, 12 Dec 2025 09:05:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.201.11 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765530341; cv=fail; b=Zn7+2Y7UbOyYI7rbhCmfR9GiefXCS3N0+qX3MrGSxp43udVLrWzGL9PQCVvneptP9v6mmTaqiq/R/j1a5VlUDkOq+EuKyiNKbCDQNhv3jIk4/75nA4nOFefmP20fylUlMgYchGghPOg0yQ61JApbcmzRQr1TfYAmJzEaimvk6do= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765530341; c=relaxed/simple; bh=PiCi+VZcbz6nxhyKCn8T79mkmhD0UkmAF1HnXzGFdnI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=UEULIyjyiEEv28jPx8hZYVaWrmvUpKxm9AehAbtGONNQoiQMT7MkKf8aQGIRI0LEW7JDM+dA9nOqm4AQX8waR7SihGqrry4IPABR/ZyOzVsR1wlDKzSgzD8yLc2lrRTIFd7FFV7zsBVPLkWBMFrXnhGN7keZUjVpZgZWMHc9mq0= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=altera.com; spf=pass smtp.mailfrom=altera.com; dkim=pass (2048-bit key) header.d=altera.com header.i=@altera.com header.b=qZUjkqhp; arc=fail smtp.client-ip=52.101.201.11 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=altera.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=altera.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=altera.com header.i=@altera.com header.b="qZUjkqhp" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=qcmDsgO33rHfNK5ghhGdQN+qlYmfoVPbBYXFNuWvVKoqjOET2MybaaRDXyuIjg/SJo9JaV63tAT5pXR3js8JDALxfjdS+fw5QKD1ujl+hVzINdsmDt7s0D+Jb9CPIjJSbpKpwwITFtO27dipgxs4GtiVBgER2oRnevYZ0NSkxGv3zi5XYlIZX0NRYBFSnQhDEDvGH07alTF3DvRO9MNU4HtpkB9DGHfp0d/Cbx8AN0pl1wTxg3LbomOYWRUcEHlzRZ4Bi1UHkqdek8T7Gf79O/N1jkLHshtwKjBFCf3owsktm8s1TIhOEAgHK+ojwTqmFeDfqB1SrrwoQhdPJHr16g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=6wuWCiudNRThSPFhuV6YNVPxraS0QNnlHuVqRgM9UCQ=; b=CF9vF0tMexX9q4+wgE0kXYe4zR41YAEcJsmzWIoZGmkNmu2J+mhaF+KsFSHf8bQEPUALkZj07RAPE+4UdHRdh2hNeZw8K+Ao+n4Q3SEK9YBZuQqBhvsXy8g3gGhew8f5ojT04l185sedik/iQsZyVOTBna38FnEKy5gdjRYg9KetyDE5NK89Itha3Bm7NfOX2chIfllJdepoHmjIWPFavz10Sxodud4WPy1McpYydc7ZsycPtqgvttHjQVwsOEe8MilH3+Cdnwbsqji3RSyRglxvAMy9pSPl5RGyJHUhq/AbDS+SBEkhHiS0A7R4HfdsHhk+V2NLdCJdNqo39GABSg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=altera.com; dmarc=pass action=none header.from=altera.com; dkim=pass header.d=altera.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=altera.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=6wuWCiudNRThSPFhuV6YNVPxraS0QNnlHuVqRgM9UCQ=; b=qZUjkqhpQV/Gy3Q9BKb80by+JVOGOChu4zcafo7qOyph4LTZH3lQpyfFN2O0uLmMEgYU8170aQkdJ62r/lsNEjrwxV2in7RnXC3vUp/htB4L0mdk5g+h20JTw9CwIS2r+TrjuBGIJONyPrmHXdRax+zC/3aBg89TmvtjCSaZSk8Vf3OwBbi1Y5ALSyW9j3wf4KwikYwrzWeR3akm1Z+3KwC9LNKSqldcicW16sRL7RMKF85X9q0ftcQ1mMteqbjsDcWAISEI3sGw4bGxgB9h2kSpMAwXsWn0ZIb4KhEzgH1+0AsrDeP0bZ7jlGRFsPHqXuE/IMGBcOw8/Hs5tx2kNw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=altera.com; Received: from DM8PR03MB6230.namprd03.prod.outlook.com (2603:10b6:8:3c::13) by BN8PR03MB4916.namprd03.prod.outlook.com (2603:10b6:408:7a::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9412.11; Fri, 12 Dec 2025 09:05:36 +0000 Received: from DM8PR03MB6230.namprd03.prod.outlook.com ([fe80::abad:9d80:7a13:9542]) by DM8PR03MB6230.namprd03.prod.outlook.com ([fe80::abad:9d80:7a13:9542%3]) with mapi id 15.20.9388.013; Fri, 12 Dec 2025 09:05:35 +0000 From: adrianhoyin.ng@altera.com To: alexandre.belloni@bootlin.com, Frank.Li@nxp.com, linux-i3c@lists.infradead.org, linux-kernel@vger.kernel.org Cc: adrianhoyin.ng@altera.com Subject: [PATCH v8 2/4] i3c: dw: Add support for Device NACK Retry configuration Date: Fri, 12 Dec 2025 17:02:56 +0800 Message-ID: X-Mailer: git-send-email 2.49.GIT In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: KU0P306CA0061.MYSP306.PROD.OUTLOOK.COM (2603:1096:d10:23::14) To DM8PR03MB6230.namprd03.prod.outlook.com (2603:10b6:8:3c::13) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM8PR03MB6230:EE_|BN8PR03MB4916:EE_ X-MS-Office365-Filtering-Correlation-Id: 589297d1-3c1b-437c-ddf4-08de395d9ccb X-MS-Exchange-AtpMessageProperties: SA X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|1800799024|366016; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?8N5u/EDiv7jnWUGlmh2x7taAao8gF8U3uxledfuJfYcVOcD7xg1scGhbY4yG?= =?us-ascii?Q?czprJIajaX4WRx+cIcYoZfBVfan0anrNvpX7+M4HxFHea9BR/g0eWT4BnyWG?= =?us-ascii?Q?IfYRtS69ZOnXH4+k4LhLWPdS0kq/5cw6ygOvaBEaDvmLW3oba//vpS7M89uh?= =?us-ascii?Q?V/iYzwL+Y1l9TQIIpSzsac8v/9leHfjpHxazq5dbKuqXiKWBQylwF76e/k4j?= =?us-ascii?Q?MBz0j2OEvxzTdPHwpkvBhy+YPW0tY8vipznUIN+hzTHw7zOJxxn7Boaw7HGl?= =?us-ascii?Q?Rtr0S4a+UaqU1/BWsHrTlUVl1vgBVheWGeKdAMTzzKyS2XslH05M4mRZDY/H?= =?us-ascii?Q?yJP4jqz7wnNwdSzpgf0tOLV8JuHNHYHD/XtLHA4WBIW/FBBJB/aVAF13ucnp?= =?us-ascii?Q?5/SFNqarSVGW1J5mTwsWYI2BGsDGa3mMc/eHQeAgJGGaEU0vSvtG0v0hHLqY?= =?us-ascii?Q?lYdJ5RZAyCtCXhKf5oCsEgQW0XHnKaZQDJUkxJKwix2LOJBkw65+6hJpRbsC?= =?us-ascii?Q?X3KnKhXKXFwQe3itADxSkpujvcmX2vvUuJ41hA963NmU0RohXHTc6shIRkbv?= =?us-ascii?Q?tZe/L3tK/m6NRvE013GbLHI6oqvlcAb6UhIcNVSDYzH3PLWnQPfgsEglF5Du?= =?us-ascii?Q?9Yo5ffVMpkIkDqRDj2o3n0Jtk0elMUAYhMSCqaBhQaTPheM46FZau6GywKfW?= =?us-ascii?Q?pfhHDbv0N2+P0uKgLX7hTIV/rilBkHHq+y4v4L1dEYuz56kKGMHpiYQv6tJa?= =?us-ascii?Q?OaeRQsKXbuwZmX6QG35AP6thhINpXNqVidAWs/xcao1pqIH+lgqRcum6E4Ic?= =?us-ascii?Q?aex4Taj3k2eOCJ/E2GRuV/dlEDyK6mWBvIw6NNww+Gantm4m5hgYUiacVxOn?= =?us-ascii?Q?dXDnJCQQ57NOw6m5+XZlv/0odfMGqKIPrDc7U95J79flP+EOTytQsBGi4X1V?= =?us-ascii?Q?gvWzLpjG++DHIIWFluNPSmKyvvCngNKsZswdfMpaPw1GHBR5LncBJUcYHpKB?= =?us-ascii?Q?h8NHP8whDXQxcumpleVG78+LvvpWlF6Teng12nj2t96d0L4hxFFq099K2WAP?= =?us-ascii?Q?MPZka2r3xeEQPdXy3jSI81xU3J7dW8Sra9nHXcAbfKNCK/OL2pxH+FlCW0xs?= =?us-ascii?Q?20KWXAupbxwSaatOvUjw4pz/woJUROD6y0tVSLo/qXnQe9p/vMyoNOMIcsgg?= =?us-ascii?Q?IPwUeLMkp81QZLOauWYtfP8+WqhiszIXJ6fkj4BSLrQPRkce1gwdbchjPf8V?= =?us-ascii?Q?gE44P8Zu7k0+1YRTd+1uQVNY+CfSeLSSwdzVPXWFbcCV/3P9VZn1cO3g9nS5?= =?us-ascii?Q?5l69hyDrThPPFb1FsdSNZfUFw+JLYaBT55DzeI87+sx5NnMOUsLdwNCPsdgH?= =?us-ascii?Q?7mospwJuN20yiXTJaAXc0ULOa6nk6PNOFTNH+F97xpOvRP4bIcxpkvLVHVey?= =?us-ascii?Q?HHxR8pyGr0zCj6oK6JAHjW9c3y/S5TI7?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM8PR03MB6230.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?SsOhl8RfM31sxr8P/HeU3fJaWIbAFqH8c1oQrn6PDXnSnR5oyr0+k2+aDdx9?= =?us-ascii?Q?ae+ys8moXmYDqDC06xf3bYziWH9Yxy1u7CupF3t3tBBtE2Yww+YpgP0X2xrK?= =?us-ascii?Q?Y3sVxT7U/NfCndlJJibZsLSAHt6lKEjMttxOEtsfBFP8nsxeE67iyqbJfiHO?= =?us-ascii?Q?8frhRk07G4adC7ewGHZVPQ4OKBrNuYaw0+DUfNUG58x5EMay72Ph7q4Zerr9?= =?us-ascii?Q?k35N3Pr9mPh/1G1hqOZEfRMohtNWeKWXsvdU/EXpazcDO22pp/SAwi2NtZJR?= =?us-ascii?Q?BlMAUXlEN4MI1JFhPX5Zit3rL1dnjBAmwkqbv/sdenwdKvFYVJk07RLs8MS8?= =?us-ascii?Q?OjB7F/UGi7ytIL94578xei+pGBhWCtk6uYBP3GrDGZlWGKC4JFLcYuYwLdt1?= =?us-ascii?Q?vakHtrp5elVrMLbbybYPo13oQQ551K/qc5cs1CHyXRvQEFnxkDR/8wOD90fw?= =?us-ascii?Q?ZYn24p8JFz3ddEbfb+0NAx+qDwFJ1DtuAPPuWoK390u87okKodmbsRfGcYjA?= =?us-ascii?Q?fFLJD9YMS0fLI5SpXP97hPROLZwTMVI4v1kmqhyw1pqzdQsWUtnZSWfbLDDH?= =?us-ascii?Q?w4QLxGU3ywky+hL0Bd0KhadwJ46KcOzxiMZxijK4Elf/hFgQopWlTnBS2yy8?= =?us-ascii?Q?uMYpmKfT3pE9KR2kedqj4zS6RwlgQSe2wLflbvTpEZNbW3FIzzTx6kt0ScZo?= =?us-ascii?Q?M6ruuY9Ds5pxw8c4PxKMXgN08TGmUxPeAg7817ngK2bnF7hCSxnMfmoab+Bi?= =?us-ascii?Q?YrNBB34KKd1cj45aHcQqPBnkZcSqjOWHxsW/cGDKryRMYgG1tRVkVzbb486C?= =?us-ascii?Q?WOnufuX4GAmQ/1HmWAkutoHAL6IP2rwOSbrLUJ4Z4QboSvLThFgzkNbsmfnK?= =?us-ascii?Q?pWvZV+4GqQff1/cp3NdcxQTu9lzYP6ygA6yayl8k3ZaVyqMVK3JtVcCGGwnO?= =?us-ascii?Q?HoCQEa8Pyx7CzFjtYg4Mg7gX3fM9u+S6Ezo4yu1c6V4xzE4M+qc+abbvYL34?= =?us-ascii?Q?hmmx4VFBjJmoq0ZZZC7l64Wx+ygVZOF2P23pJoH1W+GBNLoA2vX6F/bx6Bh0?= =?us-ascii?Q?bD6AE6N2LyR/uDmXfjWSbRy56sFLegmS6wPnH9G1D7OHW1R1YHERra1ozWZ4?= =?us-ascii?Q?4PUNsn7Ul1w2QWcJKH8Iy/TfvgmGkM7lJLDlERndbtbY5LolRGoX44vI/3nX?= =?us-ascii?Q?6A1RqmQmR4abJaeW9Arx3n+rmpE35qmypSh6o9sgHjeli7ZwxQmnC2ywZ5/W?= =?us-ascii?Q?H5s/AM0+DqQBVodqO93O1Iqlc+EMIeqvyUW5Q0mMyiRNMwDnJBmdLOhyeKW4?= =?us-ascii?Q?km/4XRVKsh/z1yvg2PFp5QnxHw0xvW5+BSHlYBK+E/xyUrU1psU1Neq9ZNqz?= =?us-ascii?Q?MczDVNncPuVUFwnwx2POszFpEYUJQ3nY2C4wUsoLjYe9qKuNMKHsgOzHhD3k?= =?us-ascii?Q?S1/kA9jRx83lVPn6Hi7DB9FpKPNryH0BB4qyqef1pWShtK/zZXaTbZgUjh5s?= =?us-ascii?Q?+Ap9CgS1Qwi1Cojz03ACR95dIrKzYxVDKyppjJqrBXTDkHJS234BnCxhkHwS?= =?us-ascii?Q?QVgw5RJJSPEFDGIkWmH8wmBNNKkN88t3rusS6XcAIHqrV/yy5r/IW/8Zsgbf?= =?us-ascii?Q?Mg=3D=3D?= X-OriginatorOrg: altera.com X-MS-Exchange-CrossTenant-Network-Message-Id: 589297d1-3c1b-437c-ddf4-08de395d9ccb X-MS-Exchange-CrossTenant-AuthSource: DM8PR03MB6230.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Dec 2025 09:05:35.9692 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: fbd72e03-d4a5-4110-adce-614d51f2077a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: XT8t2U8uigdaD1rcMK8osAVhGmH8uYxtL3syvOFEXeRdvl2HGkBP3gPCFZjn5d8cfxyE74xpNm+vM7RTnGNrk1Uvq49bXOUuUX5CU1aBA1Y= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN8PR03MB4916 Content-Type: text/plain; charset="utf-8" From: Adrian Ng Ho Yin The DesignWare I3C controller supports automatically retrying transactions when a device NACKs. This is useful for slave devices that may be temporarily busy and not ready to respond immediately. Add new ops to configure all active DAT entry with dev_nack_retry during runtime. Returns error when value exceeds hw specified limit. Signed-off-by: Adrian Ng Ho Yin Reviewed-by: Frank Li --- drivers/i3c/master/dw-i3c-master.c | 40 ++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/drivers/i3c/master/dw-i3c-master.c b/drivers/i3c/master/dw-i3c= -master.c index 9ceedf09c3b6..ce33600d4c5e 100644 --- a/drivers/i3c/master/dw-i3c-master.c +++ b/drivers/i3c/master/dw-i3c-master.c @@ -5,6 +5,7 @@ * Author: Vitor Soares */ =20 +#include #include #include #include @@ -204,8 +205,12 @@ #define EXTENDED_CAPABILITY 0xe8 #define SLAVE_CONFIG 0xec =20 +#define DW_I3C_DEV_NACK_RETRY_CNT_MAX 0x3 +#define DEV_ADDR_TABLE_DEV_NACK_RETRY_MASK GENMASK(30, 29) #define DEV_ADDR_TABLE_IBI_MDB BIT(12) #define DEV_ADDR_TABLE_SIR_REJECT BIT(13) +#define DEV_ADDR_TABLE_DEV_NACK_RETRY_CNT(x) \ + FIELD_PREP(DEV_ADDR_TABLE_DEV_NACK_RETRY_MASK, (x)) #define DEV_ADDR_TABLE_LEGACY_I2C_DEV BIT(31) #define DEV_ADDR_TABLE_DYNAMIC_ADDR(x) (((x) << 16) & GENMASK(23, 16)) #define DEV_ADDR_TABLE_STATIC_ADDR(x) ((x) & GENMASK(6, 0)) @@ -1484,6 +1489,40 @@ static irqreturn_t dw_i3c_master_irq_handler(int irq= , void *dev_id) return IRQ_HANDLED; } =20 +static int dw_i3c_master_set_dev_nack_retry(struct i3c_master_controller *= m, + unsigned long dev_nack_retry_cnt) +{ + struct dw_i3c_master *master =3D to_dw_i3c_master(m); + u32 reg; + int i; + + if (dev_nack_retry_cnt > DW_I3C_DEV_NACK_RETRY_CNT_MAX) { + dev_err(&master->base.dev, + "Value %ld exceeds maximum %d\n", + dev_nack_retry_cnt, DW_I3C_DEV_NACK_RETRY_CNT_MAX); + return -ERANGE; + } + + /* + * Update DAT entries for all currently attached devices. + * We directly iterate through the master's device array. + */ + for (i =3D 0; i < master->maxdevs; i++) { + /* Skip free/empty slots */ + if (master->free_pos & BIT(i)) + continue; + + reg =3D readl(master->regs + + DEV_ADDR_TABLE_LOC(master->datstartaddr, i)); + reg &=3D ~DEV_ADDR_TABLE_DEV_NACK_RETRY_MASK; + reg |=3D DEV_ADDR_TABLE_DEV_NACK_RETRY_CNT(dev_nack_retry_cnt); + writel(reg, master->regs + + DEV_ADDR_TABLE_LOC(master->datstartaddr, i)); + } + + return 0; +} + static const struct i3c_master_controller_ops dw_mipi_i3c_ops =3D { .bus_init =3D dw_i3c_master_bus_init, .bus_cleanup =3D dw_i3c_master_bus_cleanup, @@ -1504,6 +1543,7 @@ static const struct i3c_master_controller_ops dw_mipi= _i3c_ops =3D { .recycle_ibi_slot =3D dw_i3c_master_recycle_ibi_slot, .enable_hotjoin =3D dw_i3c_master_enable_hotjoin, .disable_hotjoin =3D dw_i3c_master_disable_hotjoin, + .set_dev_nack_retry =3D dw_i3c_master_set_dev_nack_retry, }; =20 /* default platform ops implementations */ --=20 2.49.GIT From nobody Thu Dec 18 13:33:11 2025 Received: from PH7PR06CU001.outbound.protection.outlook.com (mail-westus3azon11010011.outbound.protection.outlook.com [52.101.201.11]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 08373311C37 for ; Fri, 12 Dec 2025 09:05:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.201.11 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765530343; cv=fail; b=AVmZEb9Gm2K5foXK8o9nc7bFjnJQFj/WmYWfd46NZmSRBtUe5AR4h5MBz9tbo8DqEwLjsRhnaJpUNUXXTjMpd6SP936wtKoxbqmI+jTF4OFmqc/VivvOZMnW4sQg1QitPJhqT0qdlaJJ60JiHlXxX7LQ+PzcfSIndfVLllj8Vy4= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765530343; c=relaxed/simple; bh=ocyUo8Gr7c6XG0eHVJZRW1An7qoMryNXfPhayJ4sEFI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=ADVxDbOQPWGc0i67S9+nKT8BlFY4IVNnYciPO/i7RbPkZqlZmnpRDXueiSLj+98wWY259zXticLbVaBOAdwy0/URgpROZ76uIVGwFgCgsxF5H1tGQcfi5nWEWnrMwOrLAajKstPC8W5W2Qkfz6EHUE7eXrbBNzKw7k/V2MdELc0= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=altera.com; spf=pass smtp.mailfrom=altera.com; dkim=pass (2048-bit key) header.d=altera.com header.i=@altera.com header.b=kwzk24y6; arc=fail smtp.client-ip=52.101.201.11 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=altera.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=altera.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=altera.com header.i=@altera.com header.b="kwzk24y6" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=aSHsk+TtNZl7EGW4LTcyJhkXSAtE/jRGOdL6rYY3rBr9nBvhIQEQS3UA7jdCk7F328vxKNPmfkZEU22HaSwcticH2IQX3PtBJYkGSnWZIjhdon52N/Ip3/30KkcNBAeKc5gRfMZ1Le/HoWpO5TSyD46kc9JW1BGBbcRhIyJ2niTNYK3Hro3Hj/Jmk9aR591Z6Fj4U+S6+QCzqqKJBKWVJ8P2QkN3zTlMOAXR7OLpBTOMy7j6Ab6WfI5ogCwn4wxmyUOwmSUp6yroifNIo7597Y0/frodIO0duiPJxlZuiDlsG4wv/Xf+48cn1CZ9ScHsCHwMRoZWNe4P4Ec3/IJwvw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=KBQcYoXnCA5aexBrW1l/Zv9dgGm77dX1yyKyPswL0O0=; b=HXLfJcNTAQ4GwaoKzgCUeO1xxKKB/F9w6Rv/DSFCvXEhrWHAWlCjqx2VyQHKdObxOsTkU56J0HXHa4kW4+1Fl8rWLk/cjGL85fOkfcKjVyOy9Xve5PHqO6QFp1yDNP/bxpio/IESln/JtCcipB/cU7iKo/3baR+4inhu+0DwnGCljrmw6kiYDhDGP4JjjX7tOOelddpnvXGXYleU6ouz0iwVCwCzQ5EUQUupfj1tkTEaSOinHULpA8B26zai32edIdTvWtpCctgWEcn2VY6TaQnm4DhqR34Wq0eoa2Lr7DaUjdZzCwHFuKi0n8Tccz5G3vftTEr54O5tvB8OUBAc3A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=altera.com; dmarc=pass action=none header.from=altera.com; dkim=pass header.d=altera.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=altera.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=KBQcYoXnCA5aexBrW1l/Zv9dgGm77dX1yyKyPswL0O0=; b=kwzk24y6JLFsMVgdeGpo0A5jbNmms8y4QtnA2tF8aUiD7B6Y4Bj6stAX08nlsg3NhvvptGdPEqTEGwFohsdv8cJ4s+eOpYoGRA+FqkOkHly65lZz5tN40OOYMUkYy8b52wriB33H4yKrVdxBNBEoI7fkRMJOJMB9JPZfPnIf3gQ+CaLrND+wL9dv315XCJpV6MobzsZHPaRfrz8m/ImV+vZ56TfArJBo+bZdb7ETVNmBz2TCbCgpigltx+RMlkLbzUrGtyieG5jdgwJq/SwcRxPzwTpVhbtwUzi7bTQVkRqV7xbq//djM0u2pxRXEh4I/RKJkCXM1/E0gBS7LIDACQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=altera.com; Received: from DM8PR03MB6230.namprd03.prod.outlook.com (2603:10b6:8:3c::13) by BN8PR03MB4916.namprd03.prod.outlook.com (2603:10b6:408:7a::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9412.11; Fri, 12 Dec 2025 09:05:37 +0000 Received: from DM8PR03MB6230.namprd03.prod.outlook.com ([fe80::abad:9d80:7a13:9542]) by DM8PR03MB6230.namprd03.prod.outlook.com ([fe80::abad:9d80:7a13:9542%3]) with mapi id 15.20.9388.013; Fri, 12 Dec 2025 09:05:37 +0000 From: adrianhoyin.ng@altera.com To: alexandre.belloni@bootlin.com, Frank.Li@nxp.com, linux-i3c@lists.infradead.org, linux-kernel@vger.kernel.org Cc: adrianhoyin.ng@altera.com Subject: [PATCH v8 3/4] i3c: dw: use FIELD_PREP for device address table macros Date: Fri, 12 Dec 2025 17:02:57 +0800 Message-ID: X-Mailer: git-send-email 2.49.GIT In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: KU0P306CA0061.MYSP306.PROD.OUTLOOK.COM (2603:1096:d10:23::14) To DM8PR03MB6230.namprd03.prod.outlook.com (2603:10b6:8:3c::13) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM8PR03MB6230:EE_|BN8PR03MB4916:EE_ X-MS-Office365-Filtering-Correlation-Id: 627acd1b-8181-41fc-2f37-08de395d9df6 X-MS-Exchange-AtpMessageProperties: SA X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|1800799024|366016; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?pZmDZpezh/ybFTgKfRW/Zn3mSB+ZUhfYuQc37n5TQgQlRpoaiHMOeacTIE+s?= =?us-ascii?Q?CAbLTV13nFDZZdo2zp4rOufhEXEt+bb5M/dXoiyopqhV0cFu1GRZ/pzVdXAT?= =?us-ascii?Q?LRbPL97Au2a4JVyLGEsugSRdRHJA3cqolu3ltq745t8xkCYnKannryeIiLv7?= =?us-ascii?Q?IvHKY7UEBcHQt1pM9z+uhEkyQO7Cz1IS6wmFTjt7n3NnUJIAMPuNJyfmo7xC?= =?us-ascii?Q?52tLRurG5qVKw6z1t2HomF1iSNroKjoB2bo72DaLMn/cGECLtO3++bURw2fh?= =?us-ascii?Q?ehqfo5NxGahvPDItvQflMyfZvVcZl5pIYOotWceNsfEYP/8h7Ymp7UeLZFPc?= =?us-ascii?Q?cx6MrB4c1PdvDB6IWEHrPMa9xabuvyb1ZPz2yRjSuXTYBmD6nRQQITqRWY97?= =?us-ascii?Q?UPO9UGGMMXfVYzDRfAwNINM2umHM7SnGj+aMXaS/y+XGw9tHcrS3/FOif9Ej?= =?us-ascii?Q?wySGP/x3ZJWS2b9gX2kQsd20QBd+2y5fqT2YE519+4409ilySTl6JNrTPxZs?= =?us-ascii?Q?KJrKH7ChYaQcOy1xQRy93X5iFIHvCEk4jwA8K42KDH3//YHCoPrCd0nhjsx3?= =?us-ascii?Q?8ULqTjFZu+PbCxotp7MrNKxKcGCWis/+CXKiVv1A8pqvN4qAxkuwuviZpORn?= =?us-ascii?Q?0x9F6OsvtQT3WD1q6xxE+ASG1uKYIr2EV7HARy82D+xSFNnNUlOWd+j3almO?= =?us-ascii?Q?QaVzqhKEl8a1DRHIZ224Rzq50nUBgxNekQ3h44waIVCQdcHrqYFfmSGOsgh+?= =?us-ascii?Q?X6TFZj30Wr2XrsLUXvbg+gJdzzdTGLYoIi7v1BZvG2p+tVz2FuEHk4bvwNhn?= =?us-ascii?Q?wH0GtyDAIYoTlOty92P3R0X8WkGudtnB3aIGcDwWwoF0PS8GWRskbBQSLje+?= =?us-ascii?Q?9iLGhuWg1ad0/ZD1yvTP+mCdgjo8j/3AcEAvp8gC9hLHqTQyhhI36y7O+Jto?= =?us-ascii?Q?co4KHj01r3bIDfOSDBPl2FU4+geHr6kHHa9BRc/8w3Tzt86pE66WUSa7mE6y?= =?us-ascii?Q?EKdgqFxrJvqt7aU8z+M5eeU9BE2YMJ/cToRBo77oV70/R0N41NjIj74T3b+R?= =?us-ascii?Q?xwOwGbE6TzaxFzPTyGDUvZRPCgphswCq72oYPTPsL9pdPO40VCM3WaayOD/F?= =?us-ascii?Q?XnraRg9KvAsO7YkBc3pIfLEu4XLh5Gyp4FcHSj5lKcRKcqX+PLEv+cCrpu78?= =?us-ascii?Q?MIxm7EQ+4i+2+lLak9t+zF6YHs3g4YGvEgxS/6XX2kUGp+5wQ8gCN+dqN6Q3?= =?us-ascii?Q?oXhqfkfv6/FCEFn0+3BU3DUKh0+E+76tg4DMqNmGfHdesK7ANd4gdGun/NPZ?= =?us-ascii?Q?4jNogCTwN1Qu4MU0MU92YhEsk9S9JbPzZw0bHMC1u9HzYjpdgFnnqpuMwtQU?= =?us-ascii?Q?Xv5DdwzHYtgVt4vk/mHq0BG0l0P46Tddw6552R9hDZyncAba6x2iDkIXUE/F?= =?us-ascii?Q?NcwRIvtklxDyCsuJTGv1P8gRQQy1vCaR?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM8PR03MB6230.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?fvzcGI/kBDi/C6AUrqIZipFppOM0m1T3KJrMobFy78EcFFEYxWUuuBSJz6Bi?= =?us-ascii?Q?e4kl5xN2JUR5sqzHZHInciv7u7hhVQiZJH4OkHZJDdF6aHKdu1+G/4xreYGI?= =?us-ascii?Q?1uzEx5lKon1/NMvy2ssMEkVUztX50wKcwdxJ+wB5NKDCYiEMDrIdL8Yvtuzi?= =?us-ascii?Q?uAcnKAbhr0dN3e7E5b2rtLx1ScgPYxthHY1ipn8kKyhblBkxtxOjeXKDpVs7?= =?us-ascii?Q?0Kc8vybW8Nt1GR1OY+6swnf1PkAbICJGSWGs39oh/DM5gL+TSkrJLqOUbcJk?= =?us-ascii?Q?O1BCeQsl4sv5piuSbo6meOvb4QnUDlVfegqpRpwU8S1cd2JlnKTMaDXiSB35?= =?us-ascii?Q?HkTMclj99P2lID+28mVHZuOCNaXTY6E79i2lfktlkYXZYh60mCcIGtVcbkMU?= =?us-ascii?Q?SY2TN3+DcNRxnLeDla12ItT8jirQ4hwT3a69abuTJtixF8tFLJ95OmGCxWVn?= =?us-ascii?Q?epzag8vILzzeZY3pILLB5tH28kSVyZqPH/j9j6MI3TUlmY/5EiecMTtJb8W2?= =?us-ascii?Q?lRHouMMaC6wXGBRIAwxNlyqa1Wly2UWnxFgxo4jEm1TiKRdq9OI3BH4hf5xM?= =?us-ascii?Q?UkWLABE8E3Jfk4H/+O7vvriU29cQfTpKc8sw6gkkkQd5SL2JkEY8IiNX+RAA?= =?us-ascii?Q?iH/Br7vF7+LFywWcSeEyzLlxBIr1qd/uHw1w8l9k8mEE2hFFGzq4dydNTpTo?= =?us-ascii?Q?kiLS/fcx42Af0vf65dTyXZLKD58j5dtN5PK2Bo68+AuztHA5EjxJZzW1hjy4?= =?us-ascii?Q?h5TvAxNXqNuSQog8M9DusSKnkq27uXJNxQHi+YnT/B7SQ4r9nj1/xO0VaTlx?= =?us-ascii?Q?TY6VskBM9jrAJgBGgjRArmZwiAVUsuW6cQnLgUy8lkGku6wcj/mWJHpBDLDI?= =?us-ascii?Q?zaOetcbdahxtWHm/R+LcRQebvurNxH/fwvDjjUfOzkT/iwfr8XiGw5ws3j3y?= =?us-ascii?Q?wYD8rcnTo2YFPk059jY6TCVD8wyyT3JLizPCKkL7RrpLZHDsztNLp+RqAjAz?= =?us-ascii?Q?Eodv1GoErZA7oh6XXolG4fFIMfDXeu+pCoZ0b/cwj+Hxr2XleNAITPXO6zga?= =?us-ascii?Q?Ra6HhXr6tnfT+TiAdAzTFEt2uHZeblbKgF1m4Lnx4Pkso+IyW5d2ayiQZTYu?= =?us-ascii?Q?L8rsuVW/N3XPLyV/R6licMLCnyRpTeiNCApEN041BWh//BMsGmijQ0H/hHDZ?= =?us-ascii?Q?LSK2vrRAQBP2aNhmOrWUCMb5+xizjZMjv/GAJxLFpFVDseOWQy6ZKajZ/Xsm?= =?us-ascii?Q?EParNcYUFXJcR6BtLJ8M+dDW9M/Uk/6ZeiI7ZF+kcXAZy/sb/1k2i52aoIlF?= =?us-ascii?Q?oi0bk2V12IsCY17wpPpfnpH5yqDT9xIxWm29MEtbdB3YEWse0U8Ht6z9U6YD?= =?us-ascii?Q?LZAkUGL8+A+kL4AqY6QUoukfl2Nzhtaf6j2wfxYtG6A965GsoETkVM3kCxKA?= =?us-ascii?Q?qfH1uAYBWOESRlyVrRAzvAWU4FLghaGJV4U5PNcebL9AKtqhdPERTW5rJTOT?= =?us-ascii?Q?lBqe08t3CPUuv3uyjIgn1DI94FEXrULyiUFJu95/PFUvkknnvDNasVjCw4RE?= =?us-ascii?Q?G/ozqZvPPvxRosOTF+JQjfMYhEqmm0RL8uXsIFy2RUjhh5R+rZnRysUN3Y17?= =?us-ascii?Q?vg=3D=3D?= X-OriginatorOrg: altera.com X-MS-Exchange-CrossTenant-Network-Message-Id: 627acd1b-8181-41fc-2f37-08de395d9df6 X-MS-Exchange-CrossTenant-AuthSource: DM8PR03MB6230.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Dec 2025 09:05:37.9299 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: fbd72e03-d4a5-4110-adce-614d51f2077a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: oPNnsY3781YsCHqIsLsy04LrDM9Vxw7zLjSMhLSrzQPsK8bVxo91ziYTpC4mXdML1ztHH9NCCnXUgZV5/++4CUnB5kSbC38Se8sSvUd42to= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN8PR03MB4916 Content-Type: text/plain; charset="utf-8" From: Adrian Ng Ho Yin Add DEV_ADDR_TABLE_DYNAMIC_MASK / DEV_ADDR_TABLE_DYNAMIC_ADDR(x) for dynamic device addresses and DEV_ADDR_TABLE_STATIC_MASK / DEV_ADDR_TABLE_STATIC_ADDR(x) for static device addresses in the I3C address table. Replace manual shift-and-mask with FIELD_PREP() for both dynamic and static addresses for clarity and maintainability. Signed-off-by: Adrian Ng Ho Yin Reviewed-by: Frank Li --- drivers/i3c/master/dw-i3c-master.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/i3c/master/dw-i3c-master.c b/drivers/i3c/master/dw-i3c= -master.c index ce33600d4c5e..f96b30c4cbfc 100644 --- a/drivers/i3c/master/dw-i3c-master.c +++ b/drivers/i3c/master/dw-i3c-master.c @@ -207,13 +207,15 @@ =20 #define DW_I3C_DEV_NACK_RETRY_CNT_MAX 0x3 #define DEV_ADDR_TABLE_DEV_NACK_RETRY_MASK GENMASK(30, 29) +#define DEV_ADDR_TABLE_DYNAMIC_MASK GENMASK(23, 16) +#define DEV_ADDR_TABLE_STATIC_MASK GENMASK(6, 0) #define DEV_ADDR_TABLE_IBI_MDB BIT(12) #define DEV_ADDR_TABLE_SIR_REJECT BIT(13) #define DEV_ADDR_TABLE_DEV_NACK_RETRY_CNT(x) \ FIELD_PREP(DEV_ADDR_TABLE_DEV_NACK_RETRY_MASK, (x)) #define DEV_ADDR_TABLE_LEGACY_I2C_DEV BIT(31) -#define DEV_ADDR_TABLE_DYNAMIC_ADDR(x) (((x) << 16) & GENMASK(23, 16)) -#define DEV_ADDR_TABLE_STATIC_ADDR(x) ((x) & GENMASK(6, 0)) +#define DEV_ADDR_TABLE_DYNAMIC_ADDR(x) FIELD_PREP(DEV_ADDR_TABLE_DYNAMIC_M= ASK, x) +#define DEV_ADDR_TABLE_STATIC_ADDR(x) FIELD_PREP(DEV_ADDR_TABLE_STATIC_MAS= K, x) #define DEV_ADDR_TABLE_LOC(start, idx) ((start) + ((idx) << 2)) =20 #define I3C_BUS_SDR1_SCL_RATE 8000000 --=20 2.49.GIT From nobody Thu Dec 18 13:33:11 2025 Received: from PH7PR06CU001.outbound.protection.outlook.com (mail-westus3azon11010011.outbound.protection.outlook.com [52.101.201.11]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D2082312825 for ; Fri, 12 Dec 2025 09:05:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.201.11 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765530345; cv=fail; b=IjW6eNdRij/55X31xemtTTcttvJ20k8j1KDNX5XRYfZmoHOZuP6AX/q/PiVxhC0XkruHnl2zOTdqqx2ydUavE2vVhmHb3ZUXAUdnDbM04PBiRMRIMt3AlkAl6m5CGHCR5AUlwGni1whWnB/sxqavsL8reBQv1sxjVaaWCLuH3Bk= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765530345; c=relaxed/simple; bh=4z0CmlyNorFmoxeNMsW2LLyLzmy/BD3IlmkLD/TgVcY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=pSgitoorWGQZp4uQyQvP93wL9IWukd42jBjAJdJPXOZQ+NJUzYDoGDYdRs/1I7ZhLw6f73qe27CJcxK8fW+VS2qWe3MBj8ARtTxbSefRkVVikglLoGhj3bi520apDjxd0p+EIro9hW0pWzhfPCHIP4or6+J3dbaKNcCpTsffLwA= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=altera.com; spf=pass smtp.mailfrom=altera.com; dkim=pass (2048-bit key) header.d=altera.com header.i=@altera.com header.b=JP0ENFZh; arc=fail smtp.client-ip=52.101.201.11 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=altera.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=altera.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=altera.com header.i=@altera.com header.b="JP0ENFZh" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=KaJRYHaNfG0IDuy6kuSBql4J43icVviLSJzos21zIHgV6CjUzO4zBlBVff4F8dWJoTj0BTpdeOPMdDm9JE9jg00JRfCDTKSJ4xIoh8B7WEPKRRG+XezZkyvAkL7c5a2f3OMlEPILLlaIs3n3Jg0AveQVr7C/zR8/SjcEwuuz/qeCUC5qR0HY5a6m33H9ldcUMwEpaLpMxguMm9SbpN4rGJoEoTQoufVX/Nw+jqz4m26c3IZaINCWQBuzFG+oetQyHisxz8KrGgL4yqKxlfObInhb+DsuasOOa9VNe3isM88qJeQk7K+X7h4gmAGk0K3C73kSx9iEOcVlZyCod8ktmQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=4ZussLaBiuI8OUlsznCz8+P3edV1h2TWAyYpNaZFRi8=; b=VndnilrfPMWPEjrgYo6p58/k4xiW59ieh6UTmsmQRHUQBgaruHXbsDKM4EfYMr2bEJBJotb18BmF55ePOo8RC6xIt42WzLs2fj174CyZjVQ879eNxXaVcdkn0cr9fhLd02AeYZqcTsYdE446g/ngv/c3l6Z500JKIxakwPkJxM2XBFUvFWEwinQt11eBZ97JTW9krJsLcCKwCL9D8xukYAyvGspilMWzpArHGwmxKUeoDWD3JInJ0QZhEAtVlGuGyfmMp6JqhhakQqbBx+/ybzXRsUEm4bJTqs7yIufw559evXCtvRK0GoUheEnjPnWGGohvh/g8MAFrlp2q6QbGtQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=altera.com; dmarc=pass action=none header.from=altera.com; dkim=pass header.d=altera.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=altera.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=4ZussLaBiuI8OUlsznCz8+P3edV1h2TWAyYpNaZFRi8=; b=JP0ENFZhD4RLE2qAwi4snHufrVgKy42ORxAw4Ci3pkxNsJVOhjZOkPsJk23Ysz/7qtmdKauwtqGNM77uRu/n+TzuMwc83WfKr+Hm7XuMNeCysUzwftYHN/JxtgckN8LFXESiNtG5D0XesuAEUhP3Cd4Kqyj6Tv/V8M9yLmDYF/yo4KI1zk/VqSW9qYY3vhWNPAjnQ4MQGFvSd88N+hBzxqC0QU+sZlLu7cQ4TsCISh7vJwf6Cx5o8wpD1gqOcJV6hl3AO7f9XWdKx0EiTLMdHnHKWNFfIqBkwKgTMFUvcsZ7ljQtLOs38UUGpB8dO5+hloe/TOresGOalNdohH8XHw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=altera.com; Received: from DM8PR03MB6230.namprd03.prod.outlook.com (2603:10b6:8:3c::13) by BN8PR03MB4916.namprd03.prod.outlook.com (2603:10b6:408:7a::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9412.11; Fri, 12 Dec 2025 09:05:39 +0000 Received: from DM8PR03MB6230.namprd03.prod.outlook.com ([fe80::abad:9d80:7a13:9542]) by DM8PR03MB6230.namprd03.prod.outlook.com ([fe80::abad:9d80:7a13:9542%3]) with mapi id 15.20.9388.013; Fri, 12 Dec 2025 09:05:40 +0000 From: adrianhoyin.ng@altera.com To: alexandre.belloni@bootlin.com, Frank.Li@nxp.com, linux-i3c@lists.infradead.org, linux-kernel@vger.kernel.org Cc: adrianhoyin.ng@altera.com Subject: [PATCH v8 4/4] i3c: dw: Preserve DAT entry bits when restoring addresses Date: Fri, 12 Dec 2025 17:02:58 +0800 Message-ID: <46112c0da44110f46709cb0e7a4595e312b95c10.1765529948.git.adrianhoyin.ng@altera.com> X-Mailer: git-send-email 2.49.GIT In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: KU0P306CA0061.MYSP306.PROD.OUTLOOK.COM (2603:1096:d10:23::14) To DM8PR03MB6230.namprd03.prod.outlook.com (2603:10b6:8:3c::13) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM8PR03MB6230:EE_|BN8PR03MB4916:EE_ X-MS-Office365-Filtering-Correlation-Id: 364de879-6d41-4006-c524-08de395d9f27 X-MS-Exchange-AtpMessageProperties: SA X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|1800799024|366016; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?qBnfxV60i5IDnvQW0piuKFon6OQKyXCtuAxoo5HK9+tlo17ezITC1XmPIpEh?= =?us-ascii?Q?rYxEb7PzkVx+zLPn2YXGttrG5FRajOgWet7i8ZNm6vDFOaOkqn4mAUXgVBkb?= =?us-ascii?Q?XofPhSxBkzt+xtKc11gvE2edVJdb20nRYyyVbEsFyhmYxoPvUAhj9UY9QzVU?= =?us-ascii?Q?xK3m2UZj/TyqpTjXv+CPgNqgQZgBw50+16SwqQM48+ZoDObhWstqsQmMbb60?= =?us-ascii?Q?5fAhMEeOb9ekA0sF/gFpcMh+DainWyt943bIdmOW2Miu9hkdtvHGopbPEaK+?= =?us-ascii?Q?558e4nWWhJapaqP78DwdKcsUVvYUqJQ68DZHQcrDgdU9hUWuyTa25Yz9rJRn?= =?us-ascii?Q?ZFs5MjN5XSe2DkOw1iGZybb2E7E+b+HJdvkjPmaxWBJE07/GLPTGe2rOZd7g?= =?us-ascii?Q?0zjIuuuKTMI0JEFW81OL5liYu+19rqvUB6wOMUe2kEsZ4h/376gZbTKSYcFV?= =?us-ascii?Q?lKV128R7cEKK/ivVCZS6HEAzqh74WvJTjX259YhXVz68Gf7kk6xaCrWUeO9A?= =?us-ascii?Q?Gr4DAwOsaTdrIKQXL6W91qCv7sHrdETS2Fp8JruWCbefWplkPef67Daa32gv?= =?us-ascii?Q?b36OceJjbTBj1NI8nBtzXRK2/3swZeaJPxWLHwJosCNSEYNCMl01cEqMgGi1?= =?us-ascii?Q?JcJ7YV2NsT2E8nU7uhTDTfai3ls7x8eElgF/uLlVwxYwfI76IX6ImyFKkiu3?= =?us-ascii?Q?hudpJ0fMQrUh3SeokCQJ/CpaydtZrZgxKKTonEtIMsIdRuvg87m+9nOfX3d6?= =?us-ascii?Q?jgSQmhYYKcwCXoKEkHuaGmX1oZfhd4+OhZFWnwLk3GmEVgxnAFVslJD7gL8j?= =?us-ascii?Q?sCaG5RQ25b7IN/Eh3fy+/65d8F1NwQ+ZZi/NS9kF+Jxds8ktV965j5HMLbgR?= =?us-ascii?Q?JUuJ2QQz6KtE6FLf49JIwL06i0/rD1t8MusiuuZ0BzslzQuTIy64fZV/Q0gR?= =?us-ascii?Q?X1rRiohJvQLjQfNKgVMXs+jiRGwPuoulLVV4wffVylmlXKRZ4VpNJhWKsU5G?= =?us-ascii?Q?gzMg8XsyrvVIeVZ3aGkq0qINJMcrT3N0BlVyD8Va2hoKMh0HFA6/EHX44tRj?= =?us-ascii?Q?RwQxIdyNOtulcIjC+Qs2RTPuW3R4JdrrWmNtlbkQphbilD656istAhkxgTMM?= =?us-ascii?Q?UKniw5quGFN9RlQYjON3DqvqrcZ3EA4dlrg6NsTLZuSgc4gmKZbhtsUG4VcA?= =?us-ascii?Q?tfWGOePqZ6dVlYmrJTETPlvj34ReidPYBPK3rx0tLyU/UGu89LhAXc5sC5LW?= =?us-ascii?Q?RRGEBz6+ODtMF60jpBbwAonGwxGQNSlozZR7xAeh7x9eb8Sie0LrEXNnSiuV?= =?us-ascii?Q?Cd1vc3ogsgmFG+KpLIDA3uSHNtionD/XjGaew7jiPlQfsauqXdRsHJxoCihL?= =?us-ascii?Q?wCCy+RUrzxFY4vgGsvC6FTyzI+au6YwJ0Ms+Fom/aXdb5zOSOWgSj1GNX9Wn?= =?us-ascii?Q?zDVhhq4EZmiJtEX7BXv3+BVvitKIvDP+?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM8PR03MB6230.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?OILvv+vcumo0rYEhBwzWUr/rgnuhG1S/d5WsRuKQNfXvTj098jXpoCYfG57y?= =?us-ascii?Q?qV8hmmQg1ncJuG6RJb62XPiv2LzmZQI7BcNKUyDHU1BZuqJMopjw/phsym96?= =?us-ascii?Q?O9nn/4nsxgp31PYDoqpBpjwvdvJx1wmf/lyoIdwFOLE3OkpZGKniRH8HjH0u?= =?us-ascii?Q?uEUFLvOYLOv4rVr2Xb1FX/jPf4G7GrrFyI/wF1dE97aFcE/JWjPiXBX6+QuC?= =?us-ascii?Q?e6Ssh6lApUj3GLYJbwNPeXy2XCS8XqxT4/pjrEVneMptaql8/VVxu7DuRDJw?= =?us-ascii?Q?FdKGE8pEbfqCe8a/JbJmOKgfvBhP6jWnGV/n/RJhl0xYlvfvJllVfWDIuRf1?= =?us-ascii?Q?B9wv3bg0DeuihWQvCb4Es2ecT8//Juw8PLR3QqMrcifIr7THS0xNNtQere2v?= =?us-ascii?Q?t/m0za/pytDg0JR1r9m1mVHLMw8OqIADCOX2jlk5aof3wPCVShr00+vLiDfh?= =?us-ascii?Q?RQNLQJxrlZV45YmpsVfjEtp7IRU8c4DLOk1zFZ7mnGZmm7jO360pje0ObSku?= =?us-ascii?Q?roO/pz+kXEjg4KMDCtcl1g4o9vUlBKFS8WfDJUdOuqVqUEvdPoNlgyiSP4+/?= =?us-ascii?Q?h0IX3Pf/K9z8xvbPgt7pu7wi28SeFbSOWP7qd4LYNVEKq8qKQUV0MxS5quHH?= =?us-ascii?Q?KL+dtJTjqy6JugfO+8YpUdwKz7xDsczGdbfkSSBDvx2k6o6rSOkZn8NOw9fx?= =?us-ascii?Q?Q2su2F+4HBai/MbILTe3bGIU8Ui4LhuGmuB4HZw55icZpzl54rXTa9Ui3F2A?= =?us-ascii?Q?eeP4aV70j6IRXxGv3mLgdSw2MHjIOMrEdCQoaKz5YDiq8y+5Y2c7Ks1gUxth?= =?us-ascii?Q?0CiYemhNQskacl0cOnxi8ZsdJjDruMwUPUZAym+A972N3NyOY3xakgNMja+b?= =?us-ascii?Q?1HlVU2wsg/LNRMLmpHAhDS2r7hOrI462u9kgtnV4zzIBYjP359o5FLqsQyek?= =?us-ascii?Q?Tjgp0cUfq66oj44XQfvR8e30OQ5and7i0yc23dN9PYuP3iqWG0TBXB4She4A?= =?us-ascii?Q?7dWjZ7aQH8G1hlKvJLcZLks5/TFsvuVVQySF6x7JN7Pz75x7sIQbo2JhDTVu?= =?us-ascii?Q?6q6iGPZ057lHspqco1jAqNg630Kvclxi8jq8HefHx71Aw/NfVv6XAhxU3npw?= =?us-ascii?Q?ynNFh/H7GuLAerIhFWo7eO2hrpFcCUTYLDhQq+CJOiepNYyO0OXPmDJPb5Du?= =?us-ascii?Q?LnP7eVqGxbJDbtw9ueoRh5tPiOtM95lMECW14TKkWqJf6pLaoCGRwNFF0V1N?= =?us-ascii?Q?PEhBSW2+zHUatq/pZXrwBE/W0ybU9/dba42F+CQJXvf5cW9RdIrjqInb7NCs?= =?us-ascii?Q?O11fN7fi7jBpudrLdryV1yq1tXpO06RSwvj4Ur23shuE58eSUlgN6fkWkH5Z?= =?us-ascii?Q?wUMeWM6Htm2BrnZVylToZlMvTnEHnIcUPtS9521JhWUtXaxfyqtwi4xPnELF?= =?us-ascii?Q?MzlrQNmlvDSeRgnGnKv6r6/caJa4P+mQV3XhcvPrdeuYj+zv1rp0/4VaC7tQ?= =?us-ascii?Q?C7pq8VzpS439kx8BfVnfLsk7fxi69ajAmd9qJGBQraVaN2yMPcdP1Zk7msKB?= =?us-ascii?Q?Q+OTWeqKOik5Zv16j9CItfHDBRiw74mrczNtYGFbQtgMoJBo9sA1BaQ56BO3?= =?us-ascii?Q?Eg=3D=3D?= X-OriginatorOrg: altera.com X-MS-Exchange-CrossTenant-Network-Message-Id: 364de879-6d41-4006-c524-08de395d9f27 X-MS-Exchange-CrossTenant-AuthSource: DM8PR03MB6230.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Dec 2025 09:05:39.9391 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: fbd72e03-d4a5-4110-adce-614d51f2077a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: hbY+OXFU4lJfGdEQaNyVoxFc+zVzEgBZxo1EXEdeBnga+Gy0hoqWyZ5uOmEXBrqODOLUWtuagihWshkdGgn7+vjO01uzWxVEfF++hID/nOM= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN8PR03MB4916 Content-Type: text/plain; charset="utf-8" From: Adrian Ng Ho Yin Update dw_i3c_master_restore_addrs() to preserve existing bits in each Device Address Table (DAT) entry when restoring addresses. This prevents overwriting configuration bits during PM runtime resumes. Signed-off-by: Adrian Ng Ho Yin Reviewed-by: Frank Li --- drivers/i3c/master/dw-i3c-master.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/drivers/i3c/master/dw-i3c-master.c b/drivers/i3c/master/dw-i3c= -master.c index f96b30c4cbfc..9ca609df593f 100644 --- a/drivers/i3c/master/dw-i3c-master.c +++ b/drivers/i3c/master/dw-i3c-master.c @@ -1696,11 +1696,16 @@ static void dw_i3c_master_restore_addrs(struct dw_i= 3c_master *master) if (master->free_pos & BIT(pos)) continue; =20 - if (master->devs[pos].is_i2c_addr) - reg_val =3D DEV_ADDR_TABLE_LEGACY_I2C_DEV | + reg_val =3D readl(master->regs + DEV_ADDR_TABLE_LOC(master->datstartaddr= , pos)); + + if (master->devs[pos].is_i2c_addr) { + reg_val &=3D ~DEV_ADDR_TABLE_STATIC_MASK; + reg_val |=3D DEV_ADDR_TABLE_LEGACY_I2C_DEV | DEV_ADDR_TABLE_STATIC_ADDR(master->devs[pos].addr); - else - reg_val =3D DEV_ADDR_TABLE_DYNAMIC_ADDR(master->devs[pos].addr); + } else { + reg_val &=3D ~DEV_ADDR_TABLE_DYNAMIC_MASK; + reg_val |=3D DEV_ADDR_TABLE_DYNAMIC_ADDR(master->devs[pos].addr); + } =20 writel(reg_val, master->regs + DEV_ADDR_TABLE_LOC(master->datstartaddr, = pos)); } --=20 2.49.GIT