From patchwork Thu Apr 24 07:33:29 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Haibo Chen X-Patchwork-Id: 884732 Received: from EUR03-AM7-obe.outbound.protection.outlook.com (mail-am7eur03on2052.outbound.protection.outlook.com [40.107.105.52]) (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 66A35224AF7; Thu, 24 Apr 2025 07:32:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.105.52 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745479936; cv=fail; b=h9KP7PzniMI6V2dJ5xOmJuRsX2asskm0o/M7AhQ0gcgeEu2BgUdWtzppnvQHqqfex7xcMyd6zTE9NPXTCVnlV3aEwcDIjSexriOOpVv7yw1M1IVG5T3xTzdqt8vOiNNe81mrP8PJ/zJOkrDkBfYSTfdlUEXD0ijVeZmu2XRZGto= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745479936; c=relaxed/simple; bh=UO2CF2T4R+GBDa+q0lxOzRC6Kwy3H7zH55tkSSNRgyE=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=eMBZ419JhAjnJDwx+gn6TvAJ49rUB8Q7Q0kC9YTQb4LchzKk11ypfQCigPRQKxF7Kk1zOCj+jzy4pkr4ik0c5SeSH6Li+TOj5ZoadrnoeA+cqab+eGEJb8Sro35JogwQDUaa5ZbabVskrCD5oJw8epYBQtxfpjDebgmn7zafrGw= 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=mTaMnGYg; arc=fail smtp.client-ip=40.107.105.52 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="mTaMnGYg" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=BOuWlfq++eDqy4dDABf+LMGNBr/vuR4xCfonIPaNLpn8NVKlDW/Z8JFU/CDmFLgzFUiZFAc1f12fVqLj/ekqylckbajFJZ/+uLEJzX2GrJLavjKpCgNAJCN3SIsnzDnuFi9XljJNLvzZ35q1FeItF2Art/2aH9qnMGa10ursT3vGfgaq91mGYOVKFpuCZEQADgRi7somkWE1sP7ZQxfEtw2Iv8UWSC8JbwjTpqy8zifUr6O759DowgxgJPGPUE5fbeU1752GNMYWicaa8Js7RiaIEnqmSoNuwgqPWgUYwunPlkn9SUjIoMvLo5r8AVBavEnqZzAY0+siyUCQ6S4ahQ== 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=iDVEtT+ghwB7UYmNXOMxNtqKDgs/p1o6yr5FXZMUYbs=; b=Vns8vuHgBrtZGjzjVsRnAEo+e7Sb7DMVr0xHNu+u0aMB27fCqtmP0N4KzzkJLf6aVQgtMpV2f029SZofaiVkluyF0mDzH2kQsXiwt36sCDYj7HO+I+NlIiz0yeml2oAH+xOeLNhirzzQUWREXiiZEPOdq85q79t3TbuBuenAt9B/BTupGDJD7/Ebzun9fjNmDSQEvjvEw/CHFbj61lNF0OfXFVQoyP7nAgP6/HWcoNQzYI+9HbSa+qrpzTcc78jUtf7xcX7xDzqmP29rQNhYMgjDJWpezjUaUWUsd599TjuDTrRgnzDAHRgrt5PXb+19XGoJFPuFk6XM0X4tXkZrQA== 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=iDVEtT+ghwB7UYmNXOMxNtqKDgs/p1o6yr5FXZMUYbs=; b=mTaMnGYgjdDv++OpF8meHqAOkQAY7IKs2MYBCf9rBgLJRX+oBX2BHKwS8kHLCF/8yz0gAQy1QOfdUGhZQKYqZxe3IVwT0lxi8k8E29wEAJwnsMedXLlOlToeczM+H3I4RAUalV1QPCi8pj4HOZQgmgk3EyS/22+HL57e2CTeulx4/AFAkwBfxCQJjIMwz3KlSGODyruYqkBSuzSO7mx3tsNsOChZCleZVYQZyFk06Y0V+U3Br8rIgL8BC8A4FpPFlYRoNdmrQr6xgPVmBw5fw3iMhcSXRTLdLLrLX8wlHSIAAHibayZtXfp1oPFqO7qnQ2jV04wkJrn/+sAhrAeXcg== 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 VI2PR04MB10594.eurprd04.prod.outlook.com (2603:10a6:800:26f::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8678.23; Thu, 24 Apr 2025 07:32:13 +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; Thu, 24 Apr 2025 07:32:13 +0000 From: Haibo Chen Date: Thu, 24 Apr 2025 15:33:29 +0800 Subject: [PATCH v2 5/5] spi: nxp-fspi: use devm instead of remove for driver detach Message-Id: <20250424-flexspipatch-v2-5-e9eb643e2286@nxp.com> References: <20250424-flexspipatch-v2-0-e9eb643e2286@nxp.com> In-Reply-To: <20250424-flexspipatch-v2-0-e9eb643e2286@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=1745480038; l=2545; i=haibo.chen@nxp.com; s=20250421; h=from:subject:message-id; bh=J8Ud1vZfwI+2gILbpmyg4igG8KXXP6V/mjMQU/4wy7E=; b=6trq19sOhlpxlG8D52TqKfV++AZsvV18RtSepTIjv7y9dTimzKGSFGTG9CKb69k5IVOH3qvi5 8vwYsUA+V/DBLoDBhPVl1Es5LAsQhwU1oCcDQ/Wc48cvpfhYYbW3efm X-Developer-Key: i=haibo.chen@nxp.com; a=ed25519; pk=HR9LLTuVOg3BUNeAf4/FNOIkMaZvuwVJdNrGpvKDKaI= X-ClientProxiedBy: SI1PR02CA0055.apcprd02.prod.outlook.com (2603:1096:4:1f5::16) 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_|VI2PR04MB10594:EE_ X-MS-Office365-Filtering-Correlation-Id: 25fb4920-7f9f-4e4a-afbd-08dd83022139 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|52116014|376014|366016|1800799024|38350700014; X-Microsoft-Antispam-Message-Info: =?utf-8?q?pU/1bd8KBiPWLt3WxqLaVTmWFOie+0W?= =?utf-8?q?ahnyzgqv2qs0Bqs3jbV98vlsovdf9YMa9M3g2Q+fwsjAvd/hiGkfiDSyd888snfcC?= =?utf-8?q?sirzxNxKSZbDn28iVrdY69ucpWo3RPl+DtS0URjSi1LDatAKfHVcrgBkgD4W6f79z?= =?utf-8?q?1qxPW2NQN5MzKX9SCrrqC0waV6CLIb29rxky0obk2aImbBLvvdDoHUXieI0/BhHKt?= =?utf-8?q?AbHg+MsJAgMOHEfHHvylnyX05x+RAnHE+Bx/5/9J3qUegY6AlSwVii/Ku1BjA0NfL?= =?utf-8?q?kU/t4Q4q4QUJ+ZYa3bX2HRBB2TDfLyyYlhcgo32UczqhF0qH4vN6731gOjNWZQlIi?= =?utf-8?q?n/ZpRHD4yxZONIXY54oijgaX8BEICZkmXOC4vzMtHG4waiVdkvczfwgMIGIeB8nOh?= =?utf-8?q?ff99FDQdp0KBORCv3kGu8cAlIfnH2c9chFTy+VrF8ZwoAu6d3U8xHFbhheF4Q84Ct?= =?utf-8?q?T76HS4l4jBlyiXvwYBpFsRL7l/Y4uXxK2r/jZFaECFT/1nULyV6GOnIyMXs1AeLhi?= =?utf-8?q?t/Ay+6PoWUhdSXd0rqDU3Aw7BxgZJywZ115JayG8qFkk0zlJqCj3eHf9p8gqQYoWN?= =?utf-8?q?1iDmtxGRjRF4GsFPeJMJL/tndL53NVIEdu5la/8FplvFluGqDgAKk9C00M37mpyRS?= =?utf-8?q?8eu+f51pmMzZ05yDixvZdn+0e5JmK2PJqOJ1JKcjeO4lejv8MnZ66NsT4pmNVBwLU?= =?utf-8?q?W17OmZ/e/FhST81CEe0XCrEy/dwqfqR42enJBVPKzBSo1XbhrMjVzVZDcsoRwMaej?= =?utf-8?q?vYNucJHvcH+91f/dAUHyMxmPBkoFyqrPmbnezzYsfbXd0zsf0LtwLT2eJ2x4B42/F?= =?utf-8?q?9olEO7PyRcFSInPeOvqZDH9AoCfmhunG0IHUpy4Ujhfh2FpZxwRxtu4nPXgRCa+Ik?= =?utf-8?q?eYN+oR185Aai/Xdf8VAgzBrM63GMa4+AgxeQyYvWz4u47j/dmKz+CMzgIiXv2Jfob?= =?utf-8?q?8KgCkCGv43PsStfUrmVwPuVpzvPnjallyy6ATzzSlFwDq3R2Kq8GvtKOx3VCYHkzn?= =?utf-8?q?22Q0e/2nEzYxHQgFTyAg28uzSS1O+G6jka3cJduPE1Jyf3kro7SkQl4UfFgYTUHwa?= =?utf-8?q?qpNX76gJG5o2Izsow4PADbbwWCSfmTY6Atj5KND4E2tdBOhS1jZgZNbXQs/edYdTp?= =?utf-8?q?cvtDHZE84MawrtksafNCGPKwkp2d4eiOQ+xEjQcezlkY7wX2jqWMoEV8+UWIeDvH5?= =?utf-8?q?BPmRJX9f2GbO5Qk8veTMO+ephmIeCqvTJraWOCzPyMWd725qTuR9H8uvo6bi19ERf?= =?utf-8?q?J1AVMnx3jHTdyCyqfPejw+3i/iC4Auk4STnALn/p3zuvN41dqaVQomI8bKM+MIxZe?= =?utf-8?q?lvlT7WGK+R3/93NzHVwgQCngtT1jane7UpgToXbGTpTTYxRXEFPm89RedJmNpn2GX?= =?utf-8?q?HWIJ2ESFThNUcAuv/ZfosyOQNII2/Ln3A=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)(366016)(1800799024)(38350700014); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?lV1+FaG9RZNoOKtiK/zJ1uHIvrQ5?= =?utf-8?q?Lg6XAsmkklpY6DDquLFJBWNm6lEcHpo07unARZGREekpl995F7KdLmALtz0HlBt9a?= =?utf-8?q?SbzA2G6KqfYlSe+wkMyrjRJ582iF3baAMnImW16Lw6VkNUBC2XS3MSc6f78jl4kgr?= =?utf-8?q?jR1hcImVPQ7ONgbFOOKPwB/NwrsjLgyenEZeAR+7YM0RFoWzXTBS+sFjAG6tX3m22?= =?utf-8?q?CRfIw9vPr4nZt+yLdKZSHomUR+cwxhZzlPm9UqBzz26bu0UwdnurXG4kYo0CDW8Dw?= =?utf-8?q?V26riHk01HiLZEuIrwpZ7/KNTEuP7re1xf4bAik6kbIQxQSC5F18nuIUDxbsL5YYP?= =?utf-8?q?8XSu4HHVkOwLeeC3v2WUA9awnBpH9QuHK7eTwbDDacW9uiwbGwuMIKwNddtRi285s?= =?utf-8?q?2raKk/4Jw3kUYpbx2JjvWCpVKu7jjHvo0E4+Hb9J5KlxlnN0StMp/2RFuHJmr8MeY?= =?utf-8?q?MA6j6mXwBLiLuSIBEFse4V4hWzrGOVCGsoNKI+HbORTIMkRWXkcea4BSThbtVO3Te?= =?utf-8?q?N7FZVMv5U3SdIybr6+u/FvJx2btpR6OOpEE8UrfyDO32bRE0/AzP1RHYoVGceLMm8?= =?utf-8?q?QbyRtagvQCwPyAsUWEeHBojjYBjxY50YTkTLQ9DMsQfqHS6Mw7g59CAj+Jvo6cf8z?= =?utf-8?q?F5bKT5EGl9FMEGA4C/5TMhF22kBTuUTZkr1QXfX0g5XnibblTeRAqpkB2J5PlTDfr?= =?utf-8?q?85aOUlAzYSBy7Z4yysMjrpV+E3epX9zqkI0F//vR74+g8tlUEhRwevENyvxofq+h9?= =?utf-8?q?741a0aUqeujpMGFRJrani9XCFYiReMDCDwK5APxs4Gw0IdpWCPlQsq0uZfIZvdzD2?= =?utf-8?q?e4q5mKNYTQRi5kGH4KIswiuLNRFXZG21jyhw+jmKfuCj90zgdbli7qxETeS9dbp5J?= =?utf-8?q?QCFPGMRUkv/tKW42LOPVALpH4xFbuF4J5sRMz9Pg0RAmO2rLrEBSqgsvdHZTJNYo7?= =?utf-8?q?+8u6KxA5ZI9n7OE32ukgn+H/FbguH1n7aEPsyHx2JvXo7KmSkwJL2wTXron7DRjmi?= =?utf-8?q?+1fqjqfYpF4csacteUoQGbrCGRUy/A5jFDIyCwkijzKumsCymdb7Easjjar7EtURS?= =?utf-8?q?tLeUtq7OPvpwJ8kl6SEe1DEXhY5iGW8LlektmmfP3AI890mHle0pu9UEFbDAKbq7N?= =?utf-8?q?Qx+rSnkjPLTmqpT99yHM5eVzxRVmfFOmQwpOiUvPNC0NDVSGU2UIlKwgvMYN91yxn?= =?utf-8?q?CkrpOZxyO2zoVHd42FbsjfAsVJWQV4C0Ihz/JE+MvveHsc7k/MCbXo88o1ZnCACIZ?= =?utf-8?q?T5I9xayh2zbGmrmsbqFZ0XFb4KZKL+yMZWsvlmZvv0XqL4H2UqsK1Kx57ia4sE44P?= =?utf-8?q?NwxRa/QBNHlkfnCmsMPsw8W2c5cCe40auVlyNxLQlTpYu0+kVo3g/ua8Gs9xGqAxQ?= =?utf-8?q?diYB3XDAiJXERlFQkRwsYkfFE9tQSbqgJ/XWNfsgpij0GT12SLRV5l3qnrYbtzx8p?= =?utf-8?q?ijMBxQW1tX4DGuoZi7r5B0DwdWdt5eDscgfICsOGo018XvvFsdx51ReyqyNHl5hNg?= =?utf-8?q?/xT5MSPuGwUf?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 25fb4920-7f9f-4e4a-afbd-08dd83022139 X-MS-Exchange-CrossTenant-AuthSource: DU0PR04MB9496.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Apr 2025 07:32:12.9788 (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: hasNsyEoOO6GUGtyE7+y9uQd0R7YnoA0A6lZsegLm4kFduNlGstduRsYyKEJAU1UNI9XV1Bso4yng5r0upDmEg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI2PR04MB10594 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 5be7809b4a494e22ac79c07b99cfe8b2fa430ebe..15dc32b7a830079764520df10a143af1f2feeb43 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 @@ -1365,7 +1369,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);