From patchwork Fri Jan 31 21:33:49 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Frank Li X-Patchwork-Id: 861132 Received: from AS8PR04CU009.outbound.protection.outlook.com (mail-westeuropeazon11011007.outbound.protection.outlook.com [52.101.70.7]) (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 D39361F4E4C; Fri, 31 Jan 2025 21:34:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.70.7 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738359269; cv=fail; b=u2KyJWjPLzX9s9OtptT33YWqIlSUHWnEenRrVpTv6kNhK8z5EE/h4hBeqE137Ne6Uhd66OivnQs0TJEfN8qNhof3oy+PzMvWrWLS4vz+Xmc7WGBS/CgMTBEIk2lz4MOyn6kPWL+0b2iq0CAbpkH6HpTXiCHqls/UfPiOwT/RxKM= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738359269; c=relaxed/simple; bh=noz4pIlNf1mez14RLgu5rJEysQlETRbqvH4Qt0s7Has=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=nzpTFvkI1yD3nKJIzYHr1zmB7n4MvGJMKenX9n4yH9bVxcwszPjKCPGr2uON8rnJw9dSxGpuC8YmtB06mM7sSyU1shrNibhumT+yKyWR9c6ojUXPg2DgDrrV/IgOaw6/G0TNZN89hoP8IXo/bIA09mAd3PEtODkgwL289aWIoew= 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=HP+uanGl; arc=fail smtp.client-ip=52.101.70.7 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="HP+uanGl" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=FcqID03unl45d2vINEQnOyBQvcZ8FE7flOBfyRgZhLmebexe+B4fa00cOY96tbVas5wFeHYPoFwBXGWi69HVzmrU1KeFHSk/gsYhE3j7yEAxRXdPo2JonSZbIHBSwyPFtu2HDwto6sRKR1ylIiH/JLtyQgn9C7SL76UfyD/HYaKm/+l6PN+9hTtZVz4FGEKh6z8gqk58lDD8NEn5GXfY3JqIWbXbMILlTOtE61TYSOCFrWleu08BqrIu0TQu9ZGh2RoeGIa3mI7bIUAcFKZaspmU1KSS/nypBgFzYJRt2UekeYF186wrAF0jKJei+2rqtclNNL7eKwKH3AarqjLaAg== 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=OGklPLs4ngtTFBU3SRLFmS2+Ps/QfmN7nqU5P72CeQM=; b=LZLWjOlD0HIljam317cqthv2LqWDzQIK3oJAGyW4SkyP35kkWaWhjhP2nHhiKXJUvkmXFV9XWAZJ+CtLq7B5scPItxdWoLxRHPQlYBSAuhbFzu6+P/gOu+CKzlDuQp5Hbu8/fmYoixnwq0i/7VqIM4yu2qx4yz0JrGC/UbCGByXYzCimMVb9puLI31vXHLcMPdGorIc0c4b4K6FliIYYnzCGC5KIKYSs1alHL4T5rSEZouqNqwf6MG4QJbLUtfTWn17QaHO5Gp8yvhTg2lvumwwIfOtVRt8ewf9v/Er51BeMTWQU3cK2ZkiFixVZB7mtk/LpYJwmGjYfgoI23Ha13g== 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=OGklPLs4ngtTFBU3SRLFmS2+Ps/QfmN7nqU5P72CeQM=; b=HP+uanGlxu0lqVHKmu7DUsjw4jHB4VW9k1EYJouz/ksgmhrfxBbWFS7bO1iFZTc0cyH6vrV8eFjffuDGTcPXf9qyjjRNUqA1hpAwprLNokXyyh1s4v5XGKMCZGPb1m+WYdpyM4q43ZpOLi0H0Jd2qTt5+LaKbLsYzkFxRiV3QCl4UszNG8/SC1sf2pkM+kRPhvSw/KJlzcUc3gIm4AZ9vyoPZpcLcCdfY/7k5qS2+9MYe7iLd6VSa0gEQWdd7sfHD4RQpna3gxOBTVjKtO2QFbvAseJozysg/1lzN9ukW2oyprNO+7ygP8BHHk8HvELKCUGXtvGU6ZowEQ/1SK7gkg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PAXPR04MB9642.eurprd04.prod.outlook.com (2603:10a6:102:240::14) by VI2PR04MB10980.eurprd04.prod.outlook.com (2603:10a6:800:274::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8377.22; Fri, 31 Jan 2025 21:34:23 +0000 Received: from PAXPR04MB9642.eurprd04.prod.outlook.com ([fe80::9126:a61e:341d:4b06]) by PAXPR04MB9642.eurprd04.prod.outlook.com ([fe80::9126:a61e:341d:4b06%6]) with mapi id 15.20.8398.018; Fri, 31 Jan 2025 21:34:23 +0000 From: Frank Li Date: Fri, 31 Jan 2025 16:33:49 -0500 Subject: [PATCH 04/14] reset: imx: Add SCU reset driver for i.MX8QXP and i.MX8QM Message-Id: <20250131-8qxp_camera-v1-4-319402ab606a@nxp.com> References: <20250131-8qxp_camera-v1-0-319402ab606a@nxp.com> In-Reply-To: <20250131-8qxp_camera-v1-0-319402ab606a@nxp.com> To: Vinod Koul , Kishon Vijay Abraham I , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , Philipp Zabel , Laurent Pinchart , Mauro Carvalho Chehab , Rui Miguel Silva , Martin Kepplinger , Purism Kernel Team Cc: linux-phy@lists.infradead.org, devicetree@vger.kernel.org, imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, "Guoniu.zhou" , Robby Cai , Robert Chiras , Frank Li X-Mailer: b4 0.13-dev-e586c X-Developer-Signature: v=1; a=ed25519-sha256; t=1738359234; l=4573; i=Frank.Li@nxp.com; s=20240130; h=from:subject:message-id; bh=noz4pIlNf1mez14RLgu5rJEysQlETRbqvH4Qt0s7Has=; b=fpFhJrRGhJWtTPKyj4D6mSi5BlMnEJa1oviePOTVUb3oWXz4NHXTRDZLGBZfFrfvQ8u5ptN/N QlaoGtEpk2XCBxbT8SSj21ePcB0ymQHdzaFeiK3/WRhGPObSyBRApp5 X-Developer-Key: i=Frank.Li@nxp.com; a=ed25519; pk=I0L1sDUfPxpAkRvPKy7MdauTuSENRq+DnA+G4qcS94Q= X-ClientProxiedBy: BY5PR04CA0007.namprd04.prod.outlook.com (2603:10b6:a03:1d0::17) To PAXPR04MB9642.eurprd04.prod.outlook.com (2603:10a6:102:240::14) Precedence: bulk X-Mailing-List: linux-media@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PAXPR04MB9642:EE_|VI2PR04MB10980:EE_ X-MS-Office365-Filtering-Correlation-Id: 626718d9-a3d6-46ef-4577-08dd423f0792 X-LD-Processed: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635,ExtAddr X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|376014|52116014|7416014|366016|1800799024|921020|38350700014; X-Microsoft-Antispam-Message-Info: =?utf-8?q?23DBn0zMVUsAwpKTIkDZHsYBhCYWqOX?= =?utf-8?q?IELlnRw+3ZKMLPNRTZdtamJOzQAWs6N+pcZBmcMDLiyfauk0qSb5Ui3uAnCHgbOCV?= =?utf-8?q?NJp1wvkvV3ODb6KGF6lNvD4chvfjAGsHJFbB8hLRMRNElGnecQHQMEaSBBQLBITnH?= =?utf-8?q?W83KhViZBvCJZp4qhE2/fnHpm7WiUAw4g91eUb9DQUgr20ncPLYIYR43X6jz1fORb?= =?utf-8?q?0CY51dylQxPOBEQcsenWQWhGcZPL2SneNTXWs8a97FeFZ0yNsYr19A8oOhAqoayv2?= =?utf-8?q?yAxEbu3L5BWQAEQvOSR4nBJDceSNquYSUXzqC45DPk3SBNV6gzxkOReSfl3FyXxY7?= =?utf-8?q?q5Z3DOqwiJwst5yqXut0YapdH2VwvtJUKPOyrlU8dVTCkfSaLq61fxj8x9qmGKbRM?= =?utf-8?q?kLxd96XFCePtC/EHdPeAfGaRWo3d/VV/Cjy/TDH2+N4fbBXeYZVP7f1VZhAaRCn4l?= =?utf-8?q?boIxStU8rf3jJe7QgA5IZC6gO4+VtftUGlrJkXJX6S8mUr7sIRXKS4kR19r2oq1Nl?= =?utf-8?q?qKRmAeNGnfLBgmXD8z9tm+8vHYtyN/8f1Xu76AkFFLLiOa6iPe+6SdoPGeSw8fvPL?= =?utf-8?q?ssuHH/y708VRQ8KEZD252GLuBWHq5zrqJbt1dSwRYbKeeXlUaVT7/ouGQjxUh6nqt?= =?utf-8?q?CwkUOsUeuiycYvjC08jAvZxYW9qT3FYadp2FFWZgKprm6vzfD5G0xjRWssAKA69nq?= =?utf-8?q?TKJRXeay4ZX1Yq1G9WVkFkHWF4rjbertk+aIv+NfdwE3Lrgtpmc5G5oi6iUcAnzV3?= =?utf-8?q?4FzdLgnOI21R58xqRa0s5yv3nzSho2pxNQqy3suU5pxungMaLZ9MbEtBe4powP7IX?= =?utf-8?q?3qPFYMJd4M1G83cC8JUvP1IQpHB015c2d3f+mPjr8J4IkDnxtQG9M2asGm/RuURr6?= =?utf-8?q?BJz8W9F2SZfZnh0WUB6jYgiN4xAnu+XQa4d0+g8a205pOqeW15NIfSyNGeeyPRWZp?= =?utf-8?q?63NrPNY07n8qumij/dc+psh7P0jezmDGZrvXPYUHO0VXB0XDF8rVFijyuaBLR+wlX?= =?utf-8?q?TzVeBUFOhSfHEBinJ7rFxNFMDLXFAJlq+Qi6+rMEt8DMr0F0BQ7g+e6tAGWuZz/h3?= =?utf-8?q?U1fZZnAYjfeaPONFXOGgzWo+7vhyWdVjsvqr8l1IJV5yiiPK+DzbD76YoC0Rv+cxm?= =?utf-8?q?C4Gkf0AiqlQd79hGMhymW+Mo1ZhwoCQ5HGDDL7rquNY0J+wJBsbmv1pusRbdOhTit?= =?utf-8?q?By8E4yh7dnMDl/Ng7WbtK6XFH2XN9yFMMKHW8FJ8FFNVORH1p16IXldnmw35ZLZK2?= =?utf-8?q?8vKOekUNZk0QW/Fahd0sqPAz6YMzMijQklcZU/1ML6SMuJTOjYZpp1HrrwElf5OAM?= =?utf-8?q?0anPS85kUQCWyxcGEPDC7ERM0yTw2OHnMwgyaYsSNLD6Qs4+CsVBrj8yPoGPGnpFE?= =?utf-8?q?0z3+eIWaJ1FjK1Oi1Ts+JtBK3KSPbX9kQ=3D=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PAXPR04MB9642.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(376014)(52116014)(7416014)(366016)(1800799024)(921020)(38350700014); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?92e7YRhByF5038hsde3goRP+L3W9?= =?utf-8?q?xmmK4d6WwIkjYGLgVZ+0vb1QFwXQGxrY/ZT+5b/PKrvrDefvqhOikOXoRxwo+Np32?= =?utf-8?q?ZpY4MM+sLlzkX4ZhpmGePH+A0ACFRCqBa8qY4D/5U3gy2z0/lLI7fbp6yCXGyucDh?= =?utf-8?q?r5xr8fi0m6VIHfGe2+2/rLpvIbDBrg3poPGOAKsA/+oXXCQxOSMD3x6CmdLdSsAEE?= =?utf-8?q?0E2TIyHnVdO45qapz8tpCqCQuQiGkXLTM0Dt+Ar/rQ8xa/8u3CmJkU3JJa6YCsp4o?= =?utf-8?q?biroRBYZs7PxCWzDt2qh/D8O5BqjUr6lnlz/Jpfyij+jUGYAG0+Hv5ejldHK4VlPt?= =?utf-8?q?eTaozmqrshL9t0mi3okQ3GcksNZIk4+Z+Bq0KFJeQ9SPY7wdGSI+VHwERO3NSrBuU?= =?utf-8?q?PdSPdyiF6tYZmEIbm61YTge9HiEWNqIGvKPRQ6l2dpeSHycxfsp21sNKbmHbf5mJG?= =?utf-8?q?hJp/XvN7CLyOxqjSmHN7UFJnLOkSwGzta0f3W/TbeGh9BJCYkyI9NkjzTRp679feU?= =?utf-8?q?+7Agk/WALQzUOBx8bdaBV81iULJAhAQlVCnqnq8x7AC/bv7w7Hp0CvbU2Z0Rt5QrD?= =?utf-8?q?zAIawz3xWLekbNR4Ny57uOgMHoxDS4W1k1GpdTnIlraNN22j529CpBA04E0W+3cKh?= =?utf-8?q?ky4v535wZU4DF/q0YaGC0qFxFhf+Kwr1YoNfRa5Tu+AssXMHiNsw8THCxwJAiM8Be?= =?utf-8?q?GRgnJ11o1LgL0TiYnUUUi+0KsDrllJEEjyGxWmsizZ29PyGMVU/95cCbrhdl9uv/L?= =?utf-8?q?5ZYfpAIXzgnAsLx8GeCNk21ndlt+nrxsO2eviKIDWmHiuC8xKCGaYlW6MbMcsJAKG?= =?utf-8?q?9c4Fm8RoyivuZZ5F93u8mYQaWH3pPMYOgqedEeKs/W7DzGh2jR4ynzjZ+O49PRBzx?= =?utf-8?q?O2fGGpEkvG3R9C96bzJofJ7HYlvaRRiEw3dv83xHAD2mUhUR1Qa+vF5CRULgdMsRT?= =?utf-8?q?OqBrBuD2ds8GvixMEu8ZhiRA3rDr16K0I+h6vTpDOfrohhT2eBpP/ctTeDZo/+gLP?= =?utf-8?q?+HO4AIGMnnDvAgK620jX17Y+TYCnbMReZipNs4zKNOY93tCDhc43lqWdjyCJ5dnAg?= =?utf-8?q?kn7H1ODPOiwqpRLQYAVMW+BMsXJR/DT4aCH9iVnXUI+1I0TbNVnRJ0wSzhVLMcZua?= =?utf-8?q?scPtOrdvnCehiRVYbnZA9gjyiLBuY2YM02Z1LR6mSLyrBUNh+ZXrZPHH2R5hkbyg6?= =?utf-8?q?yRwsP6QPVoI2Tbggdgl2Jri01zQ4NRcUv5ntp30j4rplavzqStkZIby893sA4Z0DY?= =?utf-8?q?3CD6pa8d0TfXgednUfyYkrYCLXzot8yGJDZuNdy6a/qnthzx/OVGoRTyav6iGawfg?= =?utf-8?q?7LjzOZ+wDTkplOOSAjGPPmtfIxWd+vKswvzu0eMOtlbEaMmcWioDSypdMLw5nPmln?= =?utf-8?q?qzHa3RKynPD5tg+wi1KpmV6v+xjWPkfHuJ7f6Q7qvXl2cfY00j6NZA+X3iUFoGP0c?= =?utf-8?q?RxBwjuzOwNo6jwumegu3PIioE7YAbVTF9Na7ii4Ofqtn38z6H4MqQgbY=3D?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 626718d9-a3d6-46ef-4577-08dd423f0792 X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB9642.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Jan 2025 21:34:23.4927 (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: w4reuE85Nyp5HvJ61hHGoIgjXuCCnon51uwcAnEF16rFPaw6qtIWrkAjTPxqHPp/QOPVRWFXG+0zzfyM9M+RFA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI2PR04MB10980 Add System Controller Firmware(SCU) reset driver for i.MX8QM and i.MX8QXP. SCU Manage resets for peripherals such as MIPI CSI. Currently, support two reset sources: IMX_SC_R_CSI_0 and IMX_SC_R_CSI_1. Signed-off-by: Frank Li --- drivers/reset/Kconfig | 7 +++ drivers/reset/Makefile | 1 + drivers/reset/reset-imx-scu.c | 101 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 109 insertions(+) diff --git a/drivers/reset/Kconfig b/drivers/reset/Kconfig index 5b3abb6db2489..99f6f9784e686 100644 --- a/drivers/reset/Kconfig +++ b/drivers/reset/Kconfig @@ -96,6 +96,13 @@ config RESET_HSDK help This enables the reset controller driver for HSDK board. +config RESET_IMX_SCU + tristate "i.MX8Q Reset Driver" + depends on IMX_SCU && HAVE_ARM_SMCCC + depends on (ARM64 && ARCH_MXC) || COMPILE_TEST + help + This enables the reset controller driver for i.MX8QM/i.MX8QXP + config RESET_IMX7 tristate "i.MX7/8 Reset Driver" depends on HAS_IOMEM diff --git a/drivers/reset/Makefile b/drivers/reset/Makefile index 677c4d1e26320..31f9904d13f9c 100644 --- a/drivers/reset/Makefile +++ b/drivers/reset/Makefile @@ -15,6 +15,7 @@ obj-$(CONFIG_RESET_BRCMSTB_RESCAL) += reset-brcmstb-rescal.o obj-$(CONFIG_RESET_EYEQ) += reset-eyeq.o obj-$(CONFIG_RESET_GPIO) += reset-gpio.o obj-$(CONFIG_RESET_HSDK) += reset-hsdk.o +obj-$(CONFIG_RESET_IMX_SCU) += reset-imx-scu.o obj-$(CONFIG_RESET_IMX7) += reset-imx7.o obj-$(CONFIG_RESET_IMX8MP_AUDIOMIX) += reset-imx8mp-audiomix.o obj-$(CONFIG_RESET_INTEL_GW) += reset-intel-gw.o diff --git a/drivers/reset/reset-imx-scu.c b/drivers/reset/reset-imx-scu.c new file mode 100644 index 0000000000000..d3074eaad4c99 --- /dev/null +++ b/drivers/reset/reset-imx-scu.c @@ -0,0 +1,101 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright 2025 NXP + * Frank Li + */ +#include +#include +#include +#include +#include +#include + +#include + +struct imx_scu_reset { + struct reset_controller_dev rc; + struct imx_sc_ipc *ipc_handle; +}; + +static struct imx_scu_reset *to_imx_scu(struct reset_controller_dev *rc) +{ + return container_of(rc, struct imx_scu_reset, rc); +} + +struct imx_scu_id_map { + u32 resource_id; + u32 command_id; +}; + +static const struct imx_scu_id_map imx_scu_id_map[] = { + { IMX_SC_R_CSI_0, IMX_SC_C_MIPI_RESET }, + { IMX_SC_R_CSI_1, IMX_SC_C_MIPI_RESET }, +}; + +static int imx_scu_reset_assert(struct reset_controller_dev *rc, unsigned long id) +{ + struct imx_scu_reset *priv = to_imx_scu(rc); + + return imx_sc_misc_set_control(priv->ipc_handle, imx_scu_id_map[id].resource_id, + imx_scu_id_map[id].command_id, true); +} + +static const struct reset_control_ops imx_scu_reset_ops = { + .assert = imx_scu_reset_assert, +}; + +static int imx_scu_xlate(struct reset_controller_dev *rc, const struct of_phandle_args *reset_spec) +{ + int i; + + for (i = 0; i < rc->nr_resets; i++) + if (reset_spec->args[0] == imx_scu_id_map[i].resource_id) + return i; + + return -EINVAL; +} + +static int imx_scu_reset_probe(struct platform_device *pdev) +{ + struct device *dev = &pdev->dev; + struct imx_scu_reset *priv; + int ret; + + priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL); + if (!priv) + return -ENOMEM; + + platform_set_drvdata(pdev, &priv->rc); + + ret = imx_scu_get_handle(&priv->ipc_handle); + if (ret) + return dev_err_probe(dev, ret, "sc_misc_MIPI get ipc handle failed!\n"); + + priv->rc.ops = &imx_scu_reset_ops; + priv->rc.owner = THIS_MODULE; + priv->rc.of_node = dev->of_node; + priv->rc.of_reset_n_cells = 1; + priv->rc.of_xlate = imx_scu_xlate; + priv->rc.nr_resets = ARRAY_SIZE(imx_scu_id_map); + + return devm_reset_controller_register(dev, &priv->rc); +} + +static const struct of_device_id imx_scu_reset_ids[] = { + { .compatible = "fsl,imx-scu-reset", }, + {} +}; +MODULE_DEVICE_TABLE(platform, imx_scu_reset_ids); + +static struct platform_driver imx_scu_reset_driver = { + .probe = imx_scu_reset_probe, + .driver = { + .name = "scu-reset", + .of_match_table = imx_scu_reset_ids, + }, +}; +module_platform_driver(imx_scu_reset_driver); + +MODULE_AUTHOR("Frank Li "); +MODULE_DESCRIPTION("i.MX scu reset driver"); +MODULE_LICENSE("GPL");