From patchwork Wed Feb 5 17:18:13 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Frank Li X-Patchwork-Id: 13961603 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 3277EC02198 for ; Wed, 5 Feb 2025 17:26:03 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:MIME-Version:Cc:To: In-Reply-To:References:Message-Id:Content-Transfer-Encoding:Content-Type: Subject:Date:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=qejNUTEePKH5gvq/JmnTO+U/0WKgFhNfn/UkQibdECs=; b=rR4WRbZqxxPnHdT+wB+sH+vIZT UIXY9w2o8GUwvhe7Wmrhp2Vaq63v8aAchNRixD9BcmVWR3hscg1C5C4uXtJP6d1Y15O4GuafReoQp eWV1Soz/VLotdTgHto8eOR/js49HNlN5SubF6HlVuOac4WOVHfCgwim0NrnMvjzTReVywX5xMiSts 49cBHbvQwEFHm9ANl4mae9OiGtBPpuAb4KoPeh9H1T6xJPn4hMiw+o+lWp0xUnwSVHFHTXLGDUG+k LFj+wmhSRmZEqHWLVdwje7gt/n2V3NzudzTs62rck4xBK/egZsBR5Q2TO9tApJOsnJBC35PMGgoUp 1gWkNIAw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tfj9q-000000045d7-0HhZ; Wed, 05 Feb 2025 17:25:50 +0000 Received: from mail-norwayeastazlp170130007.outbound.protection.outlook.com ([2a01:111:f403:c20f::7] helo=OSPPR02CU001.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tfj3T-000000044SA-0cJM; Wed, 05 Feb 2025 17:19:16 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=VoMauvILOeGO71dd0nI/7o4sDU/ydVHfVuGphrqxegTutT80bgIAaGqt51Vb1XSWlItzAtX4s5Y+tG9NfJncKyfPsr2uIRaUIVVd96qKcVpxIGl6tJvIF3bvJkZxUdweoZywycdM4HKKci/qyLkfgJ+TUKzoB5ojnVuOA9luZ7El6GZ00MCE0d7hrLa6naDa8GYM5TBzaVqqX1Ct+0AQpEYRFGtVovvNzVmvV143um4h2BfXv0NKtKBkF65mCF2XxLPSw4zsU+RiuWRzLVp2CKObPXVj8syimE8ITilt8OtFzMY7uxZ0SZfEMGY24schkTo6MY8rv2DX4jLYUq+8Jg== 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=qejNUTEePKH5gvq/JmnTO+U/0WKgFhNfn/UkQibdECs=; b=LCVCliJJItQIQQcVtsDWxWd8VEk30hEzYI6AKcXz6UuBRAnnBEVNQNZ5WDEO/Y3m7YnUs1ruFC6gmXajkrV4his8dgtYV4GwiJ/OTeP01ZlH6F8f5fk8jFPJTI9PFjk1skuDvs1T83Q30wdQ4/a/KGStaT9YjCn0IS0kC1kKl1NuCgOVA6ATay9Fb3WRPrfRbDZEbUUKde2+GK6UW4tG3aBCIFNcEjvqyhTWaGjb2ZLRdPXVO/ERWvpegd2X0PbJ2OoJAzgNIbTjklnZs9PMIivVg+Nj4ao2m7HEcnyB9EiYOLtdsTwcAUm3KDKbiZirHHI9pPJytMtscNw7ebAzdA== 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=qejNUTEePKH5gvq/JmnTO+U/0WKgFhNfn/UkQibdECs=; b=hUCLd5r3UrgPHFQkRucW2njtC7WzXMwtTGVjwDIo4Oru8zOA7MyWCKJRQTpmeDcCBeD6bSDBzNqW8ShUC9yPo6fSYgf6qCKkfEQCXX6fKnfzwOZgtfhykNbVpmplXPeps0P/ly1fKM1VixUqeeUuZNoP4VTxMxZqBoMne7tSzZD1u6v5+KXhp7hyCcSkYRpUVSSGHMnzxwRGumsBdMVUaIM8+zC7vaOvuyu3jX15Hh2TOE3GqaP06WxJBIRQfCuSHsjiyjgFVQvBaWiitElRqtKxKB295SflS0MBZpvAPOkXJ5oaFfVT7SL4wz11P6yFmq63pDYQWdnYoRXP0kTIQg== 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 VI2PR04MB10546.eurprd04.prod.outlook.com (2603:10a6:800:274::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8398.24; Wed, 5 Feb 2025 17:19:10 +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.021; Wed, 5 Feb 2025 17:19:10 +0000 From: Frank Li Date: Wed, 05 Feb 2025 12:18:13 -0500 Subject: [PATCH v2 04/14] reset: imx: Add SCU reset driver for i.MX8QXP and i.MX8QM Message-Id: <20250205-8qxp_camera-v2-4-731a3edf2744@nxp.com> References: <20250205-8qxp_camera-v2-0-731a3edf2744@nxp.com> In-Reply-To: <20250205-8qxp_camera-v2-0-731a3edf2744@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=1738775920; l=4608; i=Frank.Li@nxp.com; s=20240130; h=from:subject:message-id; bh=GWf9VAn+sdqu9KvC6irFudTvhz5QbnJbT4US8Oi8BGI=; b=rqT7eNb2NFHms6dRN42otoHsS2a7bRB63qdc7ksF/Xjd3aYjx3Zkf79rF7fLWZWQt7Dj0Kgyl 9ntzZmTSc0OCl1Y9fL5/wPZqoaNhEPbpVmuRBGMFTEsWq46ASszbiyw X-Developer-Key: i=Frank.Li@nxp.com; a=ed25519; pk=I0L1sDUfPxpAkRvPKy7MdauTuSENRq+DnA+G4qcS94Q= X-ClientProxiedBy: SJ0PR13CA0001.namprd13.prod.outlook.com (2603:10b6:a03:2c0::6) To PAXPR04MB9642.eurprd04.prod.outlook.com (2603:10a6:102:240::14) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PAXPR04MB9642:EE_|VI2PR04MB10546:EE_ X-MS-Office365-Filtering-Correlation-Id: 24155d83-fe6a-4249-a21f-08dd46093425 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|366016|1800799024|52116014|7416014|376014|38350700014|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?q?c3q1Qjptdtv6hMqaK1vvHN4LrkV3n8w?= =?utf-8?q?uL52whjYNhN6POyXlv6KYoxTkr72pe+aMdR715+j6G0FrtmilFAy6MxjSefGWmOFV?= =?utf-8?q?FqPFv+tdFjhUahleCJshCTJVvaDa/GlV+A/vBqG4QGfZMDoggVwQvO841x0IBBvkg?= =?utf-8?q?Ml9CWjO+Ar39gy3V6pRoYCvultCoBq8zoRpXZX/kOZEdeK6P+uuH5pjj7KmFynS6N?= =?utf-8?q?2zUqrrujphY5gnoF0PmJveFaMtUuBROYcSpmmboGGgSTql99QTuIJb2yI96ftJFQk?= =?utf-8?q?vZHjV4LENGHenBgUJ/2Cedk0gCF5VW4fNcear5BkfaeIoY+BpYXG7VCpukhxSwRnO?= =?utf-8?q?IPlrUF8HdKqSb5B/5pqeoYgo5D61mD9pgsz0gWWNCm+I25PaXT86zfQXjwMpDVfrx?= =?utf-8?q?vwf5CJjCyrMSE5Fg8W0Sf5Ouw+8dcLydue/dBzDRZvwznDDI3H1l3Bd/LcTJwbNvt?= =?utf-8?q?3UNaNbCzFEmp+kWC3DVjf0Oytw31ckYuLNp4+skMosJnaoI83b+N79qlOS+ZUrTRX?= =?utf-8?q?jOO26J+hcYl9QwWQOeGbAgVCgBlEuFsdD/PzrEUOxepcA3QFU9zj1Mx1iTm346pRv?= =?utf-8?q?3gOC26S8/hW3eYv0DYRZDo5qSoJxxy8KmCU1fYT5pqahW+efCFeaUyU5Kvg42EZML?= =?utf-8?q?FsaZNckfWo9Lp89SObIUWY8GHkdwbj7Tb1G9IbKb5hXoxZUJdEg7PyFQbQ+BZdMBu?= =?utf-8?q?0j9kdxe75WodCiMdKUlLuOqTrD1TW8RGTh19HrH81Qo9VtjV1nSWbe0xFc9/0VJEl?= =?utf-8?q?cKtdma1HlI4xsoMMi9TQBvvxk/WoQyty2ivAN1jGmLt7aM36SheuoD8xzMPR3ZkZU?= =?utf-8?q?UcHm8KHy9w5dhPBHocLGHIbeWjJM62LowxKp2IeZXhy3G5OWQsRMEY01UMw9DVeyg?= =?utf-8?q?ugObyFmECb77bQn1tJTemW0Rz62pKG80dxteStS3+G4Z1Y37CjBF8We0wlf7F6jHW?= =?utf-8?q?UwlbCYQzEDOarAwXc17+0VyEtXKSJ5wIa3k4gGiQcabfDvtSlXD+4GY7ghbtnfYPF?= =?utf-8?q?AvKBa1T3VdH6ulb3zeOXAynxkT+5/OW8zOW8RN1TREIQ5FDVmOg2YCuwbFHSIZJvO?= =?utf-8?q?Bdsz7CoMibG1V4CaG9X+otxibO/Azc0sMwX0psQ+wubXaFibc80uKlQ9RBZBqAPfa?= =?utf-8?q?H/L/AZQVC5moKHnVuWdY2X+BNtSN/g/Fd4fbeBadxHW7pGX2p/u/C4Z7Rzf2IoGMV?= =?utf-8?q?ft/zRORDozk8ON25e2Ek2OcSXbi19UAMISVro0bY4UmxTSA2TDYmQ4y6yQ6Q9e2up?= =?utf-8?q?8p+VlxqINHZMukqng2zim/Xms/t3Hdkb1jp96i/rWx9G3exLvEzEmCqRzv0TWrEJh?= =?utf-8?q?y2IA/ooJ6TVyp392RdRxRofW3i+toRkZEHnFjbaKVpAKNXS3C1fCBkcz12oBwDrXv?= =?utf-8?q?x4DU26OJRXUfRJr6Id48V2BoBbu7Q5EOw=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)(366016)(1800799024)(52116014)(7416014)(376014)(38350700014)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?pSpeT2ysepFCjnkOMGC5uKpS0EkS?= =?utf-8?q?1Ar9+4jcAuv2/RZD0fabvHfIHv3QaKIsbMSxDTv5vYIG6TxRvTJxQU/4xjP+xHNJ5?= =?utf-8?q?yIIYVjNH+gyRKTk5UlRfRJtOm/HZ/8bbr2DWhefLQipzhm6QeUOjXFWmQHBPP3C5v?= =?utf-8?q?NiZ4KEiO+bEPwBOmutAWjp3NwxC6UKzhJ8B3M/v9hR1PDUNw5DeTWQmzm3YIoQPTK?= =?utf-8?q?XI5qt3i7137bKHFiiEa3oglUjzezoilNKYyNycQmVfyjpdHHouOooVejldZOehwz4?= =?utf-8?q?gaOc2HHIMq0mpjTjK5aP2dm+iWdRlzH8zzjDz+eDHYQGvHPhY5K9+W+1sO4Yj9+hQ?= =?utf-8?q?AFT6s3mqkfLtbQiHPKswS8IBUbg+Be3/FxaV+IOUr+pY+wVzVyf8aEY28/bNQpU4r?= =?utf-8?q?ZPZHYhSveTBVQ8ZK4iSzJsG34e/y/fi3ef8GaHwDLOw9PbhurJ+UAR0nD+1Aw1pF1?= =?utf-8?q?HKN3QqGq1bxlNHtB6u67S3J2KR19ffCtY7pk8q03B01QO0vui0Iu9vNk0CTqG4bXD?= =?utf-8?q?sMc9Xf4NLWxfKes9ehD3ZXyf51NC5S95sdvZdPndQ+p+9arGJN+s2o68QrtlUmDUR?= =?utf-8?q?qz84NAAr3WF09jMA1thMwuU9/i5GVqlEz7mjrOf4CczOULQhdMqqOD9XvnsN0BqFd?= =?utf-8?q?MT03NC5NipV7i7c2CMztanCWIbRR5VuwQ6yracOz6snP+P6v/TBv8pQ+XrWdIeEkZ?= =?utf-8?q?cekgSZ2cKPi+QqPZGeaGLkyeSeiZb6SG0VeYHQ/iRczL1F1bon9Y4rZpD8HyhnnNU?= =?utf-8?q?9IkEFcS4tfoMqxVlI3GLFsRoj2QLbi30k9ArmiVNR1qzmVA6F6Lyeq/gcBDzfOKeN?= =?utf-8?q?QyIjCsn5n/7dYZm6z89a4zSRZDJqsAoqAqgOf3qzazLPOCLgO8PQydchphhxfja4b?= =?utf-8?q?mbEETbE/rPSFTBMCLLNiAmWR5j2tlyLXn6cMBVTpOB94U8GHNZpYNy9DUg1F1C0pe?= =?utf-8?q?bEjpZWKgSxx1pQPnMYU6HxpcPYiVpbeiNYqgRnllIs5wwSy4bRAez9I/q7aPwuVzc?= =?utf-8?q?pW9ohuMSsvNzmL1FAabIf8C+UD0xy75rRJ/nedNPgtjjNRuwBcPVRBVbFTIVskFg0?= =?utf-8?q?4WTlfVDEKJzkAtc1y54LRRxiaOTtcawF2UJToINcKB4pmAvDRHo4iDkeiDJcAcrfY?= =?utf-8?q?t7+cCfpcfxulki5cX199WpxtykaUJsE9ajP77sjg2JXBciMO5jsahPAkp5M/L36p/?= =?utf-8?q?nYIiynczJCWoIXYbiYQGcq0lU5xVZoHE/wuEynuvi2V4zbG4ePQdbALZzS40H4JXs?= =?utf-8?q?vAMpRAh+7q/VRgVZlOzTHIjB02q13gbmP5A5rp/ZC5nSSK4vtwDKuOo3xejo8h6Kb?= =?utf-8?q?4jzMQSk6hutSztdckfuoFsxNGeL1fBe/wFwb4RT7LDrTutx1f3UoP63e/Zrzr3luX?= =?utf-8?q?mcoPs93a/9e2cxQTkUQ4Lij/dae7+mkRPZ5caqvjckcBcOYObD88VbObcOSy0s4Ay?= =?utf-8?q?qE9SLm40DsE8IKfL+lVwVHJyLzZd+Mn3Ju/aBPbvuDK598pzpndUHsqF4k9O+xUEw?= =?utf-8?q?7dsOqiuai6l2?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 24155d83-fe6a-4249-a21f-08dd46093425 X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB9642.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Feb 2025 17:19:10.1009 (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: FGJAeYvg5skPHnXGcDPUxpepZy4HzVOFFO4PPsMEtoRMRdiNEx0/SW/+SU9lQiZYnlFhWKB2G3OJB6L7VZHJRQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI2PR04MB10546 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250205_091915_353030_1D9A5420 X-CRM114-Status: GOOD ( 19.73 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org 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 --- change from v1 to v2 - none --- 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");