From nobody Sat Feb 7 09:35:12 2026 Received: from TYVP286CU001.outbound.protection.outlook.com (mail-japaneastazon11011034.outbound.protection.outlook.com [52.101.125.34]) (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 9DAAD316197; Mon, 5 Jan 2026 10:50:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.125.34 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767610238; cv=fail; b=UBS2Ml0Y4WEH2K6xe1X3r9cgw+TPRJjjrhIOuW603Em3vZPkYPFEiYVUGUmlCZplNsDQiksVDTo5yN/Gr2+blR4AaEp5TsgfiiD9R4+kT9VzqHxE/808MwE2c6yvDgzBo4Zi8qvJZTBAqBrIDRGrILZSBtMxllr2i/anyB4sEW8= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767610238; c=relaxed/simple; bh=XeHcaocZUUqCKe3fR+AYUMulmMKjiQKd7VjzKMlOhxI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=OlXQaE6LdoYtRjodTRKF2YMgS7RpdZVF84IYLWWoaYvN1P2cDC4Cu0G+yVq5VQkv1dt/wTQMJD8mmZ9zz+IoQZOOlTZX+JOGv41wD6BEQQRzy4AbHJwDS+skLe3/Zc+VPe/ktFUYwbciRGvKpWh1pnndZmHL/VOpVMonysoU8l8= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=bp.renesas.com; spf=pass smtp.mailfrom=bp.renesas.com; dkim=pass (1024-bit key) header.d=bp.renesas.com header.i=@bp.renesas.com header.b=aZCzTWY8; arc=fail smtp.client-ip=52.101.125.34 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=bp.renesas.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=bp.renesas.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=bp.renesas.com header.i=@bp.renesas.com header.b="aZCzTWY8" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Svd7XNrPJ1hnqFP3DFJQcbSeDTQ8BiLNX7LFTq9Zckab4kNI6iXb/4TpRSFswIRhUP7oflHVYqoOQ2sgI8raOQpCoI/LlDgKXNHL4kXX80msZY27BhSqSGsuOHpulJmwehUocfmAFrUeuFCmso67XkNjppJDuOsNDkTfIxVlANt0i/Y5eplePMSvsa1Nf/Mbon5npwoTQLqgBCYmt2cvB00IYv8YieWSTyDyF7cszTgZBDDMHPJGQJUYBHp5J/aJxolXYFwDPvT0xP5PD3mgSciZvvNZcRvF4bQj/DCAf/k+87s2gmSsH59ufp08scmeu3YQh3dK6jEHb10dHCLFgQ== 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=LiSBgxhd7cBTNYRvaBCLWopvCMR6+r83nUedgB1T97s=; b=CtCRbpbZv5+jBO3yC4cvBYTV1j39c/pbotzi8bpCl5gnvtCpI9qJoVGPN9CBmcG4wlC0RaQHHp6JMXTJYwNS4K6LGjGkpJfrulMI72KKjeUqMOaWtAAhdrsY1lSfqCsrVVJLqsswL60JLcU3PxkP37kLVci7bJJlqDAN+OhCaFEKa/hrafKN5fhOxcvwRaK2PNXtO71cDl0DfdsVBTa1hRVprK+xmxIhXBWT8TWsRA47aHqUhWLGffU45ovxHl7NuBdZ4E2rtdQ3fEgwbRy6DBbjk/DNxehH/VtikQIr0N0B7DKcuW1jRwTy+AAGHD17oeL72IWdsetrh23pMSxFKA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=bp.renesas.com; dmarc=pass action=none header.from=bp.renesas.com; dkim=pass header.d=bp.renesas.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bp.renesas.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=LiSBgxhd7cBTNYRvaBCLWopvCMR6+r83nUedgB1T97s=; b=aZCzTWY8O7iXgeZNstlRiSB8oizNwant4orrD0yhA+L+0gkL09ZqvSK28fIaHlc+V17B3TZZW2cblO7+HuyDKCA7xQ763hJCGt8bI6UGbmNMyKQ2mumaz3pkaaU2wnYVCeajSdRUHEoWExljM+8Y8+G6j9QsfU0RXzfxJ8q3mWU= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=bp.renesas.com; Received: from TYCPR01MB11947.jpnprd01.prod.outlook.com (2603:1096:400:3e1::6) by TY4PR01MB15540.jpnprd01.prod.outlook.com (2603:1096:405:274::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9499.1; Mon, 5 Jan 2026 10:50:31 +0000 Received: from TYCPR01MB11947.jpnprd01.prod.outlook.com ([fe80::33f1:f7cd:46be:e4d8]) by TYCPR01MB11947.jpnprd01.prod.outlook.com ([fe80::33f1:f7cd:46be:e4d8%5]) with mapi id 15.20.9499.001; Mon, 5 Jan 2026 10:50:31 +0000 From: Tommaso Merciai To: tomm.merciai@gmail.com Cc: linux-renesas-soc@vger.kernel.org, biju.das.jz@bp.renesas.com, Tommaso Merciai , Wolfram Sang , Alexandre Belloni , Frank Li , Philipp Zabel , Geert Uytterhoeven , Magnus Damm , linux-i3c@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH v4 1/4] i3c: renesas: Switch to clk_bulk API and store clocks in private data Date: Mon, 5 Jan 2026 11:49:59 +0100 Message-ID: <94d378e99ded450ba118813b35239f9a10a73daa.1767608450.git.tommaso.merciai.xr@bp.renesas.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: FR4P281CA0001.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:c8::15) To TYCPR01MB11947.jpnprd01.prod.outlook.com (2603:1096:400:3e1::6) 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: TYCPR01MB11947:EE_|TY4PR01MB15540:EE_ X-MS-Office365-Filtering-Correlation-Id: 03827964-eac3-4595-d306-08de4c483ebb X-LD-Processed: 53d82571-da19-47e4-9cb4-625a166a4a2a,ExtAddr X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|52116014|376014|1800799024|366016|38350700014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?smKhYw43CRFpjmI4mPunORcz2sbqpw9xqqkgHiSFFq5A5uWBimvmXBNG+De7?= =?us-ascii?Q?5kf/nRQdZkSkOEjimF+DqNobO9Cpv+q6vEm9Owy7lWaoucPE9AJll5KG4uP3?= =?us-ascii?Q?wN0MouqSW1QqfOjhInU8U0Yxq8WRKk191P/AN+/DxMsWRiUOkqOnX9W6WCA/?= =?us-ascii?Q?UMaRsSXpB9+kcxf15ZJuT4cLiXUx93QEs43WIFkpXpdtl5J+Un8HsiTDCoJr?= =?us-ascii?Q?dTm+mie+GSlm7wuk5JOKEi6jZnjZGdsZDSP21OyThTU5XoZbyNQObFNmo+9n?= =?us-ascii?Q?gsCnclEoyU/wMrtkhydauGHVrwvYE1mzXWAXqRuCzNWlji0zLyZQu3sLAZMj?= =?us-ascii?Q?Cu46BgwuAMLHKT/ZOuyW+MaXlyjEiry/1wG41nEzOKMF3UAotODNcrgCeKbq?= =?us-ascii?Q?ipnjh44IYDbE82czqsjr89C3ASn/TX1n837Bl8RW90zHL2n8GpOPW+xFMNf6?= =?us-ascii?Q?cwaPlqq+UWoSWAjcqcDg7llyN7bRvFABtVNC+suXX+8JE3f2hVv0u2qDPWNP?= =?us-ascii?Q?i+01aRYAsRysgieCWe0wGimbZlrSozvFw3O6YOoomjqHfDB3aqvtnDthONtF?= =?us-ascii?Q?luNnQA2o1KmdlTJ9dsEp9NYNuoCPAMMJ5LtiNW9RiL51iq+lRnySnxlOd45j?= =?us-ascii?Q?hIY3m6A54qvTHCxtYuZXPPjLaLvc5ZZ3s9Me2JdQk0F+CFKK5PErVUBqdjY2?= =?us-ascii?Q?fL24dzj4Y8xVQdaYU73vFu2sSpGSNJxOaw70/tSiRetNEhXQbEYJosXSKCJz?= =?us-ascii?Q?64BssaV1wo+7JjG9ahnluwmi7KINTxzB28hAYwxHPfYbwyMdsg1p996Ctn8d?= =?us-ascii?Q?+2mjXrcWL7yKCV77GLtXfOvo3qqPetpVoToPWhx43I+AR+mxycAzcxpxvjru?= =?us-ascii?Q?UamqvdgHpD/CLEH9u6/bwnXfaFYsM5WucuqHQsTCfO47Qo+s/aWaWWyb3142?= =?us-ascii?Q?zdL1EfcrKEmnrD9KGpFCMgRfdS2m68YTk9CKoPTFMMbPgflJhTVjILx2t7ao?= =?us-ascii?Q?8G7k8APZOtAoFjAfvoPnFDAfrbHjIFR2frnPi2tjc1lOBEpeCAYPRkTH+vvi?= =?us-ascii?Q?9xuZg6Y1YqQcHOCoGotwaF5AByICqY6eGPsNSmKTjW4M5iCulMHiFLEaZbON?= =?us-ascii?Q?W0oE1lukhsYzcQjeVCcLrRuraDgCFlJqDbd8MR5OQuXXJ1CeeK0sE2mu9jSw?= =?us-ascii?Q?ZRIMwo+yjORDqQrcxrelFU9+HL6/AKvwHIDJk0xAgetPSlBmQLZfZxT9KNFn?= =?us-ascii?Q?TAJEIzx6N35GRkOfUjiLocqMv/thqdfqK4b0rBEgupSYUCsTCyg45cf9tMYs?= =?us-ascii?Q?5Ei5eGSQkh56O+yVFOlNbzrdCECDwLU9Pr4mA55HuXASZzjUBFMZCZRT9yiF?= =?us-ascii?Q?dljRUG+Ij1cpLs2kcmTbPHINKuwmAGAb14iLl4b7+f55SchTRCaVvQp1Y9M9?= =?us-ascii?Q?QUtmBCpfnjoWZj695f2egmpLpqF1pStJgRbYfnsTziRDFGwLLAVKdEgmVP+x?= =?us-ascii?Q?z/I+Izg2ytay6UHyP6Ba6um52U6kC7/ds5vD?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TYCPR01MB11947.jpnprd01.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(52116014)(376014)(1800799024)(366016)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?KJyycTzfhO7z0XrHwHHPI4MeLQOBegkL6rKFBlXB6fz0lDs4rMgIxeMi1V0+?= =?us-ascii?Q?nZzfgBUWI6JjYxSMhwJm2Bv4XxrvrW9AFwezOB7Z9L2Ynz+Gi43tSDqxhBrQ?= =?us-ascii?Q?YHMvOtPei6TG9Wp5V3OL12sXxpSHPT8ISSipW568HrrdnPEezCGDuGQHLVX1?= =?us-ascii?Q?gvZI+FiOZANsXd8RK019owxoPvHq4n8pGbkLLlrPRht7Njt3+dHdGis+ddw/?= =?us-ascii?Q?F3B4c1IxtYKf+IjiaWIjKPbTYm1h768p2WLfL9F2tFI3WbF80GhO2GJTdHWG?= =?us-ascii?Q?iYpCPea3ko+bdzFBSgquL38+S2s+YC2s3ryIYlrWVlKGokM8ymUIQlrTvNCb?= =?us-ascii?Q?FgqmcrqqjntKH+TDhDqUgzc/Bo5fml7X5n04jOXzC3mvmWVlOnESoJi7hSkY?= =?us-ascii?Q?p9WidWDlaBWxrkeJ2N3HZ22J50iU1v9gQ2TKcC92VRb0PTXB6B/ujSbPAqgU?= =?us-ascii?Q?5a2+2aAcDhOvIhlv88bMxPBO4ssa50wImiLu9S2OZ0BFV60VKBU/ic1Jt8Zq?= =?us-ascii?Q?58IZaBNLlI7SIW7pO3WBE5+yR/gi+XgLQndy5gq9R6iiMvjyMUJWLsATKPZi?= =?us-ascii?Q?vf7NpnEseOMJeAlZax587ppbBPISU/sSTyGnzTDQooSHYJzCW+7WaOp+/XZk?= =?us-ascii?Q?hOtbPfC1siSIe1d1/enG7VpFLHUHI8LUq5hCiyD9WskgsdeyqH7fdFA/RkUm?= =?us-ascii?Q?l2k5WUCiX3kPZ2TK0lRBGRPlGtt9L5uJnxPqti5sJH9Jfgkie5qJj2wvg6if?= =?us-ascii?Q?GFFzdZDtg7i1rmTusTd1Omod2b4dBy7shE88VvqcAoHp8lsloHFKDddcC+KM?= =?us-ascii?Q?dIlLvdtSYVsY46CqXaEI6qRGLsAy9QLCNfWuBgVCHYrObRV/IXc8XzVl96XG?= =?us-ascii?Q?/aRIDJ2ibyEz6jsNRp8tDgbTWhcD94LVX/Ae3vyZFqk+MKkxeE1nihH0+a+k?= =?us-ascii?Q?pT0vV3/qdeM0kLB8EZ1n8BzLmK1XXc8gybLVnik54o3EOQ/tb+C740Fri7bE?= =?us-ascii?Q?EtHVp7Br6tHPrNvt4bK4rPNOJnla+2CMyevC2G72q5QEiVavfOE/RUWpmp2e?= =?us-ascii?Q?HqwLhDzw4jYJdVniWUqltLCpsH1IwBZ7sm9Scy4MciGteeIRTRMFGDPpLC/T?= =?us-ascii?Q?ckrmQqoyczJpcL0UGAE16uUqlpnlU8O8/q7HpdbrnaRMHSO0WJrrBHUxNRMB?= =?us-ascii?Q?0XMS6qgqTKvBFZjLSe1I902GwObFQUz9dvVCjL8hCCwTsHwl8AOVcFuwLJXN?= =?us-ascii?Q?VznO5/Gm/HiH7dQez5XLpQyrwQQpCEzwR16JlZgyg+c610mlrkl8CSzVtwRo?= =?us-ascii?Q?iIwxwAzSkohG/lVKrhlJ19ruUfwj6S5fUcBi4Xt5BbV1KrzUuBg4seuuGDdr?= =?us-ascii?Q?iGgYCsJUmeQO1faVGt8BMu2ovB8w8AX8AlSlxKzV2hsYeEQ9ZT9HMb1r7brn?= =?us-ascii?Q?sLfr7+lzc/G4l0IfcmIzCG5jQ/CIgXA1UQ9XvaooQwIE/NjhclDD9Cv4FXbH?= =?us-ascii?Q?EUHH4R53BK4kKSjdkD9PPMlw2G3xFD0PyhHqtvg3Gi87T+mbN6UBU1QZG3j/?= =?us-ascii?Q?Z6Hc3iCGesqOIzUTo9GbWqEIlvLNruiZ2bHCfx66dgo6i6Cx4MXirYX62HHj?= =?us-ascii?Q?OYBDOoTdkwDyXmo7t49CoqVoHbKNUKbIgS/yeVNXPPZsZ+212akJ3QqjY6lw?= =?us-ascii?Q?NhnxCl/z1dd/vrL+W3muz9y+y/CR1Lv8u+DdLoWLRsgETWG9oD0PK65I1pgb?= =?us-ascii?Q?WUFLdhw0fO7ZaVKyL2Dj2I9mgp5md9Le4ZzJAbYcpKvkgjlMua3O?= X-OriginatorOrg: bp.renesas.com X-MS-Exchange-CrossTenant-Network-Message-Id: 03827964-eac3-4595-d306-08de4c483ebb X-MS-Exchange-CrossTenant-AuthSource: TYCPR01MB11947.jpnprd01.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jan 2026 10:50:31.0314 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 53d82571-da19-47e4-9cb4-625a166a4a2a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: e44gggU4WgiygsBQDRWrSyRKt7mtwYTV27qwyAb82jtfBFIn7sHUK1NczmDvT7OJEMgYCcKX8GVQ+ai6ESIletYtk57MvhvNXHycy+t+im5Sc5EjAJpEIOiVMeamtKgG X-MS-Exchange-Transport-CrossTenantHeadersStamped: TY4PR01MB15540 Content-Type: text/plain; charset="utf-8" Replace individual devm_clk_get_enabled() calls with the clk_bulk API and store the clock handles in the driver's private data structure. All clocks required by the controller are now acquired and enabled using devm_clk_bulk_get_all_enabled(), removing the need for per-SoC clock handling and the renesas_i3c_config data. The TCLK is accessed via a fixed index in the bulk clock array. Simplify the code and prepare the driver for upcoming suspend/resume support. No functional change intended. Reviewed-by: Biju Das Signed-off-by: Tommaso Merciai --- v3->v4: - Collected Biju Das tag. v2->v3: - Added define for TCLK index. - Use devm_clk_bulk_get_all_enabled() into renesas_i3c_probe(). - Improved commit body. - Dropped unnecessary static const char * const renesas_i3c_clks[]. - Removed the need for per-SoC clock handling and the renesas_i3c_config d= ata. v1->v2: - New patch. drivers/i3c/master/renesas-i3c.c | 43 ++++++++------------------------ 1 file changed, 11 insertions(+), 32 deletions(-) diff --git a/drivers/i3c/master/renesas-i3c.c b/drivers/i3c/master/renesas-= i3c.c index 426a418f29b6..1b8f4be9ad67 100644 --- a/drivers/i3c/master/renesas-i3c.c +++ b/drivers/i3c/master/renesas-i3c.c @@ -198,6 +198,8 @@ #define RENESAS_I3C_MAX_DEVS 8 #define I2C_INIT_MSG -1 =20 +#define RENESAS_I3C_TCLK_IDX 1 + enum i3c_internal_state { I3C_INTERNAL_STATE_DISABLED, I3C_INTERNAL_STATE_CONTROLLER_IDLE, @@ -259,7 +261,8 @@ struct renesas_i3c { u8 addrs[RENESAS_I3C_MAX_DEVS]; struct renesas_i3c_xferqueue xferqueue; void __iomem *regs; - struct clk *tclk; + struct clk_bulk_data *clks; + u8 num_clks; }; =20 struct renesas_i3c_i2c_dev_data { @@ -272,10 +275,6 @@ struct renesas_i3c_irq_desc { const char *desc; }; =20 -struct renesas_i3c_config { - unsigned int has_pclkrw:1; -}; - static inline void renesas_i3c_reg_update(void __iomem *reg, u32 mask, u32= val) { u32 data =3D readl(reg); @@ -489,7 +488,7 @@ static int renesas_i3c_bus_init(struct i3c_master_contr= oller *m) int od_high_ticks, od_low_ticks, i2c_total_ticks; int ret; =20 - rate =3D clk_get_rate(i3c->tclk); + rate =3D clk_get_rate(i3c->clks[RENESAS_I3C_TCLK_IDX].clk); if (!rate) return -EINVAL; =20 @@ -1302,13 +1301,8 @@ static int renesas_i3c_probe(struct platform_device = *pdev) { struct renesas_i3c *i3c; struct reset_control *reset; - struct clk *clk; - const struct renesas_i3c_config *config =3D of_device_get_match_data(&pde= v->dev); int ret, i; =20 - if (!config) - return -ENODATA; - i3c =3D devm_kzalloc(&pdev->dev, sizeof(*i3c), GFP_KERNEL); if (!i3c) return -ENOMEM; @@ -1317,19 +1311,11 @@ static int renesas_i3c_probe(struct platform_device= *pdev) if (IS_ERR(i3c->regs)) return PTR_ERR(i3c->regs); =20 - clk =3D devm_clk_get_enabled(&pdev->dev, "pclk"); - if (IS_ERR(clk)) - return PTR_ERR(clk); - - if (config->has_pclkrw) { - clk =3D devm_clk_get_enabled(&pdev->dev, "pclkrw"); - if (IS_ERR(clk)) - return PTR_ERR(clk); - } + ret =3D devm_clk_bulk_get_all_enabled(&pdev->dev, &i3c->clks); + if (ret < 0) + return ret; =20 - i3c->tclk =3D devm_clk_get_enabled(&pdev->dev, "tclk"); - if (IS_ERR(i3c->tclk)) - return PTR_ERR(i3c->tclk); + i3c->num_clks =3D ret; =20 reset =3D devm_reset_control_get_optional_exclusive_deasserted(&pdev->dev= , "tresetn"); if (IS_ERR(reset)) @@ -1374,16 +1360,9 @@ static void renesas_i3c_remove(struct platform_devic= e *pdev) i3c_master_unregister(&i3c->base); } =20 -static const struct renesas_i3c_config empty_i3c_config =3D { -}; - -static const struct renesas_i3c_config r9a09g047_i3c_config =3D { - .has_pclkrw =3D 1, -}; - static const struct of_device_id renesas_i3c_of_ids[] =3D { - { .compatible =3D "renesas,r9a08g045-i3c", .data =3D &empty_i3c_config }, - { .compatible =3D "renesas,r9a09g047-i3c", .data =3D &r9a09g047_i3c_confi= g }, + { .compatible =3D "renesas,r9a08g045-i3c" }, + { .compatible =3D "renesas,r9a09g047-i3c" }, { /* sentinel */ }, }; MODULE_DEVICE_TABLE(of, renesas_i3c_of_ids); --=20 2.43.0 From nobody Sat Feb 7 09:35:12 2026 Received: from TYVP286CU001.outbound.protection.outlook.com (mail-japaneastazon11011034.outbound.protection.outlook.com [52.101.125.34]) (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 637DA3161A8; Mon, 5 Jan 2026 10:50:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.125.34 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767610240; cv=fail; b=BTtVx9sVekfnGRyJk3tnWRajPSh/7rSqN/Jq/U8trZrmoypVVdFAxf8ycQFOVKxhwE0dSmQS3V19rUYj2t7jIDWLLOkVFJ4Luy/fo9fgnC00iRbVzj4c082radwg6qlXftMRPfLttQ9u05FHbjL3OcOnwbzKJfJNt7PAN4MUSe8= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767610240; c=relaxed/simple; bh=lQMx2DUbH2QInQ5u7Nff1Oe2yVqcE+Tr2jFKg65XBc0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=S83TVRlKm9mAoLBNSuR9Rjo362qqPwUGx9Bj6/W3ocFyqQAU4JWMniLf8WwMTVAH/f9hjEh3nBwBBwxfKKgaNGleqUhMqjvypF0N0QCQaRpE51gXhScZaLzjaszvgwKlmWFNp+C9/cxCgjUqUJWE+sntxzOxunVeWB5zIYw/FkA= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=bp.renesas.com; spf=pass smtp.mailfrom=bp.renesas.com; dkim=pass (1024-bit key) header.d=bp.renesas.com header.i=@bp.renesas.com header.b=QnWiWrxp; arc=fail smtp.client-ip=52.101.125.34 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=bp.renesas.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=bp.renesas.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=bp.renesas.com header.i=@bp.renesas.com header.b="QnWiWrxp" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=V4VxxCHLWfiAFMF1y0f2Y/VCFpu4VGSKEcsq72C1EhiXVwVOl4s8YTYzo8OkvX9H/skIHMW9oOx04mxZkRRdnZoErSvKgGh0qlJXLNF4HrP3EVR66A94g0HeiLEm86QMxgzFq63J6b65udo4U0PMCnCa3qySyreQ9TDvgP8JPBb6x/gfH8WFsojKA50k6EO8ByB1bNnZjOTo1ZaS3UBZwnM6+OHne5vOXU7ERU6pns61Od/J9V2+YWEASthysW7D8RqYl3txH9tyAUlsHFZg+18WgOnQBcOQmbMoLS7QVyX7Xm0nhkZO5KWSlQqDngOLvY8nZ8KW6cht1OrpI/wf6g== 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=Z7+Ed/oIScMJuYJukV04InAm6c7+Ocv3Mx3sc01P3E8=; b=kw4RfPZosiuO9pCJnrLYUkBjvBSDzNAxMaNTpfLabkZkg5MHWSpWJ/wx7aWxSswcNLeRZr05mAyg9lIwcvyU0wo5vd613bbyybT3qY+ApWwPvQhtYFvmxZSA1yZ9g1I3yDrDMNBznPVctlsbk3NO71IyQ1URyKa2Xa8x2Auok/KTrZvxMpVQ5sT6LVeUW7zuINjDsW/HXhceD0KyeetZRDY6uXCKffRNnlw29OSkh/ybvPvSWiNoJeC9Z55HMVd9d5ZNQHFbxjdvrFqWTEOTtiENqnITdYAIXGQWmwmALgU2gNv6GlTmey3UVtfqHVz2/Of9RMJbP+ESNePSd52Mkw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=bp.renesas.com; dmarc=pass action=none header.from=bp.renesas.com; dkim=pass header.d=bp.renesas.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bp.renesas.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Z7+Ed/oIScMJuYJukV04InAm6c7+Ocv3Mx3sc01P3E8=; b=QnWiWrxp+46n2QEqOEG5seqL5vzGcXBSrp62/ncG6H9FHPxkVHVmNlcxoibMrR/M6I3Nh/0wvRt0WFFOJhhyleTFCxogJogDO0c01kfYmpIbaHnVK3fik1pN0w08ysWqI/z7rjO09eBA59YRWE0f6e4zapkSSeWY/9kDWOirRPY= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=bp.renesas.com; Received: from TYCPR01MB11947.jpnprd01.prod.outlook.com (2603:1096:400:3e1::6) by TY4PR01MB15540.jpnprd01.prod.outlook.com (2603:1096:405:274::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9499.1; Mon, 5 Jan 2026 10:50:35 +0000 Received: from TYCPR01MB11947.jpnprd01.prod.outlook.com ([fe80::33f1:f7cd:46be:e4d8]) by TYCPR01MB11947.jpnprd01.prod.outlook.com ([fe80::33f1:f7cd:46be:e4d8%5]) with mapi id 15.20.9499.001; Mon, 5 Jan 2026 10:50:35 +0000 From: Tommaso Merciai To: tomm.merciai@gmail.com Cc: linux-renesas-soc@vger.kernel.org, biju.das.jz@bp.renesas.com, Tommaso Merciai , Wolfram Sang , Alexandre Belloni , Frank Li , Philipp Zabel , Geert Uytterhoeven , Magnus Damm , linux-i3c@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH v4 2/4] i3c: renesas: Store clock rate and reset controls in struct renesas_i3c Date: Mon, 5 Jan 2026 11:50:00 +0100 Message-ID: <9c36f4107b257409a513fd6095fac3635411ef7d.1767608450.git.tommaso.merciai.xr@bp.renesas.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: FR4P281CA0001.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:c8::15) To TYCPR01MB11947.jpnprd01.prod.outlook.com (2603:1096:400:3e1::6) 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: TYCPR01MB11947:EE_|TY4PR01MB15540:EE_ X-MS-Office365-Filtering-Correlation-Id: aa1f7b0c-57cf-4361-d877-08de4c4841ab X-LD-Processed: 53d82571-da19-47e4-9cb4-625a166a4a2a,ExtAddr X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|52116014|376014|1800799024|366016|38350700014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?sdMObFxmSsw13PM1mnd8sHvcXN8szxN2LKGr2WEEF+mf6XibbfBCYfolR5B4?= =?us-ascii?Q?bjpYReT1CnRDoJutu1xFhcm49b+soTJCuEVOplk/N2PfCCsvyHoHGeYyqjD1?= =?us-ascii?Q?jz7t6Uwhn3tvJFUUnMULsvwi9VwZgwIU9qgyPei9Nn0fE2zBCvuHaAGetd7n?= =?us-ascii?Q?l/BaG1dFhU/hMyMlyjnsWGAHUTwEpW3D32kRORZbTlcVFB/V8NtM+gfidENX?= =?us-ascii?Q?6dwQVC371k1ruMmoSXsUi+da6rfqDkmUW2dwdOmWRtTbB/K58J0Puf53q5Q2?= =?us-ascii?Q?Yz/whzsR/mYAeDThyQ/GDxejQGtd8tUkBbgYwnxyj3paUOtCBjAZ9VdAkfz8?= =?us-ascii?Q?HXMHmVeRnF/L7TkrDLPQlEDeBk6O+6eaVxLOnIxxPE/p9QZWAARP0jz4a+mO?= =?us-ascii?Q?+hgRfDpy9SFCFit/fpqM1ntXoCP3JxVMHkrGK2siBbv78hC1YNn48CzL8rKU?= =?us-ascii?Q?ZnRajaU/844rMxjzHkvoH2mr+nyqGbMfUdSUjuX+y/qI0L4heU+F1tGxMIfM?= =?us-ascii?Q?n1mFyBwzqLaQKwXPVf4MPuRnxLq7V76uUulBw3EGXKYiTXM+XANuZsk0uP5v?= =?us-ascii?Q?GDssgfo48dszufjkF7rnT/iX5WdNmlkRKJMV22p8WLQJSH3K1FR0empN6kZx?= =?us-ascii?Q?F1OXSnXyIUd9qparxDCBwaZcROjYggVeD1fXbsadkoSLBLnEPdGE4wGLdEOv?= =?us-ascii?Q?qMwcdGBSR8OwR/BLBZukatF+hF4xJSp2naudj8RxAxhyY6uC4BXL2AKy+mhG?= =?us-ascii?Q?6FQgfEMKLwfSbwUlFgcFrYhVMCAVbcYn4moqSlGGGmCc65TiNg5/vWt1CiFD?= =?us-ascii?Q?+SoxNeWaliH2gK2A8+MBPn8DJPYnLIAP1CGkUzGgRNMDfghSnlCf07Dma9Mr?= =?us-ascii?Q?URKZztMbIV8R7ZrgeFq3X2tggGDC51Zk7STxT6+fw4KHOcPAAkVMIK9c10uL?= =?us-ascii?Q?Sye0nM0K74KH/hUDzbiXWB32xWb84w8e8a/x7nIqdum2Lm1FYDIV+/n9SjlF?= =?us-ascii?Q?yFMtpyff6RYppZzAYhWH07eL0EgBkBLAq9b1bZLv6xlA6ZlSFz/kdOzkmePt?= =?us-ascii?Q?ZPwHqhJH84U6qeCuJjyagrwshlhacNVkio/p+C89NNVgLIHIa4FNEtPxU0V4?= =?us-ascii?Q?zuqRhr0iLOqA8aNQwgeGmOfBZzkY9k5lbbfDfkCjnyMDb2L5oURAUYwhNCro?= =?us-ascii?Q?y4YoirWzUjmLLlT+9U8EBxe0qVPu4+giKMRkPsuCJ42Ho9BDRnZMHTYwpbeh?= =?us-ascii?Q?V8tNxjCUd0x1bX6Zc3gUCQumDm3q9b7gpHGS3Oq9er3c5rr3ryDpNmJpYUCG?= =?us-ascii?Q?TszvGk1yQJv+wapVUqPebK2VgHCizmkPk9C4ThFRudu/E39/w3QkxtIiWrHT?= =?us-ascii?Q?tWBFEwT5+hpsHEWNsF7Is6AWyq/xtWGuvNxEpYct+GNhomQTLEsxApnKGDtl?= =?us-ascii?Q?2crrFJad/ioUMaqxrhYhB7cUjp7Gb3N3DnWpvaSKNNkmvUbBaIJl7j1X1xgh?= =?us-ascii?Q?VLIbszMAw/sHLCmb+FGun9cuN81LVwg/ZeL8?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TYCPR01MB11947.jpnprd01.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(52116014)(376014)(1800799024)(366016)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?SnJrPMLMJ1+Q82anWV5qz07ug5nTntzYVoCdoIJ4O/QJ/i2gRa9KLIsydl8Y?= =?us-ascii?Q?q8O8I4rjYrItS9RyOc5LuMGrBfgUJgY3zojhxUj12PmDw4mnGtyD16wTTkXk?= =?us-ascii?Q?a0X3ObQJKAU8PQz9I9nnEwuVRuzMtX7pF3Uco8Eq+CVXdF9yWnkDzj9l+YjX?= =?us-ascii?Q?953Pl9uimmWJdmVHj7gIQzRCUiDtU4yA+3fhbhQmUvj/iZHERiMJEBBjaW0b?= =?us-ascii?Q?qwkYgbufcvMIZHxUn8mxF1aantCTF4m6M+31xrhBIPkSuney06onrP77mj4f?= =?us-ascii?Q?KtwHZpDhw/ELwRZ2paWDSX3kIsOeMHmlVF169dwA14zRwQmKFLkHAb0vT8mj?= =?us-ascii?Q?37SxfKHgW8uKx4JIFIuMLeM2XaEXO3rK38ofvWNzw7+pe0JhexbGrpOPHfr6?= =?us-ascii?Q?EM47+z+nH3A1GoxK5cpcuiLaQUmcIyl0lrUNzzkcNv1DYhYqn+rNJ/KB+FVt?= =?us-ascii?Q?6H9Xd88x1IhoAJKYYK6QjDaglPWqTgpCznrZDvIqw3f2/Zfb0sSHVKyhKlkR?= =?us-ascii?Q?+Fz2c8p85pElyXSH2A6HjJaxD+zVKCcthknyQcf7gpx7lWfU8/ZOvTbWacMV?= =?us-ascii?Q?q3SaWUHO2weZAamz0VkWK1f5QcuOZM5AEu6DmivaBwEY3Gm9YyZp7Pk8M1GP?= =?us-ascii?Q?YH2UdHOX9M567jWNgrwLKw6gjrXtMjkTgVQMe48vP5pyrBGIlLzDoVCybAuK?= =?us-ascii?Q?UfzG18o9T2S+r+CDuhxX4IdIdMSujaFUAgs5J3S013BPZXgD/66cmYO+zCIU?= =?us-ascii?Q?5qb8AKY+SrXSuG03zRbZ+pMdLH1X/3xhRVlixZ1/owXV9VaQm0b9coFqQIod?= =?us-ascii?Q?5ucYV6u24eMu0CNWpJbp8fVNL6qWNdq7+l4BmtK2qq28+3pVbUgjA9/EI9fW?= =?us-ascii?Q?+xKpYHoq95QKFEIfwQHn0JszBQYzfAGoUHk/CFCS5L8ZvHy/NHe/6Q63sJkg?= =?us-ascii?Q?G1AGSBUls4XTl5AowxJHKJaup5OH+15mk4GQTmUYXvF/kXDwfa8HriOikRJf?= =?us-ascii?Q?V+lOqXls00c4RughOKHbvtPR/93vbYbv3QssAF3+qlSaE3TcXDOqMHg/QKgf?= =?us-ascii?Q?NqDHUKr3AH/UNTl/vwOvD7ltklaKF52pjNCrEWsyLkiMGdRxVEvFoqSBUBqL?= =?us-ascii?Q?tVIJdIsS9kIPdBlkN6Is30g4tDvWXGMGAfhHJoVjRlIYJ9G4E1NxBhQBD5s/?= =?us-ascii?Q?RwU3KB3lkEKbxE59dAlhFwVdNMK4GLSmiQ7X2qICeT6DC4KTMM2pip4Lnq7K?= =?us-ascii?Q?xJHwnJ5YbGPb93C5dFYsip0LZGYo3r2wQF6DmYcpvKbMuNTTqPptp27ZZmIC?= =?us-ascii?Q?Xq1rIhzO18bdZ2oM9DmtolckbdgzddeYrz/+J2zfaLuhMAPwysq4Atbs++tJ?= =?us-ascii?Q?gXKrli5ajXDrxcJN9wrDBU0N5XeRCTgn7dVr/V1bHAT+YCi2m/IbwuRPUw3W?= =?us-ascii?Q?KoHukmtIcrarXRZVa0tLN0rnxGcNW/09cNeAhnWONx8DJ/6Z3JJmEg44sNn/?= =?us-ascii?Q?MoqCAqiMtZ4wUhjBp/NEmTCryNeCg/RbCNw+vYETSd97JYl6bhYON7U+Sck7?= =?us-ascii?Q?ATbUGgNjB0yAF0jTQIHxC4+wnVEfapQRvGvKV4lWIpyrY7TFLnobrvIag+ym?= =?us-ascii?Q?m5fNdakJFyQAx1I493tm0KmsoMxr+9jC8WC04CLVE0RZHvHf+s2dk/vgPNgO?= =?us-ascii?Q?KH/iANH2NevZWVOb9Jg85BuK8COi1xd7bo4bdxTWQutUWGKRJ1iXds41qZhe?= =?us-ascii?Q?ZTe5LPwdGyWbQPea2YY4zG1NYHZAOoJ/qqhl/H2nlCPnsIjc64CZ?= X-OriginatorOrg: bp.renesas.com X-MS-Exchange-CrossTenant-Network-Message-Id: aa1f7b0c-57cf-4361-d877-08de4c4841ab X-MS-Exchange-CrossTenant-AuthSource: TYCPR01MB11947.jpnprd01.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jan 2026 10:50:35.7078 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 53d82571-da19-47e4-9cb4-625a166a4a2a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 8Va61oy22w4gL8j6owAgQIF3aMfjJU/1LRL781L03b3rKhWL8gDGeATimv9RLDugG7Xtvw6UMqKPZx4DNEj7UhR4ctkqwsXIueKf0yQ7MN0ong7bv+gSRu5tPO2LPY01 X-MS-Exchange-Transport-CrossTenantHeadersStamped: TY4PR01MB15540 Content-Type: text/plain; charset="utf-8" Update the struct renesas_i3c to store the clock rate, presetn and tresetn handlers. Replace local usage of the clock rate and reset controls with these structure fields. Simplify the code and prepare the driver for upcoming suspend/resume support. No functional change intended. Reviewed-by: Frank Li Signed-off-by: Tommaso Merciai --- v3->v4: - No changes. v2->v3: - Collected FLi tag. - Improved commit body. v1->v2: - New patch. drivers/i3c/master/renesas-i3c.c | 39 ++++++++++++++++---------------- 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/drivers/i3c/master/renesas-i3c.c b/drivers/i3c/master/renesas-= i3c.c index 1b8f4be9ad67..7359f71f78dd 100644 --- a/drivers/i3c/master/renesas-i3c.c +++ b/drivers/i3c/master/renesas-i3c.c @@ -258,11 +258,14 @@ struct renesas_i3c { u32 free_pos; u32 i2c_STDBR; u32 i3c_STDBR; + unsigned long rate; u8 addrs[RENESAS_I3C_MAX_DEVS]; struct renesas_i3c_xferqueue xferqueue; void __iomem *regs; struct clk_bulk_data *clks; u8 num_clks; + struct reset_control *presetn; + struct reset_control *tresetn; }; =20 struct renesas_i3c_i2c_dev_data { @@ -482,22 +485,21 @@ static int renesas_i3c_bus_init(struct i3c_master_con= troller *m) struct i3c_bus *bus =3D i3c_master_get_bus(m); struct i3c_device_info info =3D {}; struct i2c_timings t; - unsigned long rate; u32 double_SBR, val; int cks, pp_high_ticks, pp_low_ticks, i3c_total_ticks; int od_high_ticks, od_low_ticks, i2c_total_ticks; int ret; =20 - rate =3D clk_get_rate(i3c->clks[RENESAS_I3C_TCLK_IDX].clk); - if (!rate) + i3c->rate =3D clk_get_rate(i3c->clks[RENESAS_I3C_TCLK_IDX].clk); + if (!i3c->rate) return -EINVAL; =20 ret =3D renesas_i3c_reset(i3c); if (ret) return ret; =20 - i2c_total_ticks =3D DIV_ROUND_UP(rate, bus->scl_rate.i2c); - i3c_total_ticks =3D DIV_ROUND_UP(rate, bus->scl_rate.i3c); + i2c_total_ticks =3D DIV_ROUND_UP(i3c->rate, bus->scl_rate.i2c); + i3c_total_ticks =3D DIV_ROUND_UP(i3c->rate, bus->scl_rate.i3c); =20 i2c_parse_fw_timings(&m->dev, &t, true); =20 @@ -510,7 +512,7 @@ static int renesas_i3c_bus_init(struct i3c_master_contr= oller *m) pp_high_ticks =3D ((i3c_total_ticks * 5) / 10); else pp_high_ticks =3D DIV_ROUND_UP(I3C_BUS_THIGH_MIXED_MAX_NS, - NSEC_PER_SEC / rate); + NSEC_PER_SEC / i3c->rate); pp_low_ticks =3D i3c_total_ticks - pp_high_ticks; =20 if ((od_low_ticks / 2) <=3D 0xFF && pp_low_ticks < 0x3F) @@ -518,7 +520,7 @@ static int renesas_i3c_bus_init(struct i3c_master_contr= oller *m) =20 i2c_total_ticks /=3D 2; i3c_total_ticks /=3D 2; - rate /=3D 2; + i3c->rate /=3D 2; } =20 /* SCL clock period calculation in Open-drain mode */ @@ -539,8 +541,8 @@ static int renesas_i3c_bus_init(struct i3c_master_contr= oller *m) STDBR_SBRLP(pp_low_ticks) | STDBR_SBRHP(pp_high_ticks); =20 - od_low_ticks -=3D t.scl_fall_ns / (NSEC_PER_SEC / rate) + 1; - od_high_ticks -=3D t.scl_rise_ns / (NSEC_PER_SEC / rate) + 1; + od_low_ticks -=3D t.scl_fall_ns / (NSEC_PER_SEC / i3c->rate) + 1; + od_high_ticks -=3D t.scl_rise_ns / (NSEC_PER_SEC / i3c->rate) + 1; i3c->i2c_STDBR =3D (double_SBR ? STDBR_DSBRPO : 0) | STDBR_SBRLO(double_SBR, od_low_ticks) | STDBR_SBRHO(double_SBR, od_high_ticks) | @@ -591,13 +593,13 @@ static int renesas_i3c_bus_init(struct i3c_master_con= troller *m) renesas_set_bit(i3c->regs, SCSTRCTL, SCSTRCTL_ACKTWE); =20 /* Bus condition timing */ - val =3D DIV_ROUND_UP(I3C_BUS_TBUF_MIXED_FM_MIN_NS, NSEC_PER_SEC / rate); + val =3D DIV_ROUND_UP(I3C_BUS_TBUF_MIXED_FM_MIN_NS, NSEC_PER_SEC / i3c->ra= te); renesas_writel(i3c->regs, BFRECDT, BFRECDT_FRECYC(val)); =20 - val =3D DIV_ROUND_UP(I3C_BUS_TAVAL_MIN_NS, NSEC_PER_SEC / rate); + val =3D DIV_ROUND_UP(I3C_BUS_TAVAL_MIN_NS, NSEC_PER_SEC / i3c->rate); renesas_writel(i3c->regs, BAVLCDT, BAVLCDT_AVLCYC(val)); =20 - val =3D DIV_ROUND_UP(I3C_BUS_TIDLE_MIN_NS, NSEC_PER_SEC / rate); + val =3D DIV_ROUND_UP(I3C_BUS_TIDLE_MIN_NS, NSEC_PER_SEC / i3c->rate); renesas_writel(i3c->regs, BIDLCDT, BIDLCDT_IDLCYC(val)); =20 ret =3D i3c_master_get_free_addr(m, 0); @@ -1300,7 +1302,6 @@ static const struct renesas_i3c_irq_desc renesas_i3c_= irqs[] =3D { static int renesas_i3c_probe(struct platform_device *pdev) { struct renesas_i3c *i3c; - struct reset_control *reset; int ret, i; =20 i3c =3D devm_kzalloc(&pdev->dev, sizeof(*i3c), GFP_KERNEL); @@ -1317,14 +1318,14 @@ static int renesas_i3c_probe(struct platform_device= *pdev) =20 i3c->num_clks =3D ret; =20 - reset =3D devm_reset_control_get_optional_exclusive_deasserted(&pdev->dev= , "tresetn"); - if (IS_ERR(reset)) - return dev_err_probe(&pdev->dev, PTR_ERR(reset), + i3c->tresetn =3D devm_reset_control_get_optional_exclusive_deasserted(&pd= ev->dev, "tresetn"); + if (IS_ERR(i3c->tresetn)) + return dev_err_probe(&pdev->dev, PTR_ERR(i3c->tresetn), "Error: missing tresetn ctrl\n"); =20 - reset =3D devm_reset_control_get_optional_exclusive_deasserted(&pdev->dev= , "presetn"); - if (IS_ERR(reset)) - return dev_err_probe(&pdev->dev, PTR_ERR(reset), + i3c->presetn =3D devm_reset_control_get_optional_exclusive_deasserted(&pd= ev->dev, "presetn"); + if (IS_ERR(i3c->presetn)) + return dev_err_probe(&pdev->dev, PTR_ERR(i3c->presetn), "Error: missing presetn ctrl\n"); =20 spin_lock_init(&i3c->xferqueue.lock); --=20 2.43.0 From nobody Sat Feb 7 09:35:12 2026 Received: from OS0P286CU010.outbound.protection.outlook.com (mail-japanwestazon11011047.outbound.protection.outlook.com [40.107.74.47]) (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 EB65B316195; Mon, 5 Jan 2026 10:50:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.74.47 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767610247; cv=fail; b=hopXPm4jH9rtlYzdwQoFbnyyF5cfFeZZ8qVTIQSWYR6q05H58VXx8ImIe1h0XGc3ORCQL1O65jMOhxs71lnMLwhYMzzVuiKDe+0wEfN3GV87t3OQd6iU7q5j+pT23xtZGv1r2IK/OEvZCoTRrZ9xNfOltJ29qzOVRlRX/2o9SQQ= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767610247; c=relaxed/simple; bh=3t4VyRY9J16Xy4B+L6v/PUIboutap9GcufNQ8ivPGvQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=MdOBZLAByEov5HXGTCyKjUi26AUToKxy2X0lGHPzvY3+2mspr/osnXRvg4/pJHuUcqX9AvuwCl4Sp/C35/RNpBVsT9o4qA2J2hRStC94q1qEyQ1ZsDgA541qbIG7+MKxVGGYOB2iZtwKnSYKpcIhpsW0h0zwfxKNh+dRZLRw6l8= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=bp.renesas.com; spf=pass smtp.mailfrom=bp.renesas.com; dkim=pass (1024-bit key) header.d=bp.renesas.com header.i=@bp.renesas.com header.b=ozBtnXMy; arc=fail smtp.client-ip=40.107.74.47 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=bp.renesas.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=bp.renesas.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=bp.renesas.com header.i=@bp.renesas.com header.b="ozBtnXMy" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=dUqX/bBJv+xgavjzxO/57EmEfpcOD/WrLA10Bylso6A/FTkp1rR5rXHPekC9FiimunZ4P6HL6UL0FdtE1PCOa1tN6eRvQBxsL6TvBwCi/luuTYmXG0p5eJpUbYQ2oolYQlX1q4PNtVOY2HRsXMTA3kxs5573J6hCKWDA/fyfYKYH72zAc2OAmKOJKSMeLmBob6YyyEn+FAKEh7pAtN2VL7BbSOaMcZRJ3RFZHnkKe7FVTwZCnYVwna43e4HLwyEAqzYw1qQN/Pwo6vcV/C8pzUHgUEOYJy0M8I6SuxQTMXeEGRcjiSjjhqfCd6nUruw8oxaAROv8H8UBtpje7Z8SMg== 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=sTqeoijCjiJaWr18ZDKm7cCSyH0y4/1p+nKkiXlJjts=; b=MZNO9uy45G/3mce5E7GP9FQUMVlxpNHH/eId+1hA6mUniifMHM3Iav+8tRaZpOyZgxO1ZPPTZvKVpuZXuvTomucb+lj/6356gr7o30FL+Y5gTaY5YcIfi/HRzuHeLuONBs6vm7TyiDP5oVW46yhL465hJjis0KRUHl5+BRqK31D7QGNXLRQ6/fsNt54ThAYoOgqxBXkwQUWefDlaEWv0W/2YmTVab7i/iB/NES6fmLNQPGbNovNGkuWya+fdFBeERJXZRJQAMkWBny9H4obNpz5uvxltfWv9/FyjEkwAPMs2TK/+tb26D5XTMH/MfSOecJInTZydc70P7kerdlatQw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=bp.renesas.com; dmarc=pass action=none header.from=bp.renesas.com; dkim=pass header.d=bp.renesas.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bp.renesas.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=sTqeoijCjiJaWr18ZDKm7cCSyH0y4/1p+nKkiXlJjts=; b=ozBtnXMyuXLgA4yVQC6GQsQC9czinPbTdgUw8N2dDT0+FlTr8YwN1NOHF02UD10GsNxY1zuDlklbE79tHPr2yYjXpbGEapzlJLNnXv5ZZTdXEYKfp7//CeS7YnoRip1vrKGRkpWfBxcVl9vvmafpRYP6jtO9vAA8LdBekeDox3c= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=bp.renesas.com; Received: from TYCPR01MB11947.jpnprd01.prod.outlook.com (2603:1096:400:3e1::6) by TY4PR01MB15540.jpnprd01.prod.outlook.com (2603:1096:405:274::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9499.1; Mon, 5 Jan 2026 10:50:41 +0000 Received: from TYCPR01MB11947.jpnprd01.prod.outlook.com ([fe80::33f1:f7cd:46be:e4d8]) by TYCPR01MB11947.jpnprd01.prod.outlook.com ([fe80::33f1:f7cd:46be:e4d8%5]) with mapi id 15.20.9499.001; Mon, 5 Jan 2026 10:50:40 +0000 From: Tommaso Merciai To: tomm.merciai@gmail.com Cc: linux-renesas-soc@vger.kernel.org, biju.das.jz@bp.renesas.com, Tommaso Merciai , Wolfram Sang , Alexandre Belloni , Frank Li , Philipp Zabel , Geert Uytterhoeven , Magnus Damm , linux-i3c@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH v4 3/4] i3c: renesas: Factor out hardware initialization to separate function Date: Mon, 5 Jan 2026 11:50:01 +0100 Message-ID: <4878c705a4f37adcfca65eb25a2472cedd855f2f.1767608450.git.tommaso.merciai.xr@bp.renesas.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: FR4P281CA0001.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:c8::15) To TYCPR01MB11947.jpnprd01.prod.outlook.com (2603:1096:400:3e1::6) 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: TYCPR01MB11947:EE_|TY4PR01MB15540:EE_ X-MS-Office365-Filtering-Correlation-Id: 7d447dd3-0d5a-4755-7993-08de4c48446b X-LD-Processed: 53d82571-da19-47e4-9cb4-625a166a4a2a,ExtAddr X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|52116014|376014|1800799024|366016|38350700014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?ogqlkTGg2JTGYAUQDJCBMjk3mTruJ3usx1loAdeSoQnUJ9E0GZb+TjfALfZy?= =?us-ascii?Q?nO2fOF2Qc1/NUIKHhQGDssCh32RlSpX6u6MlXavkOz+00uIfczpRYxpg3UAt?= =?us-ascii?Q?kT2NPDU6NmpOSyNlTFjVyYpSWgMuWXnnf75RQRvZcFa8o/kQGsSQevnrqXj8?= =?us-ascii?Q?RJPaQHNfYJyJc+icDSp6VOj77PnT7OjLIc0l3lR/pL4gzMcBts9rQ0XtuzNN?= =?us-ascii?Q?288QCAsyRpVsIaepaKnZ20RGvwcw+uxmSl6Zlpgnvm4GMSKCygOL7tKJ7w3w?= =?us-ascii?Q?MgM0OFDgu9hDhoCgwMwWakBBJVnIQTB4mI80B+myH1xuDX7vvplPja3KDlxs?= =?us-ascii?Q?JgKtozb4pzGsy2wCYcxg5IPhkHJx6iMy5DaSByD0XCdWLo5ZugeD07rwJD44?= =?us-ascii?Q?2kzz00EQlItAWvGL+5wlAJHXhfOR6bci5ffEDvCmEuQ1rebMEIE3D5LGsaB9?= =?us-ascii?Q?A0aCCfX+S5xTvlOgHTy7U6mGPXEgti+zmNRJa0UaCbiDPfAht256q1M2oDRl?= =?us-ascii?Q?f7nLWHoA2hEdpwagFA675oxjZqMS/gtfUFPVfV2XXP225e78hBAV22OEXO+L?= =?us-ascii?Q?ovEPsG6OZaIfe2ASI8PfoTTwp4V0njsDAetllfaoRocZXzn/RmKxPp6PEARr?= =?us-ascii?Q?38Ci0+/IqzqxmahCpGusJGuFyR7sa1amK0DhCzdReG1P7AjrTROalj+Aq4Cn?= =?us-ascii?Q?1AAnG6MCQqn1aCXdwNtSMOayVDAMPWV1wTFh0ZQ15YMY815se8vTcVUFQkLF?= =?us-ascii?Q?81zu3xBL44x/G+AdPCO6fK3EkadNeJkTeDE0UnTSE6HamC7YUkQR0ka9pAjB?= =?us-ascii?Q?vZ/ElMGNj2c69icpfqHe5Y+tqkDbkiXgiGQCC8Bhnm1F9G2qyut4hU45UrTD?= =?us-ascii?Q?KcFjsktD7OFeijI2JaxFn3kg9CGYC8BEuzGRWunviLehB8mgD8snN8juf/Rj?= =?us-ascii?Q?ci7pYonCJpqin6FAnRpzutD1uNA7m4r673L6bBUb3fupvCbK1heDENmxeZSx?= =?us-ascii?Q?+AsYO9kGxDnYGYyxORKM9psPcsJ6nEVswE5Cb+kXod0EyOBegqQ+06KFqRA9?= =?us-ascii?Q?vJgrPL6uvPX6lQaDrNbCi1nqGrTU5pKG50nJE92CP9qApEFY3+NUL3gZ8Ssv?= =?us-ascii?Q?/EjOGKoxWGXZgO65sN/wU+4J/mv6KvF98e/ioeoQREaliEsAW1td1sPcpVud?= =?us-ascii?Q?4r1YShyfrK1UAm8am7QUqP7ONKQKOBgePSyV/FRSDwOXw1tgFK+rUFA4KbiZ?= =?us-ascii?Q?4bEJ+HHD55gFZId89/27AHq0XI62s1Rk3vSU+2vnDlzqffezjuTPva+cLVSo?= =?us-ascii?Q?PkcLnhycH0t/dCRi1vw21Lj4VlrUzY6wiOl8Dkd0N1nX8mAzQSQHW6uyBIaW?= =?us-ascii?Q?hha0NKk08c1fisSpbgxR8NyLixzSg0dJbDORLY+vxdKhPf58hCStTNu5PJAJ?= =?us-ascii?Q?nQAFmdomlKExldwD0uyXD6ewONaSh2ifmatubGIL0i8tnhAOWn9oucXf0w+4?= =?us-ascii?Q?YRPsmVChTpvFzpngELZVF0r0IjhlsL1ednxt?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TYCPR01MB11947.jpnprd01.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(52116014)(376014)(1800799024)(366016)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?o8OR4JDmQ3aB/FF4fHOkY8DycsYzrjg8d3bP3ps28GjIJvgYxdjgl2LvkVDE?= =?us-ascii?Q?DQv1OEo1clrvDl8cX+dd5ZJKJPU0EY/b0yHHXDsLRxn7RG+2JgCa5B7PqEb0?= =?us-ascii?Q?DFJEQ2dReKn6+nnouX9aq3WbZNzVYJe1hqrT7SSzXOCgIad0Br09HKXxnECE?= =?us-ascii?Q?aBBAKA5yTyP7NgQxYI5yUfK9KfOreD3j/crFQ5ts8LmaMsOlYl1Pfs/liYYb?= =?us-ascii?Q?sVJ62F7PhP9TlJ8v+B4EsaTGCjfskewg7YWeZMOHCdleia9eHw/hACmzwvmY?= =?us-ascii?Q?R9tGquREI3LmOWU5RCi/JbE7ZROOk9cgsjxebWPFJts2RUfC3VnYZXBAFDRi?= =?us-ascii?Q?KhgviwcvXO/CqX9btgGnkuwacZs8+/O7FV09UbtUaBDcrpIGFQIiZyP+fyX1?= =?us-ascii?Q?X0x+es775hQdER2eZ2q/el3pgslbDXK/wFp/JijH/f2hss1hiJRybXRrg3qc?= =?us-ascii?Q?OsTEQoJzAP0WTEV0fipgPSO8NaiaCGA+jrDrxLGt2xgnLFIhg1IGRz0fBLdw?= =?us-ascii?Q?K6M6fTpqDQum65qLzeuaCmKufXZE46rvWkz8OxrP0MJB7HMT+gu+LvkG4RBZ?= =?us-ascii?Q?EbqUmqklxqgJIprx1s90DhHp9lP2+q+zOrj8ZouYgCq8FH4G2S7Q01Aj9ZBI?= =?us-ascii?Q?GkVI+O4FplFR08QMCrs2X3HQugnJ2Oa0V33FLqRlTl5HoJoZJ780k6cUUAbg?= =?us-ascii?Q?QTMpZ9kXT5wTqx6el6L9QZ7LKExjds5pCzhfiezQrg+zwRprCMV2B1jNkC8Y?= =?us-ascii?Q?AcVhbmf3TSLaDcqKMSnau2dkI6S6D7mSpx81hVgJRvrxQStzjG0UqjGEt1lE?= =?us-ascii?Q?yXUeqohrfRd3BW4d4R6ErbH8reOf0vUZkPULMoBmmMrp7wmVWSvgdJMW6D7k?= =?us-ascii?Q?gtzQBE5kzCV6vikRXxgTS4QMec3QyA1/1aA/Wdj/+RCUmcugSQfJ70QxM7Gn?= =?us-ascii?Q?H8y4eK9WkCHdEzGsoUQFGM/Cu11QyTm1vWjEeRLKY2J/CNwAMxEYi1SAUv5s?= =?us-ascii?Q?/ZTdSiJvr9QCSERdBTUXu5l6XBPwXvGpseFrUFutR9GhnlO+jccOo1Fipr8B?= =?us-ascii?Q?c/RBaZiFxV1jYbFxsxW/k7Er4Tpbl3BIUhfSAO0P7xMK9ci99RzR0iqcypVu?= =?us-ascii?Q?bz6QqCINKoHJ+bYReWUC49zi2BnZZAVryKr3SHqxWNvnFM6wAT1ZqbW7MrDM?= =?us-ascii?Q?00+I7Dq8wA0VR3TKyOc9wqLQpui02Q8i/Ut18/v43Ky1pUm6qYIOD3BsJV1N?= =?us-ascii?Q?xEBhak24cU2NY4Rzxfu81Gado1E8soGd+8ELiVivjMNBIyMNYUwJzjosfCln?= =?us-ascii?Q?Yy0Cm4XLB8e+d1T9ByYe2gV5/ZhblPWnitqEzIyDldzqjnm5xEMLk/C0/hLO?= =?us-ascii?Q?lL78pltyNlR4BsXu7tztZTocWK/oNnI7YlkpKnOUFaL2IWuX27bfeZTK8XW5?= =?us-ascii?Q?WfrEy7X9HuFRKF9mFMRBfdFfPPwrnqxgDcrC4DLx5RNpyfonfnHHVQVG30Fk?= =?us-ascii?Q?dTBjblODdw7gnWu1jcOCcJpcSG4B7oKgVvy7AWoW2ZOUPUmEm2oj3YWIJcv3?= =?us-ascii?Q?C7O6BSW48ZY/oRGGZbA/DcB7OUe3vSqNW4OqwgHGJgBjaM9vEvmSZFaralm2?= =?us-ascii?Q?eYcLcYkdIyk7lfFZDvMFm8g+iNU6vc1Fg/fhF5WjApU8I6WyninTEZ4EtqEA?= =?us-ascii?Q?THf0Tf6q502NLLM5cOEaHDbgfR0nHdK2tYs+Pdwo9CWBuCIYHVTegHoTrfg4?= =?us-ascii?Q?S80uZWAVW0373sozk+E3ghu0nLFHISEj3TNJEhRiwa0YpHqJ0VVB?= X-OriginatorOrg: bp.renesas.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7d447dd3-0d5a-4755-7993-08de4c48446b X-MS-Exchange-CrossTenant-AuthSource: TYCPR01MB11947.jpnprd01.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jan 2026 10:50:40.3595 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 53d82571-da19-47e4-9cb4-625a166a4a2a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: oqxciIyNidsXukfE6Fk1WAqeoLVLrWtnOVRAyW9WVWXluCuxbf0h3vi/WGlmxEj5v9VsmK/yBJY7xxItblAW43F0mA4bNN8GEW1z45dFt9cyuEQWSS2eZmbw+2dbB99a X-MS-Exchange-Transport-CrossTenantHeadersStamped: TY4PR01MB15540 Content-Type: text/plain; charset="utf-8" Move the hardware initialization sequence in renesas_i3c_bus_init() into a dedicated renesas_i3c_hw_init() helper. Simplify the code and prepare the driver for upcoming suspend/resume support. No functional change intended. Reviewed-by: Frank Li Signed-off-by: Tommaso Merciai --- v3->v4: - No changes. v2->v3: - Collected FLi tag. - Improved commit body. v1->v2: - New patch drivers/i3c/master/renesas-i3c.c | 99 ++++++++++++++++++-------------- 1 file changed, 55 insertions(+), 44 deletions(-) diff --git a/drivers/i3c/master/renesas-i3c.c b/drivers/i3c/master/renesas-= i3c.c index 7359f71f78dd..b065b8d4b138 100644 --- a/drivers/i3c/master/renesas-i3c.c +++ b/drivers/i3c/master/renesas-i3c.c @@ -479,13 +479,65 @@ static int renesas_i3c_reset(struct renesas_i3c *i3c) 0, 1000, false, i3c->regs, RSTCTL); } =20 +static void renesas_i3c_hw_init(struct renesas_i3c *i3c) +{ + u32 val; + + /* Disable Slave Mode */ + renesas_writel(i3c->regs, SVCTL, 0); + + /* Initialize Queue/Buffer threshold */ + renesas_writel(i3c->regs, NQTHCTL, NQTHCTL_IBIDSSZ(6) | + NQTHCTL_CMDQTH(1)); + + /* The only supported configuration is two entries*/ + renesas_writel(i3c->regs, NTBTHCTL0, 0); + /* Interrupt when there is one entry in the queue */ + renesas_writel(i3c->regs, NRQTHCTL, 0); + + /* Enable all Bus/Transfer Status Flags */ + renesas_writel(i3c->regs, BSTE, BSTE_ALL_FLAG); + renesas_writel(i3c->regs, NTSTE, NTSTE_ALL_FLAG); + + /* Interrupt enable settings */ + renesas_writel(i3c->regs, BIE, BIE_NACKDIE | BIE_TENDIE); + renesas_writel(i3c->regs, NTIE, 0); + + /* Clear Status register */ + renesas_writel(i3c->regs, NTST, 0); + renesas_writel(i3c->regs, INST, 0); + renesas_writel(i3c->regs, BST, 0); + + /* Hot-Join Acknowlege setting. */ + renesas_set_bit(i3c->regs, BCTL, BCTL_HJACKCTL); + + renesas_writel(i3c->regs, IBINCTL, IBINCTL_NRHJCTL | IBINCTL_NRMRCTL | + IBINCTL_NRSIRCTL); + + renesas_writel(i3c->regs, SCSTLCTL, 0); + renesas_set_bit(i3c->regs, SCSTRCTL, SCSTRCTL_ACKTWE); + + /* Bus condition timing */ + val =3D DIV_ROUND_UP(I3C_BUS_TBUF_MIXED_FM_MIN_NS, + NSEC_PER_SEC / i3c->rate); + renesas_writel(i3c->regs, BFRECDT, BFRECDT_FRECYC(val)); + + val =3D DIV_ROUND_UP(I3C_BUS_TAVAL_MIN_NS, + NSEC_PER_SEC / i3c->rate); + renesas_writel(i3c->regs, BAVLCDT, BAVLCDT_AVLCYC(val)); + + val =3D DIV_ROUND_UP(I3C_BUS_TIDLE_MIN_NS, + NSEC_PER_SEC / i3c->rate); + renesas_writel(i3c->regs, BIDLCDT, BIDLCDT_IDLCYC(val)); +} + static int renesas_i3c_bus_init(struct i3c_master_controller *m) { struct renesas_i3c *i3c =3D to_renesas_i3c(m); struct i3c_bus *bus =3D i3c_master_get_bus(m); struct i3c_device_info info =3D {}; struct i2c_timings t; - u32 double_SBR, val; + u32 double_SBR; int cks, pp_high_ticks, pp_low_ticks, i3c_total_ticks; int od_high_ticks, od_low_ticks, i2c_total_ticks; int ret; @@ -558,49 +610,8 @@ static int renesas_i3c_bus_init(struct i3c_master_cont= roller *m) =20 renesas_writel(i3c->regs, REFCKCTL, REFCKCTL_IREFCKS(cks)); =20 - /* Disable Slave Mode */ - renesas_writel(i3c->regs, SVCTL, 0); - - /* Initialize Queue/Buffer threshold */ - renesas_writel(i3c->regs, NQTHCTL, NQTHCTL_IBIDSSZ(6) | - NQTHCTL_CMDQTH(1)); - - /* The only supported configuration is two entries*/ - renesas_writel(i3c->regs, NTBTHCTL0, 0); - /* Interrupt when there is one entry in the queue */ - renesas_writel(i3c->regs, NRQTHCTL, 0); - - /* Enable all Bus/Transfer Status Flags */ - renesas_writel(i3c->regs, BSTE, BSTE_ALL_FLAG); - renesas_writel(i3c->regs, NTSTE, NTSTE_ALL_FLAG); - - /* Interrupt enable settings */ - renesas_writel(i3c->regs, BIE, BIE_NACKDIE | BIE_TENDIE); - renesas_writel(i3c->regs, NTIE, 0); - - /* Clear Status register */ - renesas_writel(i3c->regs, NTST, 0); - renesas_writel(i3c->regs, INST, 0); - renesas_writel(i3c->regs, BST, 0); - - /* Hot-Join Acknowlege setting. */ - renesas_set_bit(i3c->regs, BCTL, BCTL_HJACKCTL); - - renesas_writel(i3c->regs, IBINCTL, IBINCTL_NRHJCTL | IBINCTL_NRMRCTL | - IBINCTL_NRSIRCTL); - - renesas_writel(i3c->regs, SCSTLCTL, 0); - renesas_set_bit(i3c->regs, SCSTRCTL, SCSTRCTL_ACKTWE); - - /* Bus condition timing */ - val =3D DIV_ROUND_UP(I3C_BUS_TBUF_MIXED_FM_MIN_NS, NSEC_PER_SEC / i3c->ra= te); - renesas_writel(i3c->regs, BFRECDT, BFRECDT_FRECYC(val)); - - val =3D DIV_ROUND_UP(I3C_BUS_TAVAL_MIN_NS, NSEC_PER_SEC / i3c->rate); - renesas_writel(i3c->regs, BAVLCDT, BAVLCDT_AVLCYC(val)); - - val =3D DIV_ROUND_UP(I3C_BUS_TIDLE_MIN_NS, NSEC_PER_SEC / i3c->rate); - renesas_writel(i3c->regs, BIDLCDT, BIDLCDT_IDLCYC(val)); + /* I3C hw init*/ + renesas_i3c_hw_init(i3c); =20 ret =3D i3c_master_get_free_addr(m, 0); if (ret < 0) --=20 2.43.0 From nobody Sat Feb 7 09:35:12 2026 Received: from OS0P286CU010.outbound.protection.outlook.com (mail-japanwestazon11011047.outbound.protection.outlook.com [40.107.74.47]) (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 41066314A82; Mon, 5 Jan 2026 10:50:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.74.47 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767610249; cv=fail; b=LmyVmthUrIV6gEtICeLXdKHmWqSZCv8qI7cObRi3s9QG/CsPCBcIcdXAslNmE8GRzOK9O/dIf8bJGm83LAQ76Krpd9rF1U5k/7JMsquQ8R5itjquV2OAV4EvFtNqqwsc2XnFPfyMPpU6b1QuSGiSUeoL+NuqUtTO+oG7IjYCSv8= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767610249; c=relaxed/simple; bh=c2CWdGDQ08oRVzoGrR0fN6/ZjAeHy4gTweSaUfjHH9w=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=Du0zOqMi3pxCwqLo3FQdb4gQsxyh6Fc0yYmWX5me5PuDVgNmTry9Ps5TirAojQ55iFm2zjGvBtSVvla9KFf+R1Yt6rbdZrE7SkJk4LT0gvUQsQrcAyCMWJBXNHpCtVgjxJlU/RkVUyh1CX2N4aAoTaIijluX0/SJRBs873Fll34= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=bp.renesas.com; spf=pass smtp.mailfrom=bp.renesas.com; dkim=pass (1024-bit key) header.d=bp.renesas.com header.i=@bp.renesas.com header.b=PHa5wqxX; arc=fail smtp.client-ip=40.107.74.47 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=bp.renesas.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=bp.renesas.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=bp.renesas.com header.i=@bp.renesas.com header.b="PHa5wqxX" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=jjp+x7U6P8aNyk0JhKHDwyRV/v3z23aFwMNlOAygYFwHBqxyzghxSleSgSEZ605/wx65kU6gXkZcpwcG5NiWfJ3nccdTbpkSgPU96SK7phPc9/NY4UkDEsDD0Tg7lg3XXaXjm3r4GpeSBWFXBcTaU22qh2HKSnBWA++rm3ayFORJdsKT6W5t9MF+WcfE4AlWK+u28ZUwW8lzhu/lFjGidgwJC3hzXRXlJiIhFjz1RbW30dl2bPCegj7BBLliq0GHXAqHJ/pWWaDsjXoBy+K8DY/zAgr6jiTiIG6F2o5vDBi1AmkWgmTKs8e253T5RqaGNAJKIU07hwvjU55vsV2YKQ== 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=atTjqG28lutdNciGlmOUNZSQAT/lZT0uzCHr2CMvSAQ=; b=GAs3iBdCt5ZcCnbdr7/EiBBQvTkoPf484An7IFhwc1jwL0Bewkcnsubaf5onWsQv2AOPuPL4Ai9FXLtXg4tTM9qBFQRiXEliPbCDxnNZMWvFUvS9oFXx+3GlebumXgLAN8IMkp7sm35sHcd76rz3tgmRsd3tqkHsXeP+65UuTvdSntYXSchDJNYFjwDfsW5jrkjOwoL15YTAuqFy6u2WxqfEASEfkUrHp8w2ahPLDjXf6/AxunBjoxAzn+2S2+UXMO0avqCNnbMVClabG421pMAnkafrObuEtaVViaulB7V7OKD8Fu9yPL7eD8y3V/WSO2FtoWz+zfbUJsWlGCLU3A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=bp.renesas.com; dmarc=pass action=none header.from=bp.renesas.com; dkim=pass header.d=bp.renesas.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bp.renesas.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=atTjqG28lutdNciGlmOUNZSQAT/lZT0uzCHr2CMvSAQ=; b=PHa5wqxXYO3mxBZJfc+378jcu12t/y85GXNGMXfIUjiLjJiy34V5bEPlH5TQA0RidZKS2kBvxkQMDUrCUgBzxj2G2S4OYC3TglHxgY47drFWUYoJW9qpa3+VkGMekCWvsqNuu8qnrnQH8S6iyJ7YRfrrTZuLmoKd7OtfIUHk2Oc= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=bp.renesas.com; Received: from TYCPR01MB11947.jpnprd01.prod.outlook.com (2603:1096:400:3e1::6) by TY4PR01MB15540.jpnprd01.prod.outlook.com (2603:1096:405:274::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9499.1; Mon, 5 Jan 2026 10:50:45 +0000 Received: from TYCPR01MB11947.jpnprd01.prod.outlook.com ([fe80::33f1:f7cd:46be:e4d8]) by TYCPR01MB11947.jpnprd01.prod.outlook.com ([fe80::33f1:f7cd:46be:e4d8%5]) with mapi id 15.20.9499.001; Mon, 5 Jan 2026 10:50:45 +0000 From: Tommaso Merciai To: tomm.merciai@gmail.com Cc: linux-renesas-soc@vger.kernel.org, biju.das.jz@bp.renesas.com, Tommaso Merciai , Wolfram Sang , Alexandre Belloni , Frank Li , Philipp Zabel , Geert Uytterhoeven , Magnus Damm , linux-i3c@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH v4 4/4] i3c: renesas: Add suspend/resume support Date: Mon, 5 Jan 2026 11:50:02 +0100 Message-ID: X-Mailer: git-send-email 2.43.0 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: FR4P281CA0001.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:c8::15) To TYCPR01MB11947.jpnprd01.prod.outlook.com (2603:1096:400:3e1::6) 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: TYCPR01MB11947:EE_|TY4PR01MB15540:EE_ X-MS-Office365-Filtering-Correlation-Id: 24fbf979-1567-4fd8-145d-08de4c484739 X-LD-Processed: 53d82571-da19-47e4-9cb4-625a166a4a2a,ExtAddr X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|52116014|376014|1800799024|366016|38350700014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?LArtwwB4pzAxBngUqHWbJnBNmgbqMLf5ruMv6VB/AKJN83hrv0TgaV5vFbqs?= =?us-ascii?Q?v+pMzO6ndxHHfsfIPnHc7OecTqamka7kOqYrFg71/5vUTJhyE8x7lo7YvKhS?= =?us-ascii?Q?vxxKCIAIimQ3Pi3OW3wGZt7RGjiXwqAXy358+Dq1e50hdqUPfGQcLcjKYdJv?= =?us-ascii?Q?2L+8VRj7bLv46l4lrYs21qASrmYWw3OSLszwkrcaLg8y5zWPcZ53uN1P8Rhp?= =?us-ascii?Q?nH+tGgtyVZMCFXMgOsnDcM2Vp/yXvlWKKCRB6VHYIbA70/6iJwIRpAZNK+Wg?= =?us-ascii?Q?BCTqjG4Fd79b+TsHplgfEIba0rPYCD7Q78hsbx6jUxlqHt5uxIg9P2EKz7/1?= =?us-ascii?Q?3ae62RIkNPNFaawgCXMCcO5XYAlU4VgeF+KJ/cJkonc6L0XW0gSnPiyBzL1N?= =?us-ascii?Q?8xwmVSXoDTWYQHgh3x7dMs13mYwS1LnFeisgr8VDKgOWDk09OlX/oQWwvA0f?= =?us-ascii?Q?WeU3xBkS+zOG2JsryL/sBtO9Rz+irhS8lLMGs6hIxR28AvRoYb735ySTM+Uc?= =?us-ascii?Q?fmj1tA4L0iWalpvgDOTbV5j0nEQooChXD9f905tVS+HlgB1g4HV76xA4Jd9t?= =?us-ascii?Q?jTNcb7PWTLp3ZfsX605SiPi8wg2xZBYDJTvVLHyxQIBKgaw5sPesmpWo7ucN?= =?us-ascii?Q?jWkp5hoBsSKB4fD0ZDM9hWeoLKmnCZapKqEOcHqVgKZNjWjzOzwhPkwOs2L3?= =?us-ascii?Q?brsqP6PFQHp9xYknAAJzhRKTRVRV8ZS9SJlyDoWb9SynymBjlesTTAi+EQE7?= =?us-ascii?Q?Ee/LUWjVSO3GQZqXsYQg+Ybrawm9jIERsIYrZkgdaoh8iUr6HqfTk+bCn2nm?= =?us-ascii?Q?3SMKKra8gip0KAZ7rcMAWy6qT0D/G9i53eLvgC16aIiinZCOY+E7rdkXh2z1?= =?us-ascii?Q?sLhE4pT6d8qWS7MdNbyuurS/Q/4tJ2TLqpMp9qMqcPkRmXPzGr6E9lgauG6P?= =?us-ascii?Q?0wejRVDPz1y/SqVcFC0csJ9LHbjOjVbYqAInjlPHHRAQy9NVMud/GrnplUzU?= =?us-ascii?Q?jK5uJUPsHJRNBQUR/KKyGZKazvDV2PSQ8k9LZAsjfSs0Lcqbja8mBEFjIC/K?= =?us-ascii?Q?dvVU0zv4v5c2N8AXsAq0BrnVEOQsH9wVznHGi3VO8gbCtkKMF+2E2+LKYpwf?= =?us-ascii?Q?tQ20+lBGzVmRsR2xFJER8eAoJh2ms6Vw8vUYgo9gORWjwz/IOoBnWVMCMQkc?= =?us-ascii?Q?KSITSAJwwJ8qRoaWkuKCYmbgE66n8Q2ViuMy55DeyFkFqpBhzlWgDupj3xUJ?= =?us-ascii?Q?kAr+xY0SZk8SXn2ldYqJE3I1SFxdcljf8eatyty4XRDJr529+TdkNz84aizQ?= =?us-ascii?Q?YzJNtJJTBgAQyOsbN7AIOFgfkJiqn3c4bvkEcuReqjiY+NvNgTxjw2zrrv09?= =?us-ascii?Q?1TrDPq0AfMVb0HXLk86mMWuNnjqJEvz1yUd75HKmPX9IxyYOke9sHpJe9LZY?= =?us-ascii?Q?L5Pc/bjI90aj0JLWgaoqQdZZa4XnvstpVQZbdyGaJQvpkVLzDprQMuadxIOY?= =?us-ascii?Q?DBk+8c1IVf+cCuN5HXOIFO/617xwTGV5oWOQ?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TYCPR01MB11947.jpnprd01.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(52116014)(376014)(1800799024)(366016)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?I+NcL8KC/+gRNCwcM+XU0erc7gq+wkxG9YK7o7rwY59vrw4uZLCNCFrmOFJE?= =?us-ascii?Q?TB2u0YzFaWQT3LlohpzsYBHo4hPJAVNw3wKn3D7otofzyj2/YUfRihZiKoBP?= =?us-ascii?Q?4HR8aaXg4rdU2y2tcEjt88Y26GBLlyq/LWG3JX2NmtaLz8AAudVfqcFecDQz?= =?us-ascii?Q?41KWtVr6iFs/GsmfgoH6Uj49bYasgutBY9TDAcvpL8IATyhLQPPsrktM0qE+?= =?us-ascii?Q?h0HysSHAVHjS7COL7GsE24Vu6MpCiNIUyLTuhG6UTNInHgp+Bimq/snoWlW4?= =?us-ascii?Q?Y+c68M2LozgXBbowj+rLMqv0MSG4cMgpn0H4k3c4ZbXrN13SIP7NJxnXUhbH?= =?us-ascii?Q?b1mki6JmWD6Mhb6GfQyFUlaM0C37GWsuIzZRiUeg3NdjjT3lxSdhf1XnDIZa?= =?us-ascii?Q?mklqBZVhWJJqxrbxSe1RKrSOnt1VzcmDcNLAm9E9Nc+pe+DoRxW/2wxNfwIb?= =?us-ascii?Q?KoYUX+xHnQGHFy1NqXuunJx0AAjlm3YV7Vap2utTEYmi1l7cl3XZjcFs9y+4?= =?us-ascii?Q?QVFZ0XQBR9p1Z581BsNf9FUQZPPPOZRVkaVug4jztgWOISPLfG7vmwsyDp15?= =?us-ascii?Q?zjZD+FwKJMHqFdA+rjq9l9nosiCUgK8z5Y1IQzNdDoVu70pf2xj+cFUM5agp?= =?us-ascii?Q?KJXLlcaPTo9oB452w1knCvzuPbk31r1+mhhwHP5Bp33dEx5WFnNb5Yiy+Ebl?= =?us-ascii?Q?DdNBiAMjkm2+046vfGFy65ieYyAAEAGFKS4AUCOjHszLlt+CJDaJBP3AxQJ6?= =?us-ascii?Q?jCgdIyLu3eTlDinu0K7c3c57zI3GHFlbxtSZRRVHqCCY9WxLQlJkmNhd1wRb?= =?us-ascii?Q?sWEJk4+ou5XwlAGM3DAGuAao/mRkB7BXlf4q4lBugUgazlUd5+YtocA0dafB?= =?us-ascii?Q?VhGHQ/uqnF9ZVvb8m38aam3Wkky4QftZ0uPP6mZhlyUyAE1FzZk9AJVsYR+N?= =?us-ascii?Q?KsQ1xHA1UYY7PN1a1uF8FahyvyIvzpgJGWGYa7DgV470jXB32eNnauAakRdr?= =?us-ascii?Q?xAgg9zxpU6ZOLr+pXQ7csO5JSCJCh61F0MPVaK1pRbN4ffQuUohu7O7vSCZt?= =?us-ascii?Q?L9bf1SrxF5iNi/k59jfI8xlMoOoBQtASrPjzL7gEbrvSKn4ns7zYkoYQ5qr4?= =?us-ascii?Q?9dJ5k38rtL5Z6DzcFVvxIyxyJXh0dE1BXlolEPeEubGo1pkZSoXCvNC3eoSG?= =?us-ascii?Q?P/xWIE0FjVfpbvbgHoM8N8mZQC8cCSAfJmTQ0/mTB0HbYwlGNmuMd28W3RFR?= =?us-ascii?Q?p2AsQyynB2sb7DfpX2yPYyrdGJHUZ7Ba2y2NaHCt/Efj5iXUG58P6VnIylX4?= =?us-ascii?Q?TpIfsrGwXGZanzxDo0UwwB4bIL3AjnYFlCNanhh2WeB9TXJqIyDpywfPNUGI?= =?us-ascii?Q?AH8yK68iWqUNQDZC8zqGDS0J25bO5bcFj2FmE5zs4bL65ehLrLBiGQjvH6nO?= =?us-ascii?Q?FwRnUwt5+bovnreftfGGwzi/CrRt6CMFzJ9dqeJO6pF5ABRlat4pnno23PBF?= =?us-ascii?Q?7PNnNnLeqzcdCAtP8ZTmkQZGLcZE4G/2X1tFY7wXElSp/SULUF1++O6ZeeiB?= =?us-ascii?Q?+HnzJ4H6Z08Y/4nucp97noKnxOs4zkJNK59wi5swXOvfp551HLU9GRaka07j?= =?us-ascii?Q?fnbl29hDNnW0Z6cfURSUTXUhAFPIubliMHDW7W8tEazER0V74MGfBSzJkTR5?= =?us-ascii?Q?kcScV5w+7GINJ0EOWVYcZDwJeY6yY5mAL1zor3VTWZJPqVqu1Z8GXenWwxZH?= =?us-ascii?Q?nVLVqZYEvmr372RM8Y/IIF6kDVfq3itiRk3HbWcxr+mmmYlH6f2P?= X-OriginatorOrg: bp.renesas.com X-MS-Exchange-CrossTenant-Network-Message-Id: 24fbf979-1567-4fd8-145d-08de4c484739 X-MS-Exchange-CrossTenant-AuthSource: TYCPR01MB11947.jpnprd01.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jan 2026 10:50:45.3119 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 53d82571-da19-47e4-9cb4-625a166a4a2a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: +00fHLrGbhbvd13t1rVee0oJaFgXQz8OWDBb8h7ZD8iQlG8PpfJVwInKH2IHCtHZNieMk0UwPxuReF1UihM63RHaGBhBR9Aes6xzFSPTgHmy5AiZDq2Oz22mpPm0CgJy X-MS-Exchange-Transport-CrossTenantHeadersStamped: TY4PR01MB15540 Content-Type: text/plain; charset="utf-8" The Renesas I3C controller does not retain its register state across system suspend, requiring the driver to explicitly save and restore hardware configuration. Add suspend and resume NOIRQ callbacks to handle system sleep transitions. During suspend, save the Device Address Table (DAT) entries, assert reset lines, and disable all related clocks to allow the controller to enter a low-power state. On resume, re-enable clocks and reset lines in the proper order. Restore the REFCKCTL register, master dynamic address, and all DAT entries, then reinitialize the controller. Store the REFCLK divider value, and the master dynamic address to restore timing and addressing configuration after resume. Signed-off-by: Tommaso Merciai --- v3->v4: - Use clk_bulk_disable/enable() into renesas_i3c_suspend/resume_noirq() instead of clk_bulk_prepare_enable()/clk_bulk_disable_unprepare() v2->v3: - Fixed error path into renesas_i3c_resume_noirq() and renesas_i3c_suspend_noirq() function. - Moved up one line sizeof(u32) * i3c->maxdevs into devm_kzalloc() call. v1->v2: - Updated commit as v1 has been split into smaller patches. - Use clock bulk API into renesas_i3c_suspend_noirq() and renesas_i3c_resume_noirq(). drivers/i3c/master/renesas-i3c.c | 89 ++++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) diff --git a/drivers/i3c/master/renesas-i3c.c b/drivers/i3c/master/renesas-= i3c.c index b065b8d4b138..4123593fc16b 100644 --- a/drivers/i3c/master/renesas-i3c.c +++ b/drivers/i3c/master/renesas-i3c.c @@ -256,16 +256,19 @@ struct renesas_i3c { enum i3c_internal_state internal_state; u16 maxdevs; u32 free_pos; + u32 dyn_addr; u32 i2c_STDBR; u32 i3c_STDBR; unsigned long rate; u8 addrs[RENESAS_I3C_MAX_DEVS]; struct renesas_i3c_xferqueue xferqueue; void __iomem *regs; + u32 *DATBASn; struct clk_bulk_data *clks; u8 num_clks; struct reset_control *presetn; struct reset_control *tresetn; + u8 refclk_div; }; =20 struct renesas_i3c_i2c_dev_data { @@ -609,6 +612,7 @@ static int renesas_i3c_bus_init(struct i3c_master_contr= oller *m) EXTBR_EBRHP(pp_high_ticks)); =20 renesas_writel(i3c->regs, REFCKCTL, REFCKCTL_IREFCKS(cks)); + i3c->refclk_div =3D cks; =20 /* I3C hw init*/ renesas_i3c_hw_init(i3c); @@ -617,6 +621,7 @@ static int renesas_i3c_bus_init(struct i3c_master_contr= oller *m) if (ret < 0) return ret; =20 + i3c->dyn_addr =3D ret; renesas_writel(i3c->regs, MSDVAD, MSDVAD_MDYAD(ret) | MSDVAD_MDYADV); =20 memset(&info, 0, sizeof(info)); @@ -1362,6 +1367,12 @@ static int renesas_i3c_probe(struct platform_device = *pdev) i3c->maxdevs =3D RENESAS_I3C_MAX_DEVS; i3c->free_pos =3D GENMASK(i3c->maxdevs - 1, 0); =20 + /* Allocate dynamic Device Address Table backup. */ + i3c->DATBASn =3D devm_kzalloc(&pdev->dev, sizeof(u32) * i3c->maxdevs, + GFP_KERNEL); + if (!i3c->DATBASn) + return -ENOMEM; + return i3c_master_register(&i3c->base, &pdev->dev, &renesas_i3c_ops, fals= e); } =20 @@ -1372,6 +1383,83 @@ static void renesas_i3c_remove(struct platform_devic= e *pdev) i3c_master_unregister(&i3c->base); } =20 +static int renesas_i3c_suspend_noirq(struct device *dev) +{ + struct renesas_i3c *i3c =3D dev_get_drvdata(dev); + int i, ret; + + i2c_mark_adapter_suspended(&i3c->base.i2c); + + /* Store Device Address Table values. */ + for (i =3D 0; i < i3c->maxdevs; i++) + i3c->DATBASn[i] =3D renesas_readl(i3c->regs, DATBAS(i)); + + ret =3D reset_control_assert(i3c->presetn); + if (ret) + goto err_mark_resumed; + + ret =3D reset_control_assert(i3c->tresetn); + if (ret) + goto err_presetn; + + clk_bulk_disable(i3c->num_clks, i3c->clks); + + return 0; + +err_presetn: + reset_control_deassert(i3c->presetn); +err_mark_resumed: + i2c_mark_adapter_resumed(&i3c->base.i2c); + + return ret; +} + +static int renesas_i3c_resume_noirq(struct device *dev) +{ + struct renesas_i3c *i3c =3D dev_get_drvdata(dev); + int i, ret; + + ret =3D reset_control_deassert(i3c->presetn); + if (ret) + return ret; + + ret =3D reset_control_deassert(i3c->tresetn); + if (ret) + goto err_presetn; + + ret =3D clk_bulk_enable(i3c->num_clks, i3c->clks); + if (ret) + goto err_tresetn; + + /* Re-store I3C registers value. */ + renesas_writel(i3c->regs, REFCKCTL, + REFCKCTL_IREFCKS(i3c->refclk_div)); + renesas_writel(i3c->regs, MSDVAD, MSDVAD_MDYADV | + MSDVAD_MDYAD(i3c->dyn_addr)); + + /* Restore Device Address Table values. */ + for (i =3D 0; i < i3c->maxdevs; i++) + renesas_writel(i3c->regs, DATBAS(i), i3c->DATBASn[i]); + + /* I3C hw init. */ + renesas_i3c_hw_init(i3c); + + i2c_mark_adapter_resumed(&i3c->base.i2c); + + return 0; + +err_tresetn: + reset_control_assert(i3c->tresetn); +err_presetn: + reset_control_assert(i3c->presetn); + return ret; +} + +static const struct dev_pm_ops renesas_i3c_pm_ops =3D { + NOIRQ_SYSTEM_SLEEP_PM_OPS(renesas_i3c_suspend_noirq, + renesas_i3c_resume_noirq) +}; + static const struct of_device_id renesas_i3c_of_ids[] =3D { { .compatible =3D "renesas,r9a08g045-i3c" }, { .compatible =3D "renesas,r9a09g047-i3c" }, @@ -1385,6 +1473,7 @@ static struct platform_driver renesas_i3c =3D { .driver =3D { .name =3D "renesas-i3c", .of_match_table =3D renesas_i3c_of_ids, + .pm =3D pm_sleep_ptr(&renesas_i3c_pm_ops), }, }; module_platform_driver(renesas_i3c); --=20 2.43.0