From patchwork Wed Apr 23 06:11:42 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bough Chen X-Patchwork-Id: 884281 Received: from DB3PR0202CU003.outbound.protection.outlook.com (mail-northeuropeazon11011067.outbound.protection.outlook.com [52.101.65.67]) (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 46317267AFB; Wed, 23 Apr 2025 06:10:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.65.67 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745388643; cv=fail; b=uWXFUc+2ahAwKL/LD+yRUBgWVk5Vxo12h1zjbqehc1Faif8mQiNKbseTiSQbjJv6MxDzfqKR/JVfkeYFsfc9OSMsOW0nWreAgqIH3cJEtStVN4htWbYXhdods/Mr6jNxcYDY9q6mpkL9Tw91Xoz3Bi/mgR0JYQ0jGLo7U7t07cs= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745388643; c=relaxed/simple; bh=7OEu7aDcTNZBTqlMwR1UBHg27fDe35Sf0beeYZ/xMGg=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=e1VWrxIzaqRoP59J9SQPu+C/qj8qh+LBbiqHxN3qPM0VIy1LSTnkivjdPrnQSz8zIiiHR/Gdn0Z3e16V48R7H3sSbWPDYwxrYcAkqQvnXrw4H/0Mmqqz/Dvc81y82RR5a/sY6dwW7/lOlo0Axkv7/hUoJ0gjG3Sb5/kALtv2eFE= 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=ZXMGYeor; arc=fail smtp.client-ip=52.101.65.67 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="ZXMGYeor" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=pDfS0sbZRwiS3A/Cv5ygHocXteAan09zYJ42YjNNAwr3LRaMQDhIwcefj6BgImEtfG3wj1QGzVqCJTLPjJs9R5FILgagHUODUsSFzuAg/HdAmvRKpRFtI8S0OpXBo7vm2BlJAlVhrYWD1r4yLyH0wTMojrMipdoXz1yXtZUIYbLm9/FkQeMKWiXTKBdueGe6hLES8AfzQs0a7ewi2z1TJn+F4Vh7ONtCgbqq5jc+js1MjCZak2n4ucgqLm1dyqMlndFbiaSVkqiCUYpS6MW0bcDrQgUmfFcvaUfVaXDz8G+awZG3zxbF3hc+l38JVvRvbMe7OrfVCc94X80Zg3wNAg== 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=o13BacnfkHfvICZOS7uGaToiARqOiA3zTd0p91FoY5U=; b=W1M3v6jIHPi70c2OetQJnlKUyb4VV41jqd+G5qd2d8xN4zo2jafVUOnkAM7ckhHQvuWqfEIE7WIndT6JdlYH6WZm9khaae6HviAuU+0UwSlsbtqeNGSZ8Th22T32hoJ67ns1apMhiIS6OyiAlqpiV9MTY4AO18m6554S/18Km1l/oY/3R7xSndBVLDgPhSil+jbsrwuvnlnFZfF7VNr1wvG37hbXR5LTPOBChDXzMBYY75R/Kf89lDxe/HvOCg6btZHc62VWuHFI8Rh87PlARa828ZS6AMCSkBWdnNYS9ZKJwV1DPL253nvtx+t2krFBtUpeBvcP3hCCATI6T3teDw== 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=o13BacnfkHfvICZOS7uGaToiARqOiA3zTd0p91FoY5U=; b=ZXMGYeorAKdt2e7gueKPGKjjjRz0/GijS+mys/6yveP8gSkHDOVC17qQNFnbcj/xtm3YAiWZl19J/ZSkXVqVBjeoNElq1nFgSwHRm09+5oZHSXTlpkE0fnyiFFx6YbjDY1vDUWn2x4sswxcWdf9+dABBaJI+u9XjA72IUjQEMXLpdebGINnlja0DAUiwUoS/O31kF3F9RQ11SW+zWJz27YpmtA9fnW7Mkf0vV4Okri/nBCjK/OIwPvsjZZ8ZRg1vmoCYpV3jMbtFyo1MsDQXNewcRzN7dmTRHMaRMHY35n6ACHNt4ZepoT5giwpA94+8w3nOfyJMu3/bwxBhLwLDRw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from DU0PR04MB9496.eurprd04.prod.outlook.com (2603:10a6:10:32d::19) by PAXPR04MB8734.eurprd04.prod.outlook.com (2603:10a6:102:21e::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8655.35; Wed, 23 Apr 2025 06:10:40 +0000 Received: from DU0PR04MB9496.eurprd04.prod.outlook.com ([fe80::4fa3:7420:14ed:5334]) by DU0PR04MB9496.eurprd04.prod.outlook.com ([fe80::4fa3:7420:14ed:5334%5]) with mapi id 15.20.8655.033; Wed, 23 Apr 2025 06:10:39 +0000 From: Haibo Chen Date: Wed, 23 Apr 2025 14:11:42 +0800 Subject: [PATCH v1 5/5] spi: nxp-fspi: use devm instead of remove for driver detach Message-Id: <20250423-flexspipatch-v1-5-292e530509d3@nxp.com> References: <20250423-flexspipatch-v1-0-292e530509d3@nxp.com> In-Reply-To: <20250423-flexspipatch-v1-0-292e530509d3@nxp.com> To: Haibo Chen , Han Xu , Yogesh Gaur , Mark Brown Cc: linux-spi@vger.kernel.org, imx@lists.linux.dev, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1745388747; l=2545; i=haibo.chen@nxp.com; s=20250421; h=from:subject:message-id; bh=5lL3LkkHmuY4xCbvDZE4rLc6eGwDA+AN+svgFhE/Z0E=; b=dvVqBSVsVM6gA6pofZtOCSTmB4Yp0+msTRgw1GVzFFXXZSnAJcpsv4HKWt4oS2sYUekhyMHpW mHun2Qgh6cODT7pD5t7qzWIcEh81iomb1eQKA0YcE3GR/J6N7H8N6gV X-Developer-Key: i=haibo.chen@nxp.com; a=ed25519; pk=HR9LLTuVOg3BUNeAf4/FNOIkMaZvuwVJdNrGpvKDKaI= X-ClientProxiedBy: SI2PR04CA0007.apcprd04.prod.outlook.com (2603:1096:4:197::19) To DU0PR04MB9496.eurprd04.prod.outlook.com (2603:10a6:10:32d::19) Precedence: bulk X-Mailing-List: linux-spi@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DU0PR04MB9496:EE_|PAXPR04MB8734:EE_ X-MS-Office365-Filtering-Correlation-Id: 3ea4d4af-a3dc-4c0d-76ae-08dd822d9256 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|52116014|376014|1800799024|366016|38350700014; X-Microsoft-Antispam-Message-Info: =?utf-8?q?MCeG2YeqcJ0Rhas/3bGGRBNulDZTtOv?= =?utf-8?q?va6+xxokcGdwIgdgFdd4qkolyBz+KoDkQlTForluxEAVLZxQ6+XxFSuJZBPV1kpXF?= =?utf-8?q?Ihca9iQcsNG5ld+UVR6xtyMWKEAOFMVJ8kwJcqF2NWpE9Hs6f5YsQGE5xdS3AMz7Z?= =?utf-8?q?g1ZfNu8ct4PDly08pMNrsGbmiVRt9I5V4kOAn7OFkfc1999+z2wJDpOjGtP9bUk7+?= =?utf-8?q?0eXIjqPpHxTgJFmqiRCjhkDZQdhDdEtOgSR2deGvcNJO76zC6+cNG/uu/eYaP8yVr?= =?utf-8?q?3cg16StRR36jglqqP3PEsTLuKzdI+wdrtQ24gwwWG8N5GUxATCHK5J0IBoN9AHcwJ?= =?utf-8?q?ZjwBBkG1dB1+w2TI0ipd44bk/slIKSvcyj3siprUBo0zYhZiLTp8qZTW7VwfoAX9H?= =?utf-8?q?F9sHg7PwUt3Cu14fr4Gc/wNEeq3X53/ZSsm3sLBZlfcX+EypBs966fCq2XQA6iwpu?= =?utf-8?q?bgFEX8g8DPKsdc6hXNISpvlNPdMvU1zBAyvzp/bkQBPxWbAO6jjV7i5SKXvwNbjgq?= =?utf-8?q?ToURSLpSAPUGypYujTcriFBepiOCkjZg3lPMCplM6GaC8J/mwC5BE/aiu3vmrpt0G?= =?utf-8?q?IsvgZYwU2BInugwajCDFI15AvW8PLGVQt4qfSlOo13KE2nsuBa6FrLVlGjP1ONYmE?= =?utf-8?q?4DqufBJR++hqO9A+ZeEIPEXwLVDVbxgE8AZkqesih5ZUIuoBwAS13SF2DKzuQn74A?= =?utf-8?q?YHZjZgdxXO6BbSCP5VMsvj30a/rtylZUlR39YC7yDF8lJ6ag862CJLNax+wbsZomV?= =?utf-8?q?XNP0AVB6hUp4mgq/tphyOiO6xzwbgnpXo7djzi/tsUefERyolBn9L9uvMx/7krKUE?= =?utf-8?q?MMVNeOXO7kvVkpiEEFHHTNMmxPpB3Ln8tO7R1e3J36Y4gZLI7d7jLpJYHugmLgws6?= =?utf-8?q?kGruPBbsL/BTXIl9GTzV8skBTfQm8uzO3sp/cKPSpwzg6iYtsCeJrijXCriEjjI2m?= =?utf-8?q?4Gg/EQJz43uby3PFKwEUjwdaA/SLFOTab3UnrWQlwvuKcLT10o+Wj4cJlN1jupDLd?= =?utf-8?q?tUu0IsLQpJhJoK12uqksdtpQ7VAjA0rhN3g32uVdEKxRH4b62wYGc3le2cxtlFFnh?= =?utf-8?q?GCf4851EVYYuhGjv4fWChA28WiS1bSEoMnEs5Q3AQJmRXIhgKJ3y+Sgi7D2Nr8Mdw?= =?utf-8?q?r9/Gzpbu7DNOG6jfZbbCYinqGoo2MFlJDQpd+foR46Z6hWkPGn5xlEPriS2/FRv6f?= =?utf-8?q?dhXBr5rx/5XJXryU+6E3rfbBL0PblwvBoxvgKSdQrJJLE6rKS07Vqx/4OMbIbbPx7?= =?utf-8?q?1HI+cBs1TLcD0bnpTKYcjnKBcBsOoqGDxIEXPrWuSpvXOMPtxOwpk7p23sEzPPpMl?= =?utf-8?q?HOoNn/7PjEuOiF7qZ2XgPmuG9HtBQeHig1we5Fa3Hvo8l2cAS2odOHt5sqmwukpDJ?= =?utf-8?q?pL/ty+A+aW4QWxLMJPvjQTfxJMeBNC7Eg=3D=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DU0PR04MB9496.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(52116014)(376014)(1800799024)(366016)(38350700014); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?CQnJUlwjMbyNGGQhevWiBCHDY2Nd?= =?utf-8?q?c/pYhGp+2Z8BO5WCqbInm86zil5DmhpnxCMkpkEjfjdsO7+XOMmT6p841E24ZX9E8?= =?utf-8?q?T6FJFHiLDhdNFzmQq+zEthWFAJ+6ezA/VfJRrohKvBnYiT8j2192GXXf3jxbEurKC?= =?utf-8?q?fTssT5YBpd9fqD/4h86O1CACHxuy5hcmcLNzuDqYEAF7z3CZRuvh3gtXiJcOgucC/?= =?utf-8?q?PHqAgKeiPTa24srDpeP06McZlexwWFjCiQi+XB3TYRqQHU0LJHuub1KkwmB95X2Z5?= =?utf-8?q?p2pxIhsUPbx+vNpva5m3t1nJiP5gxw5Ec2/B8ud0DFyyUHfeCUVWYfcPQUt0o6f/E?= =?utf-8?q?kCTD5VP+ilhRA6pmLi0WhaZUrfVK86vN+g5+3tqLXxoB6Xrw4P2jhw07VVYqCm0Ij?= =?utf-8?q?I6JlOL4urhZmt8NDX0bnfhgKF5QA+8DuKN/UqUaGEcnHQjv53lxL/YZ8YZ4AbKQki?= =?utf-8?q?0v8PIdI+60419U9zlcLk5i38e2W8CTxR0MxUk8Aalla7T3/MybB+HotHJA5xxKfzF?= =?utf-8?q?9Ii2qCx2/p/ku/vedvCl3/Doj19c56hauIDRAnrbEL4V99FPbYRCDNhRaEyvct/pz?= =?utf-8?q?KY+v6G0v618NMGN9DGIMljfDbKuCHgYuQ0T2IsLHNJEqp70z0VxW94Ti0YhsKdXWQ?= =?utf-8?q?Z7kD+COgVnloklUrzcN+8R0SyU/xBNykt0RoBxopZcte8/H7A0HTEOGmpl3LCVKG/?= =?utf-8?q?9DNXJSgGl+Xy9mgIDBpNxD777+UFM1NU4wjyymMS4fBMv2t+o/ozkV6so/Jv1i81F?= =?utf-8?q?MMlClMcRtkE4VGnFdd4K8wStdLVwVLwX3crnbzttJ/BeCn4V7m0MOx/ttfe6rUUW9?= =?utf-8?q?6rufab/YdWqdr3lJeqOPMHMtbYYL1aYPlNcHFsOmQ5zFaFWrIwQ0QKELEWlnQD/5S?= =?utf-8?q?3/+IbXLuvW+RtxAb4xs+haU/9aGsjKFUaw1gwblQ3ZKbz1NWAYP4NIzp7YsP08dTP?= =?utf-8?q?EtMgKJYnzt02mSB9ZkfJLaZNzNobZazACO67nKJAPgB8HpCxFH9efxcR336oAE6zo?= =?utf-8?q?vvRoHJ8lzFXQsFNXTkYpErVRnuOtOlD4q6liOM0awPVyXpwi22UfsiKsb+M8svTtS?= =?utf-8?q?cHkvlwMwRiHAQ+CR9mwwy+gV6PKhcoycFTKktg3ZcGj0aTi42J5MPYBTZ2Kjt6fQM?= =?utf-8?q?KSikoxYVzc8Zx+REnpAciv4fN/QZKymgTDBQHU/JQJn6MJjsHdAzOCx2hhOHdn0mf?= =?utf-8?q?opx6icc30hgUwon0vzXK4Lj/eEL6C4R55j0Dh1NtPxfvJ1xiCWPyHSGpt3vp4Jgna?= =?utf-8?q?wHpXLadBtwtTJTDU1Zh6jKrencCmYUb2s3S34DJIvgFhD8PhUCdskTTjCeL9A1RBj?= =?utf-8?q?CHIaUlzMYKupEQyOxF/gc00cpM/CFZyx9oWmnmRGeGuOOicjEDqVNUPd3MB+Amga6?= =?utf-8?q?gACbxfFCp/+onNTerKycs2zyW9/lgFDd5ys+bWwtc25MLTfk6YsH3U1aphR3jl4bx?= =?utf-8?q?oJ9y25wMR0qAnsJuuAbm6JHR8FcMyZyfqnOQEaZ62BEAUnDJPacJdjeiEFkopeNDa?= =?utf-8?q?FkKVZesjyKRU?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3ea4d4af-a3dc-4c0d-76ae-08dd822d9256 X-MS-Exchange-CrossTenant-AuthSource: DU0PR04MB9496.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Apr 2025 06:10:39.8848 (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: hBXUmXc0IxxDGkzHr9Z92WMUKnPWkGxpxR9fwWm4/wmX6e2BUo0YIX9a3mtkSxDols3ro/vol/zg0vCnqmoEiA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR04MB8734 From: Han Xu fspi driver use devm APIs to manage clk/irq/resources and register the spi controller, but the legacy remove function will be called first during device detach and trigger kernel panic. Drop the remove function and use devm_add_action_or_reset() for driver cleanup to ensure the release sequence. Signed-off-by: Han Xu Signed-off-by: Haibo Chen --- drivers/spi/spi-nxp-fspi.c | 41 ++++++++++++++++++++++------------------- 1 file changed, 22 insertions(+), 19 deletions(-) diff --git a/drivers/spi/spi-nxp-fspi.c b/drivers/spi/spi-nxp-fspi.c index 45d7b5fd9230ca122a61fe66a6e05dc4f823444b..497902acebedf37bd6b4f0a5f5f6d8a1591543c1 100644 --- a/drivers/spi/spi-nxp-fspi.c +++ b/drivers/spi/spi-nxp-fspi.c @@ -1168,6 +1168,24 @@ static const struct spi_controller_mem_caps nxp_fspi_mem_caps = { .per_op_freq = true, }; +static void nxp_fspi_cleanup(void *data) +{ + struct nxp_fspi *f = data; + + /* enable clock first since there is reigster access */ + pm_runtime_get_sync(f->dev); + + /* disable the hardware */ + fspi_writel(f, FSPI_MCR0_MDIS, f->iobase + FSPI_MCR0); + + pm_runtime_disable(f->dev); + pm_runtime_put_noidle(f->dev); + nxp_fspi_clk_disable_unprep(f); + + if (f->ahb_addr) + iounmap(f->ahb_addr); +} + static int nxp_fspi_probe(struct platform_device *pdev) { struct spi_controller *ctlr; @@ -1263,25 +1281,11 @@ static int nxp_fspi_probe(struct platform_device *pdev) ctlr->mem_caps = &nxp_fspi_mem_caps; ctlr->dev.of_node = np; - return devm_spi_register_controller(&pdev->dev, ctlr); -} - -static void nxp_fspi_remove(struct platform_device *pdev) -{ - struct nxp_fspi *f = platform_get_drvdata(pdev); - - /* enable clock first since there is reigster access */ - pm_runtime_get_sync(f->dev); - - /* disable the hardware */ - fspi_writel(f, FSPI_MCR0_MDIS, f->iobase + FSPI_MCR0); - - pm_runtime_disable(f->dev); - pm_runtime_put_noidle(f->dev); - nxp_fspi_clk_disable_unprep(f); + ret = devm_add_action_or_reset(dev, nxp_fspi_cleanup, f); + if (ret) + return dev_err_probe(dev, ret, "Failed to register nxp_fspi_cleanup\n"); - if (f->ahb_addr) - iounmap(f->ahb_addr); + return devm_spi_register_controller(&pdev->dev, ctlr); } #ifdef CONFIG_PM @@ -1363,7 +1367,6 @@ static struct platform_driver nxp_fspi_driver = { .pm = &nxp_fspi_pm_ops, }, .probe = nxp_fspi_probe, - .remove = nxp_fspi_remove, }; module_platform_driver(nxp_fspi_driver);