From patchwork Tue Feb 4 12:41:13 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Peng Fan (OSS)" X-Patchwork-Id: 13959140 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 9327BC02197 for ; Tue, 4 Feb 2025 12:54:08 +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=UqDWQKTZyqxTxaDKQ1olaPCS0AfrUcUd5yOLvVszXDw=; b=f3ybz2aD3KtK+q3GyP+yvrYn6h KTFIcU7lXhMQxBZdbvZitWM3acIor1QMY/rmbXyLiKfXEuXgnSDP0aLL0uhO+uf/PT2EctWsys/qO P6bwMqupChHX3/hh/FzuuiomaXJ0vjgw6ZvRyR8e5OzCWoQmDathWMDbrM9W/pDrGozXBonD3qcla C4IKnrVLoDUtGEUNBqYzHvKJig46GvAqv3UsdG/u6/I2xjpx5LL2Lqcy6xXS0qS6eB9ksxRLbdw5w SbMCOoFHbhuRAb5RddcEcfmLr+xvUM9H1jqHAejx46hsTKn505qvpbOKO8IQflHjnX3RRkFQZDe8N GBPRs61w==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tfIR9-00000000TJF-3coi; Tue, 04 Feb 2025 12:53:55 +0000 Received: from mail-am6eur05on20624.outbound.protection.outlook.com ([2a01:111:f403:2612::624] helo=EUR05-AM6-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tfIFp-00000000Rz2-1NeJ for linux-arm-kernel@lists.infradead.org; Tue, 04 Feb 2025 12:42:14 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ewQXMl6TRQRkVhXiqDYETSgzZS0Nbceb4djbuw5bUhQGJ7sjr7s+Zvr1/TGd7Gsy3hKHAojZjytHiz4wZVsfBo+HGDXHuSNWv+UukgMBlsCcNKX6QeiRyfaLu9guOlve9/b/NRcj+cnxpHwm1fNzwNdgvp12P215gfoepd+C/3GebIq8uB0u9nuECs1wbiBxUGEURqCF3xCeroev52AZyVQbd6O3UYmTHabAch9Znp/rIE1w9pgUinvKSI5/YyeAwJy9sOovaMWRooEOGNkWLD1VWdpu0GwCwQXl2w0+iBAAiqhye+QLFTLis+Y2/BUa5GqxTOZetqPxHrJQ+PokxA== 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=UqDWQKTZyqxTxaDKQ1olaPCS0AfrUcUd5yOLvVszXDw=; b=mN69kOrtivUvhqEXs74Bv/6op8kYhQc7Ox9Uc6uw/h1NAsvgiMXdYgj/BJhe3tVq8kiZ2566el/BhEz+fHKAHP0uPGQyIGcChFqf33Bq0ZKZMLXXtX0o2rwcv9lRhwFFqsOaKTyjdJg+EwrmNt5o9SKTzBqvu4a+gGdhc3der9jVJ8kKL7cQNgv23E6pYoO+WYvpqO175lIpr2Se0Fp4wn+b+A4fwmaC+zPa/HyjydRgFhRLLWhhQKcxJpRYJxrcuMEEm/ZSG1to9HDbWnl62Pc7QfTlO36n5hfQuGEF0KYFfVrVCwwA2By5fdnfAJy/xPswFYHXRhsYJYMszszOzg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; dkim=pass header.d=oss.nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; s=selector1-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=UqDWQKTZyqxTxaDKQ1olaPCS0AfrUcUd5yOLvVszXDw=; b=qFp256RHBol1K83KMUX3x2VmHbX+BYpSwf3unD4tU2venh1SVvjUEw5vA5OcmTJBfahWsFAMBBaKlyrkOXLediFBWxaYPRXCy2/imtX4gxmgwlY7KQ5tPDQqntzt1BSR1sK06ZXa3BF+zDXW+n6zQvGSuv+oMk6kOdK0+PiAxyAQbtpn3l8+C9F0NbaD/9Cmw6k1Q2r96uHPOZ8BM3gmS2orrzcaXKAO0wHpW4SiSDFHnCzbfT1X6UBlsbDMSTtc7Duyxebti2Du6yd4v/LM//kKIlLhXmc7fd3ACNgw53fQ3QzzxSQTz1uMYJPjIw4jdQCj3DVu6PnpWZ1qYlIW6g== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=oss.nxp.com; Received: from PAXPR04MB8459.eurprd04.prod.outlook.com (2603:10a6:102:1da::15) by PA1PR04MB10889.eurprd04.prod.outlook.com (2603:10a6:102:491::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8398.25; Tue, 4 Feb 2025 12:42:10 +0000 Received: from PAXPR04MB8459.eurprd04.prod.outlook.com ([fe80::165a:30a2:5835:9630]) by PAXPR04MB8459.eurprd04.prod.outlook.com ([fe80::165a:30a2:5835:9630%3]) with mapi id 15.20.8398.025; Tue, 4 Feb 2025 12:42:10 +0000 From: "Peng Fan (OSS)" Date: Tue, 04 Feb 2025 20:41:13 +0800 Subject: [PATCH v8 1/2] dt-bindings: nvmem: imx-ocotp: Introduce #access-controller-cells Message-Id: <20250204-imx-ocotp-v8-1-01be4a4bb045@nxp.com> References: <20250204-imx-ocotp-v8-0-01be4a4bb045@nxp.com> In-Reply-To: <20250204-imx-ocotp-v8-0-01be4a4bb045@nxp.com> To: Srinivas Kandagatla , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , Alexander Stein Cc: devicetree@vger.kernel.org, imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Peng Fan , Frank Li , Conor Dooley X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1738672884; l=4072; i=peng.fan@nxp.com; s=20230812; h=from:subject:message-id; bh=XnzgujPvzhDsZMamCFtENs9apB02aFgSkBfdNqk+fEY=; b=jfAPUOvurKkXAM7XzcOmAwf6tkx4jvx1yZqp1Q1Hw0bL600A2ZWu+zlmLaiKF1wjL8LRRzKij 9RLul2YV03dB4kuYPKv50EBZYtQz1QzYwtYo0k/xDdkg8mJ5qMLsprf X-Developer-Key: i=peng.fan@nxp.com; a=ed25519; pk=I4sJg7atIT1g63H7bb5lDRGR2gJW14RKDD0wFL8TT1g= X-ClientProxiedBy: SI2P153CA0013.APCP153.PROD.OUTLOOK.COM (2603:1096:4:140::12) To PAXPR04MB8459.eurprd04.prod.outlook.com (2603:10a6:102:1da::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PAXPR04MB8459:EE_|PA1PR04MB10889:EE_ X-MS-Office365-Filtering-Correlation-Id: 1b7f189f-0f6b-44f7-3b19-08dd451957d5 X-MS-Exchange-SharedMailbox-RoutingAgent-Processed: True X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|52116014|7416014|1800799024|376014|38350700014; X-Microsoft-Antispam-Message-Info: =?utf-8?q?CGx85/lR5WWh0O03iG318TGJkccZUf4?= =?utf-8?q?WnHg4VQ9fBfY49YoYsg1h1jsZ0+UQPT4WwOldLOrJSWGIjSgb/uijHitvebyL3Mff?= =?utf-8?q?VCwiN7er/nCSPD56fV6yVX1Qf56BppulrodGXmJtVL9ziqD7fuX5udf8lJhvB1MQ6?= =?utf-8?q?7oQib9HP0LZEeG5MGTTY5Q7zWoM1fPSeZ0NuDFGT7EVVOItqAD+sV/XD18JaObYD1?= =?utf-8?q?DAxUiy6L48GV/EenCFBBxtAFBr5DOKI4TSwmMw5fzZ/QLGuc7phiiSlX8zc+0CdBh?= =?utf-8?q?uYWyb/cUHFXr8KQQfPGb0bX8UaWGFfqW9P2LYCKN3HAg8ZPx06fsloDa4Iu0FJES3?= =?utf-8?q?vl9u+EaS+we17kaBtzc3e6Gce0Xy12ADkMFoGZwzTo1W0TsmB5+UAhnPToL6URozj?= =?utf-8?q?nBGedDDF0lGSYYeRY7zctKz9se4bMgnMSwiE3pveavODnWNzX9lRI9z4SPVnGSTBp?= =?utf-8?q?nrXK7zpHwawCZMS+K0Vfj1N/R3agcZLnuBmAIcefujptwU6v6ZM48F468iy7Gf2UC?= =?utf-8?q?rAJ3H46RdAZtab1XOsq0K5FyBXfkoKRdrf3FCJWZod4AksBjo+cnK5N5arIeuNY9j?= =?utf-8?q?7tJtK+m0E/brmxNJMigXWFCbsfs9AnRpBP2jWHqa8mWLprD0PmC4X0sEeI58Xziaz?= =?utf-8?q?q0koWINjSq4MJMaMXBy74G0+LSRZKrmmqThJYmQ6vOG29ctyZznJrvf+UqrKbOKQS?= =?utf-8?q?4Jf7uHojzjMQ3At+zo4H6WYM5PO6QNdjC6H2FdExYJji2qSs40XJaK7xPe+Jo57ZZ?= =?utf-8?q?wEKoT/V3aV4ylKjMuCawTa8CvKUJvt/67HicKcZlEvPv9fMSDhipX9OzSjPnGBRMn?= =?utf-8?q?oP0ZlQ6tlHEZIO5LLx9/AaWzuEjZjYRnM2L+aCvqGgEP9oClnpsJjtq2j5n8YdYa2?= =?utf-8?q?B9gb88KH1X8IcB6y7aVur1j1WsXBmjvGvH3Tr3bIvnHxd1b4yDUOflaq+rfL8F9Np?= =?utf-8?q?ziJimFDH5ODpd1Lg+aN/yTiIaclmATTEeLzWcl4uP/y4vhPKfU9tC/AqRxs5LS/xI?= =?utf-8?q?p0BgWMnd6zDxJT0alW6yUy3mHKlEXfck15ziDit1+Zo4hScrCdtjQo/mfu8XwOAtA?= =?utf-8?q?EXxsT6pxkRkQkwW8b1o8/S9fvmljBq5A7QDBtgpcoWZ2zEn8GHV2Ih7AQvuCY3FKt?= =?utf-8?q?Eit+lLo9Vm7Q0j55pJYeX/hNv/DYAnzTQs041psPwIQDGxYp80Y/WbUQV/UnATwRL?= =?utf-8?q?5mYiuIm5pFXZpBJUebKHHEo2zADkxLHxmpe02YLA6ntr+P1UAlrDpR0jKrTfnOtPl?= =?utf-8?q?PeLKqvpyXUQ/Ux4O3Qdmt2j4SoG8bfbUfqC1tD8F5jYy6q4NB5oPT3jEvXF2OvLEa?= =?utf-8?q?43MHXXfqf9RiL+gIFXRnKqYn2WeuS/m+/26oTo+fhJVutgxphX0l/zTgg/6vPVrwc?= =?utf-8?q?z/EsL02YmGe?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAXPR04MB8459.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(52116014)(7416014)(1800799024)(376014)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?RrzSWqVYxRrAaQ9l34codgW0RwL7?= =?utf-8?q?nggsQbhH4jEj+068cHXfwEuVAgC4eFIqcqTLFJyMxpbT0HqGwrq3gzhxH4sDQaTqy?= =?utf-8?q?gyFJMf7Y0Isq4CAlZzOKX4tLeVAU+rD72RBXepsh7WBF/MQXeKRru6yrGPDNenDbs?= =?utf-8?q?FTPR5W51KVcMhD2Rdt8Hxu7oJrmYSq+qZ03RxjOJCAzJg3T6bTBmCG2ViXWZ+g/fS?= =?utf-8?q?3DNH+PG6cyDTf89PTDjApRed5OyIaAZzNQFahAmOaKjsoyYnfVEpKC0+BZ5d6Ofyb?= =?utf-8?q?v8DM1jh9IiGX0np/lx1BXNAkmv2hpb0Lj9AKZNbAJjS2NBK23yDkyPAXaj2Le23Mt?= =?utf-8?q?onoAbDwXrNfLdi2LLBxuNSCaAQW+wQI3prfUUZFLJFrst1SpTnjaaAs9cGS+ncJb9?= =?utf-8?q?LPLjNFul4tywOZl5z/9rma+p6GHlomg/yRiaYgZ/R3sk0utJ7ZU/FX9NcnRLaEA8k?= =?utf-8?q?HLh24HhbFB5apSyeFLbrthiMktGW7/hwvjHXnSnoy2ySXdkhwm4QBxz+MsaH1LCut?= =?utf-8?q?KzZwtSBs1io57/C7gCNpXFSCJOoDF3chDZKdTl3oN4vOgLtKsdnFDUt6lc1Ft30lh?= =?utf-8?q?Ww78SIE3dFvQrRh2NTsM4QL6uqsqxdIW0Zw+zhi+zrR25S5gFVB9gwknaRON13oBe?= =?utf-8?q?KY1lylB7ZMygVJat7kp1i9K4oacedmsJqLN+g7Ch3FqA5+JcHZuWYHhrZKkAaYy2Z?= =?utf-8?q?hUsOqRaQU/WeR1q4x3kC42qTdJs2VVRAn00DQ/Y6DmBTDvnKV+3zf3heWtYQVExTp?= =?utf-8?q?Qd03cw8r6sHFvV8msc+girhUI9ilqKH1IQJuszhi02MkibSWxEiUYkuJ2otFNpf+F?= =?utf-8?q?rgp71nr1hSKMgTba7Lq3vqcq0cUONb+rgI40FcmXQv0hyJ+OGVeXjXe25mLEg04sK?= =?utf-8?q?WfmP+4o9FX7XG/HdiMQ5cVf0oCSKJanJBB23GfweuEdSvvQOSS/W4cnwHN5G94wg9?= =?utf-8?q?J8X828N6OD0ghaGOWYygo5tHXtk5kmAQX9p7uMblu4AMdc1zc+FUO9X7rQcJ8eDSv?= =?utf-8?q?s5oAq2G6Q1d7rf8smzq+rOV9Gw72+n9LdkSLGknX4OGcWiOeYrBEyZE3Ito4LPsHF?= =?utf-8?q?43BbCx5nEZcFEwitUkokC6NWfhq3zMPDfFSjxh5CmsYEQAHLcRlrbRHiRXndMK9Nx?= =?utf-8?q?L9C2igySuif/qrSuFhs1VBIAlVLdDK+uOog7UTKSDveFafG9K1vSaZ/Ji7UDhtga1?= =?utf-8?q?4Yk3Hw7yZkfgc/ZRlfNxrYkNyf+5YIUW4mYT0nTLJckzcnSzbbNFDXpaKMRgc3qGK?= =?utf-8?q?NdREhbI+Dz1yPJuwhODzj9lwxeLeRmStaPSJtC1Md45lerIeNAVbEDiQbNn46Hwl9?= =?utf-8?q?z2gstGpcB2i0tP76s9U4DxqAxZvyKu8VHZAb86uTyDSF3Q0ApHe1A6XeADvZdj0wy?= =?utf-8?q?ctaa6Oz4EWzwrXGj0daRpekLihww4RD6/7cpWTdQXzeRx3Yh6MjcqCjazpYw042uQ?= =?utf-8?q?1KDS0o+OgaOOJAu2gIzQWJXtHQWGhZqYmlvXmv89Ttrj9yuYVwTxFK98zbOgCpnw+?= =?utf-8?q?2WUs+gA1sMfM?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1b7f189f-0f6b-44f7-3b19-08dd451957d5 X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB8459.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Feb 2025 12:42:10.8040 (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: EmpIZe/fdSY7LbuKW/tJI719z01pw09eMoxT7OGBIXd45NVIAxt+YR1qptpQk2xwnDEQ7MvlzL9l/AxE14fIzA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA1PR04MB10889 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250204_044213_376120_C1D7714C X-CRM114-Status: GOOD ( 11.37 ) 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 From: Peng Fan Introduce "#access-controller-cells" to make OCOTP be an accessing controller, because i.MX Family OCOTP supports a specific peripheral or function being fused which means being disabled. Add the i.MX[95,93] OCOTP gate index. Reviewed-by: Frank Li Acked-by: Conor Dooley Signed-off-by: Peng Fan --- .../devicetree/bindings/nvmem/imx-ocotp.yaml | 5 +++ include/dt-bindings/nvmem/fsl,imx93-ocotp.h | 24 ++++++++++++ include/dt-bindings/nvmem/fsl,imx95-ocotp.h | 43 ++++++++++++++++++++++ 3 files changed, 72 insertions(+) diff --git a/Documentation/devicetree/bindings/nvmem/imx-ocotp.yaml b/Documentation/devicetree/bindings/nvmem/imx-ocotp.yaml index b2cb76cf9053a883a158acaf5eaa108895818afc..c78e202ced22f1c278f7be827b71ba434832d2a7 100644 --- a/Documentation/devicetree/bindings/nvmem/imx-ocotp.yaml +++ b/Documentation/devicetree/bindings/nvmem/imx-ocotp.yaml @@ -54,6 +54,11 @@ properties: clocks: maxItems: 1 + "#access-controller-cells": + const: 1 + description: + Contains the gate ID associated to the peripheral. + required: - "#address-cells" - "#size-cells" diff --git a/include/dt-bindings/nvmem/fsl,imx93-ocotp.h b/include/dt-bindings/nvmem/fsl,imx93-ocotp.h new file mode 100644 index 0000000000000000000000000000000000000000..4b7fe5930331fc7e3be49f2674faf03c0a46d156 --- /dev/null +++ b/include/dt-bindings/nvmem/fsl,imx93-ocotp.h @@ -0,0 +1,24 @@ +/* SPDX-License-Identifier: GPL-2.0 OR MIT */ + +#ifndef _DT_BINDINGS_NVMEM_IMX93_OCOTP_H +#define _DT_BINDINGS_NVMEM_IMX93_OCOTP_H + +#define IMX93_OCOTP_NPU_GATE 0 +#define IMX93_OCOTP_A550_GATE 1 +#define IMX93_OCOTP_A551_GATE 2 +#define IMX93_OCOTP_M33_GATE 3 +#define IMX93_OCOTP_CAN1_FD_GATE 4 +#define IMX93_OCOTP_CAN2_FD_GATE 5 +#define IMX93_OCOTP_CAN1_GATE 6 +#define IMX93_OCOTP_CAN2_GATE 7 +#define IMX93_OCOTP_USB1_GATE 8 +#define IMX93_OCOTP_USB2_GATE 9 +#define IMX93_OCOTP_ENET1_GATE 10 +#define IMX93_OCOTP_ENET2_GATE 11 +#define IMX93_OCOTP_PXP_GATE 12 +#define IMX93_OCOTP_MIPI_CSI1_GATE 13 +#define IMX93_OCOTP_MIPI_DSI1_GATE 14 +#define IMX93_OCOTP_LVDS1_GATE 15 +#define IMX93_OCOTP_ADC1_GATE 16 + +#endif diff --git a/include/dt-bindings/nvmem/fsl,imx95-ocotp.h b/include/dt-bindings/nvmem/fsl,imx95-ocotp.h new file mode 100644 index 0000000000000000000000000000000000000000..717152219c9890297440b74e11d67e2dc5da883a --- /dev/null +++ b/include/dt-bindings/nvmem/fsl,imx95-ocotp.h @@ -0,0 +1,43 @@ +/* SPDX-License-Identifier: GPL-2.0 OR MIT */ + +#ifndef _DT_BINDINGS_NVMEM_IMX95_OCOTP_H +#define _DT_BINDINGS_NVMEM_IMX95_OCOTP_H + +#define IMX95_OCOTP_CANFD1_GATE 0 +#define IMX95_OCOTP_CANFD2_GATE 1 +#define IMX95_OCOTP_CANFD3_GATE 2 +#define IMX95_OCOTP_CANFD4_GATE 3 +#define IMX95_OCOTP_CANFD5_GATE 4 +#define IMX95_OCOTP_CAN1_GATE 5 +#define IMX95_OCOTP_CAN2_GATE 6 +#define IMX95_OCOTP_CAN3_GATE 7 +#define IMX95_OCOTP_CAN4_GATE 8 +#define IMX95_OCOTP_CAN5_GATE 9 +#define IMX95_OCOTP_NPU_GATE 10 +#define IMX95_OCOTP_A550_GATE 11 +#define IMX95_OCOTP_A551_GATE 12 +#define IMX95_OCOTP_A552_GATE 13 +#define IMX95_OCOTP_A553_GATE 14 +#define IMX95_OCOTP_A554_GATE 15 +#define IMX95_OCOTP_A555_GATE 16 +#define IMX95_OCOTP_M7_GATE 17 +#define IMX95_OCOTP_DCSS_GATE 18 +#define IMX95_OCOTP_LVDS1_GATE 19 +#define IMX95_OCOTP_ISP_GATE 20 +#define IMX95_OCOTP_USB1_GATE 21 +#define IMX95_OCOTP_USB2_GATE 22 +#define IMX95_OCOTP_NETC_GATE 23 +#define IMX95_OCOTP_PCIE1_GATE 24 +#define IMX95_OCOTP_PCIE2_GATE 25 +#define IMX95_OCOTP_ADC1_GATE 26 +#define IMX95_OCOTP_EARC_RX_GATE 27 +#define IMX95_OCOTP_GPU3D_GATE 28 +#define IMX95_OCOTP_VPU_GATE 29 +#define IMX95_OCOTP_JPEG_ENC_GATE 30 +#define IMX95_OCOTP_JPEG_DEC_GATE 31 +#define IMX95_OCOTP_MIPI_CSI1_GATE 32 +#define IMX95_OCOTP_MIPI_CSI2_GATE 33 +#define IMX95_OCOTP_MIPI_DSI1_GATE 34 +#define IMX95_OCOTP_V2X_GATE 35 + +#endif From patchwork Tue Feb 4 12:41:14 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Peng Fan (OSS)" X-Patchwork-Id: 13959139 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 A8F81C02196 for ; Tue, 4 Feb 2025 12:54:07 +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=SdIJXtIxysd9FAgZSSUlMCTkFE6yGwXa3xz5U4l3mzY=; b=jnCz6vGE7UeWnm7ZLzaYYfM2d3 4sPjd0y7QIBEg3sZDoxYTL6cOmDcX3UmeRUTPVwdLEbmfo2GDyvcS89Yo7S1IHGdpCK7FgfPVTZX5 T/LJW1zRzR/gTbZ2l7eRl9nc1prxf6iECptLVO44YFXndij+ZW5cmxw1Yx7gXIpYXa3SxmChO8Pg3 t8Qc7gagdehx5wYs2Ei/ICQ/5v0m3P8dCHjaaFSQ3NlsZLUFcWW3Z5LJ86Nn1H26hpvkZyaqOqgJI VTzabkgA/3J6WJaPHV6TkXLuekyK1XMumLROqqGFq2g4ruBA/cR9EcNRD4uPtoUp7H5nJ5yaC6nhm iocKkEbg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tfIRA-00000000TJL-1fqg; Tue, 04 Feb 2025 12:53:56 +0000 Received: from mail-db8eur05on2061e.outbound.protection.outlook.com ([2a01:111:f403:2614::61e] helo=EUR05-DB8-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tfIFu-00000000S11-2OIv for linux-arm-kernel@lists.infradead.org; Tue, 04 Feb 2025 12:42:19 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=KP+2Q2Ku3jeLgVKm070qPyal7eeVJnoEe5317L8+8SI4k8vGGZuJmTjizeuxXuzJXOTZ5REUuBAS9qjbD/GqL2WxYIQcU+rJPGd2CG1fE21tefXLwocoiutKA9a9Wp0Fgqs49rIYvIAzM/6Dmg73LhBGTIrhqhNb+3BgtldwixpH7rt/dOsqteY7fAx9K54ecRJGRo+k7FXA4VMWY+CbL1/JMmBXW9gJMU0UOsMnbelf+h4E7/rlwVxgmQDv/Y1I1jzdy1oYzEBZhYjnWyi5Epz5YrQIRC/1hU9rG6aIby4kT1lAnH3f36RvFyz5f8+VBmDq6rrFjUaj2GcbM3tCVQ== 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=SdIJXtIxysd9FAgZSSUlMCTkFE6yGwXa3xz5U4l3mzY=; b=lAFXmEiMbKMnC0Sg3Za9cWoRQ611pbbHpN9rdtC8mAywAMEoROnKZ+dsMyh4fvd9YmbX6o1TphsY2CzcYx+tHtILZotqZuHboQBYWvVjKqprPXjvYCBbgfOZHC62rr1VdW5gPqryikhmRj7g7mQ6CovmSK0a8K9bpFjcs8T5jSd76+OzMisbuL6vSLhx+tnxo970UfE6YIjhEQ7aOJuvEzpjf/bK5moR9KhmpM/wgxUrSYf9HV0oLzcjG1mSvKW+7yf+kdajirC+OBahU+3+eielbw6bv+YX1Owf3AFyYjWqzhbITT/y4gXIN7V4IPdVFoeiPR2KVmhZhT9IwKXg/Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; dkim=pass header.d=oss.nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; s=selector1-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=SdIJXtIxysd9FAgZSSUlMCTkFE6yGwXa3xz5U4l3mzY=; b=QK0r04p0dO0hB7glAlPiyc0BYnHhFslsPFOktT1rf20Wbj4PP3GtcYCoUlaB88SjXz3JZiXGxp/qhTkq3CAJ4POghCzm5rWvQanXQ+VuHKCtz15lafwIrD7wDZ/nKbuAKjkHB8U4hyzqbJJcAPg0rxfBsFgJhCerz/5lJSLE2BzRBYm8TWS1SX+coZpy/7UCLWt83yaulAU80TU+TlFbKmvKEXCkR5oBCLYK7txCvRv+mUCVxbUy9T7N3BwBbKtlX2YQeyFd8YGJh82UAmW6R+TJA2QYSHEjdt2CrTmUZxDAJffKY6QxxAEsGZAjrs399dIXIvhq9OdIczZjboFcfg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=oss.nxp.com; Received: from PAXPR04MB8459.eurprd04.prod.outlook.com (2603:10a6:102:1da::15) by PA1PR04MB10889.eurprd04.prod.outlook.com (2603:10a6:102:491::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8398.25; Tue, 4 Feb 2025 12:42:15 +0000 Received: from PAXPR04MB8459.eurprd04.prod.outlook.com ([fe80::165a:30a2:5835:9630]) by PAXPR04MB8459.eurprd04.prod.outlook.com ([fe80::165a:30a2:5835:9630%3]) with mapi id 15.20.8398.025; Tue, 4 Feb 2025 12:42:14 +0000 From: "Peng Fan (OSS)" Date: Tue, 04 Feb 2025 20:41:14 +0800 Subject: [PATCH v8 2/2] nvmem: imx-ocotp-ele: Support accessing controller for i.MX9 Message-Id: <20250204-imx-ocotp-v8-2-01be4a4bb045@nxp.com> References: <20250204-imx-ocotp-v8-0-01be4a4bb045@nxp.com> In-Reply-To: <20250204-imx-ocotp-v8-0-01be4a4bb045@nxp.com> To: Srinivas Kandagatla , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , Alexander Stein Cc: devicetree@vger.kernel.org, imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Peng Fan X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1738672884; l=9163; i=peng.fan@nxp.com; s=20230812; h=from:subject:message-id; bh=IwvgJVXLT5aU/bv14bty/b3x/EdTuTasIiBLOcfQxE4=; b=KGoIyodJpc+tVXbzD5Ty17gVKr8ozCiEJTdzQB5NGngd3cdSucx/PebKdDgZQNXOzu9hrqNZu Z0jJPtMf/GmANlBkClMR+yNhdNrNuv4pntNMgk3KyJtaxRuAywQQlEy X-Developer-Key: i=peng.fan@nxp.com; a=ed25519; pk=I4sJg7atIT1g63H7bb5lDRGR2gJW14RKDD0wFL8TT1g= X-ClientProxiedBy: SI2P153CA0013.APCP153.PROD.OUTLOOK.COM (2603:1096:4:140::12) To PAXPR04MB8459.eurprd04.prod.outlook.com (2603:10a6:102:1da::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PAXPR04MB8459:EE_|PA1PR04MB10889:EE_ X-MS-Office365-Filtering-Correlation-Id: 8a44adb6-c6cc-4fdc-0716-08dd45195a45 X-MS-Exchange-SharedMailbox-RoutingAgent-Processed: True X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|52116014|7416014|1800799024|376014|38350700014; X-Microsoft-Antispam-Message-Info: =?utf-8?q?DAYXX7DeYdjoutR0RVU71mr/ERQXtUZ?= =?utf-8?q?uvWcwgGULUjw0Fc/5qZ1nJGt8c+xIsmwsCkh/UCkka17iq1GbcZokcK+d5T1NZrrE?= =?utf-8?q?5EPMjicgPZETGCEIzoK/xAti/o1dkJ6WSN7Ww02q0gyMfRCoHI8PlmyAwZ09VbYkr?= =?utf-8?q?ufQWAtO1P5Dc29yjHqoIPyDIP0Q3VKFMoxgTYycc7LX+hGucCEfDOwHf5Jd9PtPOL?= =?utf-8?q?Icx/oBgk4NwvHHWLvnaU5eXXBflRz6UbeKcZpdo28QTi88uBzrzcpJqqRX9j1APDy?= =?utf-8?q?oYnLmtmd4yUoRW95gmc1db3g+y58WBA0WL1PhcZzwq9gqijRuacxXVUZ49w968ZiG?= =?utf-8?q?oaM1N3B89lL17U4/WHAhf2a4DXDtUgVrE8k11pEB8f60Gg+Sy2EYtQszyUeuTDdzy?= =?utf-8?q?/BmzD/SpvZGnyY3yl6RRIdVQO8GT2kFeQdhaXiZMi0SJtptD8x/mrsiMD3gZqz7Gw?= =?utf-8?q?vtvxp6Fn0oA4mHOhrJDh8b1xpW7waojeo1ST/zCH0APAeYMWYJovgdKABaEBZIi8X?= =?utf-8?q?qTaYpEUNcXswi6sSLM1tJ7xZhha8W/T8Jwp/C/ighH/TtsgzuYIcH0qE9j02z3kCd?= =?utf-8?q?+vFy6tb5e28QJS7t24SUIJepA6HT3YRPHmAEgyfGWPiQDfFhq8AuEjoab9puahOS2?= =?utf-8?q?JSgOp1TIvh0vYkUjR8bgMCsnna3OhZwbsqaER2Js8BNWW54oSrh8JKcsOwWB2YbeS?= =?utf-8?q?TXLYOHy8k6har9g5J0eacEsdaV9kzyXaLVTF4jHeL3iC6RnJ6n30yTpFf3fSPLarn?= =?utf-8?q?AK9J2CuzQyzMQqGkXMKoZYnEa5GKvQhqx3js8pkp/h7b9ZmDL39QJdc126nUxd+mJ?= =?utf-8?q?1Dwf4vq7BOhKxX8htkHCNUyuDbX5TNpncVyonfQ0mnKs18QhhQZoOqJsY+daqr6hS?= =?utf-8?q?k6TuIcHkG97SZcNOKgRcWQHPhgmLJabYwrjuhDCzFO3DVLyy9VTPU9OITGXQgZiWl?= =?utf-8?q?bw+7TfyrnInxTy8dQN/aseqX2mGSGaurWyPM68PB2qMKw3ty66vN9C7V+Sz/d/eyI?= =?utf-8?q?Q/dffgUYCR6XTqGd9wMlRUx1n0uri4qj/pUvkQNa6g8ST+pHQW/wA4Y3rfl/AWK/x?= =?utf-8?q?Y3pKV3qykRvbr6NqQmWPqHHvSDkYVwNFCJd2lI0K3bY5gs4kTtp1/D1bytyf34y0o?= =?utf-8?q?j42oLOVmCtAvPxaOqNlsk58mmepXkD4EySmq3o3S94WwN4P8/QFGaDm74FdG/0mth?= =?utf-8?q?xdRIi3TfZFDJw3kRUbICGDvlQzwaYxOmJWV0vbV+/qqZR1RhEwTbkyJdAG8ayYQ1B?= =?utf-8?q?elGAgGT1y9IjLKG/cMmBRio0boDns/JCeua8uQ9WBVERdHgHVzx9SCg1fs1ee6N4/?= =?utf-8?q?tN16TvYZJJ9XLMfRsFrPOXXcz/qK9XTpKFogeAnHallqZxMDQHUmEJfQXAY0RbVj6?= =?utf-8?q?u++P5pfRSso?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAXPR04MB8459.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(52116014)(7416014)(1800799024)(376014)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?kpIqkmwDRdOaflKiMWHClz50m1/v?= =?utf-8?q?wXvOVgsxZEXPdfScvh9ufX+utxYheDw6stzgOmCbX76Pl6wqRQUMsjUiuFltTG3HF?= =?utf-8?q?ekWVoJ1jAhLXOS5eCG90fOSly4qLEr7dz7WIqiAkva6bpb/X4lo+/JGgpX6pifav0?= =?utf-8?q?tYbV2XdLCvOfSSW7+G59cvgg3MOW0xd4Tjx4nPmlwxtxaYLZPtXtwVVsXvWcGniV4?= =?utf-8?q?ym426QfPCacFpp7SH+t7IvDvTCv7FuIl11iNOa3FUz363ECv48CB5m1ObJ62SMQZW?= =?utf-8?q?0WWLxw9X06y8HiscQuvQzLz/XL91ENZ7JrJJLB+rMf53tS6dprHLBEizLi3gTJxl0?= =?utf-8?q?T4UjdbQ5wao8ILtkAa7B8c7Poz6GDUx20d7fIs/jpb9fXE5zPoyQwEpSZPoR+eRB7?= =?utf-8?q?3NkU4DhxyPx9phCjDVwpVq/ngWwXG9jAdQv64NI5U8WMouEQ2jdBblcmvGq79Galx?= =?utf-8?q?JyImwPLiyYSFekM7/nT1KQDgqG6zCTZ705vVLcjI7R2t3bc/BcklJE3NgFW5rB7qW?= =?utf-8?q?JBnlBCGWeoulENI+SStewFCRTqMX8lywifG9auEut9I/WbuImuciwI6WB6gSsunCt?= =?utf-8?q?SJOyxN9jEpCerx0TVWQy+7yVUqed0gFeRgXboFJxuexFs1o+KsOgqH1OOYYBJEwKb?= =?utf-8?q?nknJaIZQPHTk6IC6zALoZFWcEOjtyEJR9HNiiayVYSAzDw8B+5TQ2m3IbOpiJgpz5?= =?utf-8?q?9Xuqg+2gYBUqCgxusWFEINXSnQuVKOPQewUbkULuqWmDmPU3HJMP9RTMg1nDCvB+Q?= =?utf-8?q?5C49Mt5yKE11jXixQyvLiQa8tbSMR84A8+fNO4dSqVF/rM1Ya9PWBrfw+d7Q1TeOK?= =?utf-8?q?/s6RNiWN2eMUV3j6x/TAy2waGkC6ioPPIAeYCxEo28K9GwpC4Hc55n8Ekrt6IzGxz?= =?utf-8?q?9LHROR85Bi4c6tW6g9cP/063tCdWikzgJp6M9cDm+YhlAXwQ4dF9IiARWFAEhVIbL?= =?utf-8?q?VgySil4u3GYRBWmmkHdIgClmwORxrSu5xDHpoRrvx8B0xNceWKvXCuSIbM4LtLVzN?= =?utf-8?q?zhQeWz+L6rYTD2Hm6Y8BSF7P4HQ0KskPb+uxpBZy01S2Ct5iMjTtmOdVB0ocgoLmi?= =?utf-8?q?CgnZppUi5pWnGEz/lpmpxcgalxAQ75z1ce/pd/nbn2Hu426EdVA1nxRiQP4+8fWIL?= =?utf-8?q?ZqsQCooByhBtx3lzMkG29uofoWrJGJEcev2lyZsDVjHtAEuTAm6kshCOFO6GysGQV?= =?utf-8?q?3DSGywDnQcceu9sSVAbmuGcqeGKJdnKQEa9l03a+Qu+Krl0CkBRYFtCuimlsVtK0Q?= =?utf-8?q?tLykCBh15bexklSoecxE8WuxdcjRWlKbykQt0ycYfg87xXFfTVQgo88UrQfSeZKKY?= =?utf-8?q?WyVcM2jaGHZqHe4trOax7GxUaFQaJrQFwqH2q96cGiuRbAHyo7ySiQUs/aYXBYQGp?= =?utf-8?q?xEphIjwoqlqg47aex/nra5bQMy14mDbBL5SPCvWDzWalDjIv8nxjUxTB3Qm+SyNX/?= =?utf-8?q?1HUo2uKuaxB3DwzW/zvAKB85EJmJm2v9qLBMYXhZCBXRt1+nr/QvEG/NBLcbR2skN?= =?utf-8?q?g55iTFBqqKBh?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8a44adb6-c6cc-4fdc-0716-08dd45195a45 X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB8459.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Feb 2025 12:42:14.8982 (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: 2zUD0GY7TpLo+q1tp3XvcCT7eq8bzSwdquSILYlWCbIuXSJplcgtkAgxVc2ozLazYnDn0jFo6TQAIxbN/uPSxw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA1PR04MB10889 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250204_044218_767368_BFDAAB69 X-CRM114-Status: GOOD ( 19.61 ) 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 From: Peng Fan i.MX9 OCOTP supports a specific peripheral or function being fused which means disabled, so - Introduce ocotp_access_gates to be container of efuse gate info - Iterate all nodes to check accessing permission. If not allowed to be accessed, detach the node Signed-off-by: Peng Fan --- drivers/nvmem/Kconfig | 3 + drivers/nvmem/imx-ocotp-ele.c | 173 +++++++++++++++++++++++++++++++++++++++++- 2 files changed, 175 insertions(+), 1 deletion(-) diff --git a/drivers/nvmem/Kconfig b/drivers/nvmem/Kconfig index 8671b7c974b933e147154bb40b5d41b5730518d2..77cc496fd5e0e1afd753534b56fe1f5ef3e3ec55 100644 --- a/drivers/nvmem/Kconfig +++ b/drivers/nvmem/Kconfig @@ -93,6 +93,9 @@ config NVMEM_IMX_OCOTP_ELE This is a driver for the On-Chip OTP Controller (OCOTP) available on i.MX SoCs which has ELE. + If built as modules, any other driver relying on this working + as access controller also needs to be a module as well. + config NVMEM_IMX_OCOTP_SCU tristate "i.MX8 SCU On-Chip OTP Controller support" depends on IMX_SCU diff --git a/drivers/nvmem/imx-ocotp-ele.c b/drivers/nvmem/imx-ocotp-ele.c index ca6dd71d8a2e29888c6e556aaea116c1a967cb5f..fe243e4d3377e98a21f660ebad92dbe9bff94330 100644 --- a/drivers/nvmem/imx-ocotp-ele.c +++ b/drivers/nvmem/imx-ocotp-ele.c @@ -5,6 +5,8 @@ * Copyright 2023 NXP */ +#include +#include #include #include #include @@ -27,6 +29,7 @@ struct ocotp_map_entry { }; struct ocotp_devtype_data { + const struct ocotp_access_gates *access_gates; u32 reg_off; char *name; u32 size; @@ -36,6 +39,20 @@ struct ocotp_devtype_data { struct ocotp_map_entry entry[]; }; +#define OCOTP_MAX_NUM_GATE_WORDS 4 + +struct access_gate { + u32 word; + u32 mask; +}; + +struct ocotp_access_gates { + u32 num_words; + u32 words[OCOTP_MAX_NUM_GATE_WORDS]; + u32 num_gates; + const struct access_gate *gates; +}; + struct imx_ocotp_priv { struct device *dev; void __iomem *base; @@ -131,6 +148,83 @@ static void imx_ocotp_fixup_dt_cell_info(struct nvmem_device *nvmem, cell->read_post_process = imx_ocotp_cell_pp; } +static int imx_ele_ocotp_check_access(struct imx_ocotp_priv *priv, u32 id) +{ + const struct ocotp_access_gates *access_gates = priv->data->access_gates; + void __iomem *reg = priv->base + priv->data->reg_off; + u32 word, mask, val; + + if (id >= access_gates->num_gates) { + dev_err(priv->config.dev, "Index %d too large\n", id); + return -EACCES; + } + + word = access_gates->gates[id].word; + mask = access_gates->gates[id].mask; + + reg = priv->base + priv->data->reg_off + (word << 2); + val = readl(reg); + + dev_dbg(priv->config.dev, "id:%d word:%d mask:0x%08x\n", id, word, mask); + /* true means not allow access */ + if (val & mask) + return -EACCES; + + return 0; +} + +static int imx_ele_ocotp_grant_access(struct imx_ocotp_priv *priv, struct device_node *parent) +{ + struct device *dev = priv->config.dev; + + for_each_available_child_of_node_scoped(parent, child) { + struct of_phandle_args args; + u32 id, idx = 0; + + while (!of_parse_phandle_with_args(child, "access-controllers", + "#access-controller-cells", + idx++, &args)) { + of_node_put(args.np); + if (args.np != dev->of_node) + continue; + + /* Only support one cell */ + if (args.args_count != 1) { + dev_err(dev, "wrong args count\n"); + continue; + } + + id = args.args[0]; + + dev_dbg(dev, "Checking node: %pOF gate: %d\n", child, id); + + if (imx_ele_ocotp_check_access(priv, id)) { + of_detach_node(child); + dev_info(dev, "%pOF: Not granted, device driver will not be probed\n", + child); + } + } + + imx_ele_ocotp_grant_access(priv, child); + } + + return 0; +} + +static int imx_ele_ocotp_access_control(struct imx_ocotp_priv *priv) +{ + struct device_node *root __free(device_node) = of_find_node_by_path("/"); + + if (!priv->data->access_gates) + return 0; + + /* This should never happen */ + if (WARN_ON(!root)) + return -EINVAL; + + return imx_ele_ocotp_grant_access(priv, root); +} + static int imx_ele_ocotp_probe(struct platform_device *pdev) { struct device *dev = &pdev->dev; @@ -161,14 +255,45 @@ static int imx_ele_ocotp_probe(struct platform_device *pdev) priv->config.fixup_dt_cell_info = imx_ocotp_fixup_dt_cell_info; mutex_init(&priv->lock); + platform_set_drvdata(pdev, priv); + nvmem = devm_nvmem_register(dev, &priv->config); if (IS_ERR(nvmem)) return PTR_ERR(nvmem); - return 0; + + return imx_ele_ocotp_access_control(priv); } +static const struct access_gate imx93_access_gate[] = { + [IMX93_OCOTP_NPU_GATE] = { .word = 19, .mask = BIT(13) }, + [IMX93_OCOTP_A550_GATE] = { .word = 19, .mask = BIT(14) }, + [IMX93_OCOTP_A551_GATE] = { .word = 19, .mask = BIT(15) }, + [IMX93_OCOTP_M33_GATE] = { .word = 19, .mask = BIT(24) }, + [IMX93_OCOTP_CAN1_FD_GATE] = { .word = 19, .mask = BIT(28) }, + [IMX93_OCOTP_CAN2_FD_GATE] = { .word = 19, .mask = BIT(29) }, + [IMX93_OCOTP_CAN1_GATE] = { .word = 19, .mask = BIT(30) }, + [IMX93_OCOTP_CAN2_GATE] = { .word = 19, .mask = BIT(31) }, + [IMX93_OCOTP_USB1_GATE] = { .word = 20, .mask = BIT(3) }, + [IMX93_OCOTP_USB2_GATE] = { .word = 20, .mask = BIT(4) }, + [IMX93_OCOTP_ENET1_GATE] = { .word = 20, .mask = BIT(5) }, + [IMX93_OCOTP_ENET2_GATE] = { .word = 20, .mask = BIT(6) }, + [IMX93_OCOTP_PXP_GATE] = { .word = 20, .mask = BIT(10) }, + [IMX93_OCOTP_MIPI_CSI1_GATE] = { .word = 20, .mask = BIT(17) }, + [IMX93_OCOTP_MIPI_DSI1_GATE] = { .word = 20, .mask = BIT(19) }, + [IMX93_OCOTP_LVDS1_GATE] = { .word = 20, .mask = BIT(24) }, + [IMX93_OCOTP_ADC1_GATE] = { .word = 21, .mask = BIT(7) }, +}; + +static const struct ocotp_access_gates imx93_access_gates_info = { + .num_words = 3, + .words = {19, 20, 21}, + .num_gates = ARRAY_SIZE(imx93_access_gate), + .gates = imx93_access_gate, +}; + static const struct ocotp_devtype_data imx93_ocotp_data = { + .access_gates = &imx93_access_gates_info, .reg_off = 0x8000, .reg_read = imx_ocotp_reg_read, .size = 2048, @@ -183,7 +308,53 @@ static const struct ocotp_devtype_data imx93_ocotp_data = { }, }; +static const struct access_gate imx95_access_gate[] = { + [IMX95_OCOTP_CANFD1_GATE] = { .word = 17, .mask = BIT(20) }, + [IMX95_OCOTP_CANFD2_GATE] = { .word = 17, .mask = BIT(21) }, + [IMX95_OCOTP_CANFD3_GATE] = { .word = 17, .mask = BIT(22) }, + [IMX95_OCOTP_CANFD4_GATE] = { .word = 17, .mask = BIT(23) }, + [IMX95_OCOTP_CANFD5_GATE] = { .word = 17, .mask = BIT(24) }, + [IMX95_OCOTP_CAN1_GATE] = { .word = 17, .mask = BIT(25) }, + [IMX95_OCOTP_CAN2_GATE] = { .word = 17, .mask = BIT(26) }, + [IMX95_OCOTP_CAN3_GATE] = { .word = 17, .mask = BIT(27) }, + [IMX95_OCOTP_CAN4_GATE] = { .word = 17, .mask = BIT(28) }, + [IMX95_OCOTP_CAN5_GATE] = { .word = 17, .mask = BIT(29) }, + [IMX95_OCOTP_NPU_GATE] = { .word = 18, .mask = BIT(0) }, + [IMX95_OCOTP_A550_GATE] = { .word = 18, .mask = BIT(1) }, + [IMX95_OCOTP_A551_GATE] = { .word = 18, .mask = BIT(2) }, + [IMX95_OCOTP_A552_GATE] = { .word = 18, .mask = BIT(3) }, + [IMX95_OCOTP_A553_GATE] = { .word = 18, .mask = BIT(4) }, + [IMX95_OCOTP_A554_GATE] = { .word = 18, .mask = BIT(5) }, + [IMX95_OCOTP_A555_GATE] = { .word = 18, .mask = BIT(6) }, + [IMX95_OCOTP_M7_GATE] = { .word = 18, .mask = BIT(9) }, + [IMX95_OCOTP_DCSS_GATE] = { .word = 18, .mask = BIT(22) }, + [IMX95_OCOTP_LVDS1_GATE] = { .word = 18, .mask = BIT(27) }, + [IMX95_OCOTP_ISP_GATE] = { .word = 18, .mask = BIT(29) }, + [IMX95_OCOTP_USB1_GATE] = { .word = 19, .mask = BIT(2) }, + [IMX95_OCOTP_USB2_GATE] = { .word = 19, .mask = BIT(3) }, + [IMX95_OCOTP_NETC_GATE] = { .word = 19, .mask = BIT(4) }, + [IMX95_OCOTP_PCIE1_GATE] = { .word = 19, .mask = BIT(6) }, + [IMX95_OCOTP_PCIE2_GATE] = { .word = 19, .mask = BIT(7) }, + [IMX95_OCOTP_ADC1_GATE] = { .word = 19, .mask = BIT(8) }, + [IMX95_OCOTP_EARC_RX_GATE] = { .word = 19, .mask = BIT(11) }, + [IMX95_OCOTP_GPU3D_GATE] = { .word = 19, .mask = BIT(16) }, + [IMX95_OCOTP_VPU_GATE] = { .word = 19, .mask = BIT(17) }, + [IMX95_OCOTP_JPEG_ENC_GATE] = { .word = 19, .mask = BIT(18) }, + [IMX95_OCOTP_JPEG_DEC_GATE] = { .word = 19, .mask = BIT(19) }, + [IMX95_OCOTP_MIPI_CSI1_GATE] = { .word = 19, .mask = BIT(21) }, + [IMX95_OCOTP_MIPI_CSI2_GATE] = { .word = 19, .mask = BIT(22) }, + [IMX95_OCOTP_MIPI_DSI1_GATE] = { .word = 19, .mask = BIT(23) }, +}; + +static const struct ocotp_access_gates imx95_access_gates_info = { + .num_words = 3, + .words = {17, 18, 19}, + .num_gates = ARRAY_SIZE(imx95_access_gate), + .gates = imx95_access_gate, +}; + static const struct ocotp_devtype_data imx95_ocotp_data = { + .access_gates = &imx95_access_gates_info, .reg_off = 0x8000, .reg_read = imx_ocotp_reg_read, .size = 2048,