From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from AM0PR83CU005.outbound.protection.outlook.com (mail-westeuropeazon11010029.outbound.protection.outlook.com [52.101.69.29]) (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 0C17930C61F for ; Tue, 12 May 2026 16:31:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.69.29 ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778603493; cv=fail; b=MmVZEAhsRpq04TRVLtv6vb97JgQFhW+Yf/4YFHHz9+qcUwGXH2nnPCBGQeZQvmmPfSFrQoYtnKdmihZrs7/77qGtXqcEB7Lms7PZNlsg4Yqbiq0MH7TNsFeQAPnIk/S46755WFhoGLIhlWmdGGQTsKnoYwowRUKY6KIPuAOCjwI= ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778603493; c=relaxed/simple; bh=RBLRRg9gb92Mc+/hFBFO/AOuLEzbSQQtGqR5tHbE9AM=; h=Date:From:To:Cc:Subject:Message-ID:References:Content-Type: Content-Disposition:In-Reply-To:MIME-Version; b=bFcA7bMrwMevA4lvn25QVucnOMe4eP6cI753VIHPOyjP02Ji5LYGZIpHc904SawOfUVYFRFQYogVYOuSxaN9vJ5cTY4Sym9X172/4PoyDQZX9bAniJaX2FbttPHRQkYkSguBOF0BIfOVWlhTiOITXcsjyfx5Z5zzq1ORl5gRZHY= ARC-Authentication-Results:i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com; spf=pass smtp.mailfrom=nxp.com; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b=ZD6fKieW; arc=fail smtp.client-ip=52.101.69.29 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b="ZD6fKieW" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=xSz3+nwKxlud1cMEV5LTVEZx6RygwFsfmxxjYiE+THTOzD/QNyurXGSOA751VnovXf9mvNl97fNDFodbaHmrcALIwB+zZYwsCOKs+0TzoImRTMNWhLwsvZt5TqP44rVLMPfLTFNhao7prcPpLzoQ3KZ4dR/vhGLLeFFlL7SfW6Mpzq6Z3W/PE+FbWLIwToL37cERsCdu8f5SFOPW0Rag5WManiFWK6u0tfKzmGT0Fv7xHWTTATd4MSIzWwLxd5KwF5tl0worVxCvtUsz9cqGZEMG9z0bwdUHDurwZAxBnrEBfvXXSXyvXr+PSAuiAmr61QcxVZUHitJieKg8KXIG0g== 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=kN3OctMBxwuA6bB7AexLmH5QiQpW6Cns8hjbTQIf56Y=; b=coO+pte81ViosV9bxcxJjXj/ZMRpGk0/zRkAAFy5Aeqtt1nUoVRGSrA/TkkUzU7y13i9pZAb0A2RPIa6FcF4ID2udlRtPrMBWEdnGcI2OdKEFgmyflScKjgAhisGIBPqjwSFa7aVTDuuEH+JnAlP4GWE0cyBQJ4BnHHzsBOWtz9H1xcKgcWT4NG8v1ytmlXM6XS0ucZmxZFfJlQN2NYI2U2NK+jj/IbdoSs6gKkTKwEPeNbr51XaIx2wsbpyM0WjheTHd9xSHVzoM9xHEs0ISvaX3qGU0GCkm/pOvtjrYOgFXi5nSbKqyohTFbVrxhaW7lz2KWqDmrTwO6WBQjGGxA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=kN3OctMBxwuA6bB7AexLmH5QiQpW6Cns8hjbTQIf56Y=; b=ZD6fKieWNWtgdXhQZdjlzZfAP3nMJITfH7139xY0nDh9Vh/7CGg+252IzCjVK3Qt7TcfOyASz7ANQpYydKeG1gztT0lmPdeE2BGDbATzkI5/dcLFZpptzmugvXUk7nYb0wRPXFgGCYX/i5tChHdODz7NnScIcqMvoAwRpZ488HILtfoOU7x8hgHR1dp8YTBWKTIr8xZ+augqMG1BK5HWTS4g3kXI8dEn6nO5iB0eN3y7U5Owr2KNfyzojG8yXRnq9thH2ugKCeKULAAIwHgO9Bpo+TU1tejddE7WesyDu6NIXOGwJzbj34S6boYD7ZyXxs7yqhzkGDh1e16PUOjeHw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PA4PR04MB9366.eurprd04.prod.outlook.com (2603:10a6:102:2a9::8) by DBBPR04MB7562.eurprd04.prod.outlook.com (2603:10a6:10:1f6::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9891.23; Tue, 12 May 2026 16:31:29 +0000 Received: from PA4PR04MB9366.eurprd04.prod.outlook.com ([fe80::75e4:8143:ddbc:6588]) by PA4PR04MB9366.eurprd04.prod.outlook.com ([fe80::75e4:8143:ddbc:6588%3]) with mapi id 15.20.9891.021; Tue, 12 May 2026 16:31:29 +0000 Date: Tue, 12 May 2026 12:31:23 -0400 From: Frank Li To: Adrian Hunter Cc: alexandre.belloni@bootlin.com, linux-i3c@lists.infradead.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH 7/8] i3c: master: Export i3c_master_enec_disec_locked() Message-ID: References: <20260512121732.406009-1-adrian.hunter@intel.com> <20260512121732.406009-8-adrian.hunter@intel.com> Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20260512121732.406009-8-adrian.hunter@intel.com> X-ClientProxiedBy: SA1PR03CA0008.namprd03.prod.outlook.com (2603:10b6:806:2d3::7) To PA4PR04MB9366.eurprd04.prod.outlook.com (2603:10a6:102:2a9::8) 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: PA4PR04MB9366:EE_|DBBPR04MB7562:EE_ X-MS-Office365-Filtering-Correlation-Id: abbcf50c-71cd-436e-cccf-08deb043eb45 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|52116014|376014|366016|1800799024|19092799006|22082099003|18002099003|38350700014|56012099003|11063799003; X-Microsoft-Antispam-Message-Info: Q/n4JBzGwWlLGs7IeKMicKxudk53+YWLtF7O1heyHyuDdiKvbEBhJO9XWqHB/e1fJtC3RsqNrpivDoY6UsAwXrZJPA6PdJlcGpZbzs9pOyM+0ZWvb7NzOKWrtLgo8530aW3JZYLZBQvxyL2PE4YEi/mgG8h9JuBAN1L4wPDx2anYS1xbzJhG92fHjgjLxnF5u32yGFsfJzn9YUZbG0+61o4FhOQake26UOwMSirJT3aDwLY+nYFPxC9IGknPY6pZFjU9/n0PRJfFcpVMem2u0TpOOU9Lm18fbOcWBmyrnRZbs32X6xo/lUKhpIFWhC/1kIZiGyb33jQEDjFDx79krgfyVv78ee0at1DOF7c25benp1qC2YrQqxOH2AaL3iSwJDlekl9pUkJsBTzU0IPZNOmuspwcGN3XbVGGWBkBQVZpCmy3ORj/q2oJTtUrMW5kRS0ev1Uf0K/Pp0EbiojOc05Fw34roUFpO7YEfdXgnq0rxtEx6+6Yit3Sda+/0QM/bPY6Hwo6bXfJkD9xfufoXfAMBxgDnoo2MRiLeOm4PitZF1kGKnsVrO0qL+0oBMXDUYQM2syftEtrk/4MhpyqNCxjhOyH015E0BvF711nYG3JA1/peUi3NMb7a3TiQE1UQwfL8UTfXqjiK/uMDwkj2nUyY5sRHoSGIkjvBqun/OE1lDIPqT6Yub26KWOvkarFs91wZwPFxONMGKOFzexujs3FcMt077tY3C4i0CZf/Ej2fkJgD1e3Jps2Pqoozpfj X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PA4PR04MB9366.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(52116014)(376014)(366016)(1800799024)(19092799006)(22082099003)(18002099003)(38350700014)(56012099003)(11063799003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?vea3avEcd6rI4Qtnv5pJz63RIgfej3qFVNLSWSu+m8d/udB5eGXUaqV9IWZ/?= =?us-ascii?Q?MZK+42drm+40o5DYco2V23l4sxPkznqSPgWEDJNdfvnXKA+beaxEtQMyX5ex?= =?us-ascii?Q?407GjNoVv+Or0gpV2v9DZKYjAi3NSOd7Cfx+7X5eH8vvrbzW3PQ17wbXU/fa?= =?us-ascii?Q?gBgR8DM53xRNUfp0jrpH+uT5Ebor8+m9wf148cWgaKarhYbVBUiowHxBZt/Z?= =?us-ascii?Q?13Xj87iV4nY8ze7/oPVIbycjTHFXOMGaPRnMAvh3qI5FsFjbths+YAw3VS7J?= =?us-ascii?Q?tfbnXqOVvYlbqoHeZnS8g7M/fhGFSjBuJc1XlJQnhgP5ky3OVKP3s+FuNzij?= =?us-ascii?Q?7ND9/1jy+50ejHHTaD1GbguJrsEgTz3/1Q0VD5sJVdVHwmI4Xr+scB7oL/ri?= =?us-ascii?Q?nSVn/YJm7eVKMKuz1C4RFj7QsrWPSpYqFSbDULAtR8K73+fs1cpd3EsjcwBq?= =?us-ascii?Q?IWkDzXyLZjaA+pAuoq4leDx2R7NN/ZAqn7ABt9u78jrAbfYgiphm0Dy7iHKj?= =?us-ascii?Q?/+7G/LWzfvQaqI1pvujB91iouhoI+a3BNqQdQzFMc8oJiyn3oQUcLXm60TZW?= =?us-ascii?Q?K+KFIXPfl6vDe46jHHcpXCGit6QevabOlNxV7TMwZk17JMd870HYQdLHm3dc?= =?us-ascii?Q?Z47LmlwAGCzMoM8ICadEnv3W/JfLd/mdtKa+J+60kYXacq7fBkuSc/BxTzIo?= =?us-ascii?Q?dVYTGIe8EkG8Yky7m9yvwhjH+5ROdDIFDbMAq/kTdI/0cGu611D4eP966UGG?= =?us-ascii?Q?IEZAWbto9gBtgSQYwuOzoQiTwdmpMfoUkVBTx3TmiLlnIG/EqTfbffTagyEV?= =?us-ascii?Q?7+B1/HMexkqJcUOQ+BoIZqzCCy7XTW2GPDQdxd/Z3JcROX1ifw7mH9X6BA8+?= =?us-ascii?Q?e6D39oqv6TplL2M5+RHjGG5FG0ju2lFPfBwvtr2wa365kD063L/yVFi25TqE?= =?us-ascii?Q?HCsk6RiceEewLNDFxVtT0clkh87krvRixi0cMfOCNnQkRWxwizx6e509FtEo?= =?us-ascii?Q?U2rybAhsgXHNHegNsfbAyLc06/1SjhE+FwJk1HWs9nGKDxHw86n8iosGW8g2?= =?us-ascii?Q?f1pGe/qPbWTK98a3c8NaqG9iwic2GnAq0+iaK94usEN2s2k/frAM98bg5KRh?= =?us-ascii?Q?HD6hV8TjbVbNNAIq0NxU3jUja0xr9a9HzPSw5slfQFnZU48o7K/iOR2zjomZ?= =?us-ascii?Q?PV4eeS2zJurBGn3nutrjmf06fmD2TMDXtsudPzjUSZBIUGSUpB5eqzOOQV3L?= =?us-ascii?Q?jwcn2YHOYg2BPsMqT6MqRukv472RDuSjcMaCcLwywE+P8ruoPGDCMJKwKQFT?= =?us-ascii?Q?rixljfH10RgXhC5qGIHhhhbAGOcn5SJuT79kB9IagSn3Qll22Z7fx3qUp++D?= =?us-ascii?Q?A30myAByPrOggQfDT2S7GiyBdcR+zvlk6m0wUt+b8+gEnpCwyOo5WHiyHwi2?= =?us-ascii?Q?LqvArdxULZ0P8QWcIp1xpPyrcjJ5vlDrz2l8Y3DvlAFjr4xCdZN6HhVCBJHi?= =?us-ascii?Q?WflipsOIw9K0QQS2PxcgfAWNT3xU934se8dSd77jenWfv8QEvPP9vW6NNsun?= =?us-ascii?Q?ta0MQItiuDSVt5kKBVW6o5g0AA/z6tqCVWvd+QmIitotTwsLw9lD5wNi/R6i?= =?us-ascii?Q?0Wc2KKKDqEHp5S6VFcTZnoBqUNyHsz46BUcdXbURRLlIZ5UnBGzxC2i+3g8s?= =?us-ascii?Q?X57Hkatku/ZrQ0rGl5eXnRvdORHGg3bxUkY6f/zy3urqv/D1?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: abbcf50c-71cd-436e-cccf-08deb043eb45 X-MS-Exchange-CrossTenant-AuthSource: PA4PR04MB9366.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 May 2026 16:31:29.2033 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 0Xs9yPCnlctpqw9yhvQ3u2JJVl/UEI7ZirltcrcB3gbaVarBf/yqk2u9U6QdsCl1tnwQZY7tyOmf76v++mbRsw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR04MB7562 On Tue, May 12, 2026 at 03:17:31PM +0300, Adrian Hunter wrote: > The existing i3c_master_enec_locked() wrapper always treats a NACKed > ENEC CCC as a failure (M2 error). However, broadcasting ENEC to enable > Hot-Join is legitimately useful even when no I3C devices are currently > present on the bus, in which case the broadcast will be NACKed and > should not be reported as an error. > > The underlying helper i3c_master_enec_disec_locked() already accepts a > suppress_m2 flag that lets callers ignore such NACKs. Expose it so that > a subsequent patch enabling Hot-Join events can issue ENEC with M2 > suppression. > > Signed-off-by: Adrian Hunter > --- Reviewed-by: Frank Li > drivers/i3c/master.c | 27 ++++++++++++++++++++++++--- > include/linux/i3c/master.h | 2 ++ > 2 files changed, 26 insertions(+), 3 deletions(-) > > diff --git a/drivers/i3c/master.c b/drivers/i3c/master.c > index 1eb157c8091d..db46cc12c7db 100644 > --- a/drivers/i3c/master.c > +++ b/drivers/i3c/master.c > @@ -1121,9 +1121,29 @@ int i3c_master_entdaa_locked(struct i3c_master_controller *master) > } > EXPORT_SYMBOL_GPL(i3c_master_entdaa_locked); > > -static int i3c_master_enec_disec_locked(struct i3c_master_controller *master, > - u8 addr, bool enable, u8 evts, > - bool suppress_m2) > +/** > + * i3c_master_enec_disec_locked() - send an ENEC or DISEC CCC command > + * @master: master used to send frames on the bus > + * @addr: a valid I3C slave address or %I3C_BROADCAST_ADDR > + * @enable: true to send ENEC, false to send DISEC > + * @evts: events to enable or disable > + * @suppress_m2: if true, treat an M2 (NACK) error from the CCC as success > + * > + * Send an ENEC or DISEC CCC command to enable or disable some or all events > + * coming from a specific slave, or all devices if @addr is > + * %I3C_BROADCAST_ADDR. > + * > + * When @suppress_m2 is true, a NACK of the broadcast (which can happen when > + * no devices are present on the bus) is not reported as an error. This is > + * useful for callers that want to configure event reporting unconditionally, > + * regardless of whether any devices are currently on the bus. > + * > + * This function must be called with the bus lock held in write mode. > + * > + * Return: 0 in case of success, or a negative error code otherwise. > + */ > +int i3c_master_enec_disec_locked(struct i3c_master_controller *master, u8 addr, > + bool enable, u8 evts, bool suppress_m2) > { > struct i3c_ccc_events *events; > struct i3c_ccc_cmd_dest dest; > @@ -1148,6 +1168,7 @@ static int i3c_master_enec_disec_locked(struct i3c_master_controller *master, > > return ret; > } > +EXPORT_SYMBOL_GPL(i3c_master_enec_disec_locked); > > /** > * i3c_master_disec_locked() - send a DISEC CCC command > diff --git a/include/linux/i3c/master.h b/include/linux/i3c/master.h > index 8cdd7be505d3..e2c831fb5354 100644 > --- a/include/linux/i3c/master.h > +++ b/include/linux/i3c/master.h > @@ -607,6 +607,8 @@ int i3c_master_disec_locked(struct i3c_master_controller *master, u8 addr, > u8 evts); > int i3c_master_enec_locked(struct i3c_master_controller *master, u8 addr, > u8 evts); > +int i3c_master_enec_disec_locked(struct i3c_master_controller *master, u8 addr, > + bool enable, u8 evts, bool suppress_m2); > int i3c_master_entdaa_locked(struct i3c_master_controller *master); > int i3c_master_defslvs_locked(struct i3c_master_controller *master); > > -- > 2.51.0 >