From patchwork Mon Jan 8 05:26:15 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Praveen Teja Kundanala X-Patchwork-Id: 13513008 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 A0063C3DA6E for ; Mon, 8 Jan 2024 05:27:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:CC:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=R9VOlt4ACjNkY+6+st5D2gD9iCqLv3rdRkslk/xwM44=; b=KofC1G9IcYIvN1 rv+tUgOZduUiep3oYHHnRHKLmL4Gta6/enNoF6CLh98GNW3EsaIcwGswZYNqpyg6j2oX6OjYMb6S1 O4ABXfR4x+1pn2q/oz0vfZtHOvJbqihmbvzfgHfQcLMjZ8FDbYGnv8559msX1B0vimnT1oVFa/Vz7 ounY0xB9BzNz8klO6MJNEkfzSXU1srfKxJkjaQdbOD3Tnx7qOtoLqFQsvxbA4XYjRwBMkF618lO2T yRBEdJJzem8+VdbF9rnwZ9mw+zpUsBlXeDSe3LrVb86krhWCxnLz4zBk4MJlmtQrtj/k1HohL8BzH gcTFvfkWM0dchyUev+ZA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1rMiAH-0040qr-2a; Mon, 08 Jan 2024 05:27:09 +0000 Received: from mail-dm6nam12on20605.outbound.protection.outlook.com ([2a01:111:f400:fe59::605] helo=NAM12-DM6-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1rMiAE-0040qQ-2V for linux-arm-kernel@lists.infradead.org; Mon, 08 Jan 2024 05:27:08 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=WTkN5Xp6OeRGKizdrhf0Pe4Z3QPKkofvWR5jVhAaQW8mqlvCHortxuFav/B9Nl58tAMXy9fx/PFeZc34F6jI16OGBWU30oTH+qWwHP0njcxBv3fD4Ag8EkaD9QlGAVw6qkUeXWl4ORfIPtJ89+To2ULogBVfYxHLhfDqF4SAQjIoKXPNOS5JjcjXd63anKciuKheYRMSC/QETlFZXCipqwbD7Zs3nmAmrQHiM8DLH0y35YXbU7KRaTn4nQ7LA77n1vu2rEbToNknAJurIdPBPVGWrNeAG/15xUs84upKHo0Tz1boIzdk7frSCYNXAZ9przP7PK903T2cHRf5ckU8bw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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=ux7Kk0/Ot8KYqBqxGVBzmg4rnuRUkuH8PnkBRtw+e5U=; b=MPqNaM3ukf7lEkTePUPs3W+o9QOd5mZcUlkkRtT5wsvte9TLOvkBoX633eWPCtUlxPJ/PmU814HAdtEq6K/ObTwL5aGgcXH762ejiNE03TAfvpXAVCD2yYY3lz0PYsoKX2uOzkslFB0FcKUDnoqlvYN1Y5LsdI4Ydl4e0JdkOV0RwMXmpjVvKnrxy5qg/RaygfvD1kRn3w3FdAMjtUdRNfd4GlTECcQ+HNVLWauFGevRUY4KJyuYjGVL7AhcGlFhiQ580P4ua8QD6olUdWGY4NVVLDSGjRQj4tfcRUj7Ab2FttJrACeERUjsTidE28bYILerp1mRmfl9pxyK8CTb0g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=linaro.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ux7Kk0/Ot8KYqBqxGVBzmg4rnuRUkuH8PnkBRtw+e5U=; b=Fs0KucNbOJHoOb+Br5TmEgwN382OImy5Jn7W2t253IpuF8kGkaYZnNPJwFCObsK9J2yXwEO4qkuZuRAPbvTBVtEJUkMQMH809FDq8I0Q2MDYjAq0Jxe691t8emNTxGxABPoBYYHWQqf64OWJc2INHaziuOe1BL+5rWnQAZIOk/E= Received: from CH2PR17CA0010.namprd17.prod.outlook.com (2603:10b6:610:53::20) by DM4PR12MB5891.namprd12.prod.outlook.com (2603:10b6:8:67::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.21; Mon, 8 Jan 2024 05:26:54 +0000 Received: from DS2PEPF00003444.namprd04.prod.outlook.com (2603:10b6:610:53:cafe::a9) by CH2PR17CA0010.outlook.office365.com (2603:10b6:610:53::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.21 via Frontend Transport; Mon, 8 Jan 2024 05:26:54 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB03.amd.com; pr=C Received: from SATLEXMB03.amd.com (165.204.84.17) by DS2PEPF00003444.mail.protection.outlook.com (10.167.17.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.7181.13 via Frontend Transport; Mon, 8 Jan 2024 05:26:54 +0000 Received: from SATLEXMB04.amd.com (10.181.40.145) by SATLEXMB03.amd.com (10.181.40.144) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Sun, 7 Jan 2024 23:26:53 -0600 Received: from xhdbharathm40.xilinx.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.34 via Frontend Transport; Sun, 7 Jan 2024 23:26:51 -0600 From: Praveen Teja Kundanala To: , , , , , , CC: , Subject: [PATCH V3 1/3] firmware: xilinx: Add ZynqMP efuse access API Date: Mon, 8 Jan 2024 10:56:15 +0530 Message-ID: <20240108052617.32510-2-praveen.teja.kundanala@amd.com> X-Mailer: git-send-email 2.38.1 In-Reply-To: <20240108052617.32510-1-praveen.teja.kundanala@amd.com> References: <20240108052617.32510-1-praveen.teja.kundanala@amd.com> MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS2PEPF00003444:EE_|DM4PR12MB5891:EE_ X-MS-Office365-Filtering-Correlation-Id: 66eb9bd5-c4e9-49fc-20c9-08dc100a6cd5 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: wumyeROkT531HY/bZpVl2LNfB8kFpwuCxrWbaWUre3OcHHpMTYuuzAtNRXo1txQNa+AjwmH5PWiDqRsuKIaP55YCzZ7akYDdbUkV65of5KqmRmN1w204gbHuVC+BjUyx3XQ7slPcMnheOMf6Q2MPJP0xsbvpFvEBlsJiV+DSFmWZPp+zR8u4gOG3eJf0oheSRF9RReYlt26M33B66f0VsDI5iC0egS5TbgAhSIFyFR9F0bagrQpwELGht/IFRPsmrC/yU0DQgiI+9ulP7jn5E3qSvTQJducKkripmO5NWi1/GxoCAUReheHSb3k8j+vpzqjDH3iVdDKky27YaSzheV8b5OMlBXU2yifSA71uqIn3sDJA0HcuMoLi9rYCCh+40hzXINpGY7xqLsASXs1Am8X8EAB61nEtIjsNDowa+T7N3GSVKfxu8mM/3vsn6MVhkXpKxyJcIZnQ4XrTbDRtfru1iTt6YeQBqJM8f/QiizmGXkaLBmiaki9qhkPzUlcu8uYQDfnTYW5NicVgzH/QbhVM8PMr+iWLiOznM+nHNVtgL9PIviPWZjaVVHPTJ6Cpr8JDCmbW1EO7fLlDFRadUwYPAdp6uKkwlI+ayLrW7B/s+QoIELIqDNRXPMC4pq2DQz2F/PlAa36YDQ5zO9E9FaBb8e5Kd15pghj22NBPH6gYI9Orb9jFyLc2k2qlZmTYAugsFOTcIUb84+AAYMg0eJ3e1Tyvn2kLZ9R60cXMBneUcTpZQVemEMVEtjIXbqhSFDuL22M0Ryb0cBmXQXVbLw== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB03.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(136003)(396003)(376002)(39860400002)(346002)(230922051799003)(451199024)(64100799003)(1800799012)(186009)(82310400011)(36840700001)(40470700004)(46966006)(356005)(81166007)(82740400003)(36756003)(8676002)(8936002)(110136005)(316002)(336012)(426003)(5660300002)(4326008)(83380400001)(478600001)(6666004)(1076003)(26005)(70586007)(70206006)(2616005)(41300700001)(2906002)(47076005)(36860700001)(40460700003)(86362001)(40480700001)(103116003)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Jan 2024 05:26:54.0454 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 66eb9bd5-c4e9-49fc-20c9-08dc100a6cd5 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB03.amd.com] X-MS-Exchange-CrossTenant-AuthSource: DS2PEPF00003444.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR12MB5891 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240107_212706_814516_C19EF134 X-CRM114-Status: GOOD ( 12.29 ) 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 zynqmp_pm_efuse_access API in the ZynqMP firmware for read/write access of efuse memory. Signed-off-by: Praveen Teja Kundanala Acked-by: Michal Simek Acked-by: Michal Simek --- drivers/firmware/xilinx/zynqmp.c | 25 +++++++++++++++++++++++++ include/linux/firmware/xlnx-zynqmp.h | 8 ++++++++ 2 files changed, 33 insertions(+) diff --git a/drivers/firmware/xilinx/zynqmp.c b/drivers/firmware/xilinx/zynqmp.c index b0d22d4455d9..5abf882a43f5 100644 --- a/drivers/firmware/xilinx/zynqmp.c +++ b/drivers/firmware/xilinx/zynqmp.c @@ -3,6 +3,7 @@ * Xilinx Zynq MPSoC Firmware layer * * Copyright (C) 2014-2022 Xilinx, Inc. + * Copyright (C) 2022 - 2023, Advanced Micro Devices, Inc. * * Michal Simek * Davorin Mista @@ -1435,6 +1436,30 @@ int zynqmp_pm_aes_engine(const u64 address, u32 *out) } EXPORT_SYMBOL_GPL(zynqmp_pm_aes_engine); +/** + * zynqmp_pm_efuse_access - Provides access to efuse memory. + * @address: Address of the efuse params structure + * @out: Returned output value + * + * Return: Returns status, either success or error code. + */ +int zynqmp_pm_efuse_access(const u64 address, u32 *out) +{ + u32 ret_payload[PAYLOAD_ARG_CNT]; + int ret; + + if (!out) + return -EINVAL; + + ret = zynqmp_pm_invoke_fn(PM_EFUSE_ACCESS, ret_payload, 2, + upper_32_bits(address), + lower_32_bits(address)); + *out = ret_payload[1]; + + return ret; +} +EXPORT_SYMBOL_GPL(zynqmp_pm_efuse_access); + /** * zynqmp_pm_sha_hash - Access the SHA engine to calculate the hash * @address: Address of the data/ Address of output buffer where diff --git a/include/linux/firmware/xlnx-zynqmp.h b/include/linux/firmware/xlnx-zynqmp.h index d1ea3898564c..ec3e19065f8d 100644 --- a/include/linux/firmware/xlnx-zynqmp.h +++ b/include/linux/firmware/xlnx-zynqmp.h @@ -3,6 +3,7 @@ * Xilinx Zynq MPSoC Firmware layer * * Copyright (C) 2014-2021 Xilinx + * Copyright (C) 2022 - 2023, Advanced Micro Devices, Inc. * * Michal Simek * Davorin Mista @@ -155,6 +156,7 @@ enum pm_api_id { PM_CLOCK_GETPARENT = 44, PM_FPGA_READ = 46, PM_SECURE_AES = 47, + PM_EFUSE_ACCESS = 53, PM_FEATURE_CHECK = 63, }; @@ -546,6 +548,7 @@ int zynqmp_pm_set_requirement(const u32 node, const u32 capabilities, const u32 qos, const enum zynqmp_pm_request_ack ack); int zynqmp_pm_aes_engine(const u64 address, u32 *out); +int zynqmp_pm_efuse_access(const u64 address, u32 *out); int zynqmp_pm_sha_hash(const u64 address, const u32 size, const u32 flags); int zynqmp_pm_fpga_load(const u64 address, const u32 size, const u32 flags); int zynqmp_pm_fpga_get_status(u32 *value); @@ -739,6 +742,11 @@ static inline int zynqmp_pm_aes_engine(const u64 address, u32 *out) return -ENODEV; } +static inline int zynqmp_pm_efuse_access(const u64 address, u32 *out) +{ + return -ENODEV; +} + static inline int zynqmp_pm_sha_hash(const u64 address, const u32 size, const u32 flags) { From patchwork Mon Jan 8 05:26:16 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Praveen Teja Kundanala X-Patchwork-Id: 13513009 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 DDD8EC3DA6E for ; Mon, 8 Jan 2024 05:27:51 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:CC:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=4+4Z2Gpa3XhcNJb6hC93HlL/dE3WJ5lofUsu74SIQOE=; b=uEBAd7UfpR1mXD PM6uMvcdbeRmv8mMhzdG9E7n3L0DdVuc0FnI2uCILv1KsYJ6+3TkEB62kaYswsDYfXsK6ooYzmThc HwolrTSIeh9DlrvvnmhTvEEyzI/DP62sXrxnAsYyyZNJfDyHd5yE3z50lDw8Q2AzfXLeTDDi4UTtI KfW6lyBR7dZ4gAsH9Toi9j8aMtwSwjBLtNSxd0lwuQh6Kq+yHN0BQLRa2x5PiOGBHDG7p6zOMr7aM ECKr99HBaEddJdsDvKudJ2WtPGiMZXl07CV9e8U39tRYl+aVvARpCTSAHLAVttLLBrB5kxt82FqWi d7/aoVnb4yI3zi2tanKA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1rMiAZ-0040vE-0J; Mon, 08 Jan 2024 05:27:27 +0000 Received: from mail-bn1nam02on2060a.outbound.protection.outlook.com ([2a01:111:f400:7eb2::60a] helo=NAM02-BN1-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1rMiAW-0040sz-0H for linux-arm-kernel@lists.infradead.org; Mon, 08 Jan 2024 05:27:25 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Ufiof3z6NvbilTJxsUyN8d5AUHlPTFcXVg9V0R3TpCNaaTNd3CgC5SiaGtzbwtbgm2XQPlxthlUrIU6+zH/UATB5HJoGp5pbs8z+VIkvEnFq7eoX8YvkRdTfkWU/4vz8pxkpSDJszqmQ/sFuhi68nvuRpzRUjt8qncJXtBE/JUaeTAYuUi8SNjE2ZeFpV4QyI0c7YmglOh4rEtAVZRwulSAjvId0UtV/frcVrR6biIOAPefbaIwb/I4/MGBxFp9yZ81Y0AnCDRvRhroBzVilPeU/9PpJI5oqcS1LK4V6+6TJE5TCDoZhjuVuJFTujF55AhVkIb1vtxVbdZkvV2OTSg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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=pUapCjsryGcoYHNfIFSd2XXTWpgM+LdwUpqVKPww5qQ=; b=Op3XliaHNqF2jRuuibUaV/L8fOlq0NvzV1PvVuQ05xHTg34wGkXcGuwyBuGy3aC+YZZFJb9l+cCQo+3+loo9C0BO228g9PCHn4dY0bDp8zp5jcJZRPs+l/ywbS+ZeUPMuIAkJA6lCQHHiHvQJaIVrKrNzLsec2Bz7AQhCSK8KM6PhUw5UsyN4SWWfxTWSadsH8p4zAmELYtjQZu4I9rYfT4AYmfECb1ucT9sF5sW4opuJCu2v5vKiUmFYdaj2i4zr9vgN4e+Aobep2ZtsQqq6IlqsCGvLJbBTNxBl/H1Xmq5PO0E06/5W6W+nqHHY0Rh71BRhJURupRzKuhoxgJH7A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=linaro.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=pUapCjsryGcoYHNfIFSd2XXTWpgM+LdwUpqVKPww5qQ=; b=elC1lpaSfAOQv+yxCKjrutrCV5utPuIpRHF2wNyJHFFtL4WdnsYOCAKVq39lhSxFbhJriX+1nGuYnDwPqJePEtW2wNQBHcc3/AA30ONzK82DxEzt2P8t4wQiNTwg7K+rQa2OdbX/mZL04Ug/F2ljflCNtkkPnrxjCCd7ManHxQw= Received: from SN4PR0501CA0063.namprd05.prod.outlook.com (2603:10b6:803:41::40) by MW3PR12MB4347.namprd12.prod.outlook.com (2603:10b6:303:2e::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.21; Mon, 8 Jan 2024 05:27:16 +0000 Received: from SA2PEPF00001506.namprd04.prod.outlook.com (2603:10b6:803:41:cafe::8f) by SN4PR0501CA0063.outlook.office365.com (2603:10b6:803:41::40) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7181.14 via Frontend Transport; Mon, 8 Jan 2024 05:27:15 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by SA2PEPF00001506.mail.protection.outlook.com (10.167.242.38) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.7181.13 via Frontend Transport; Mon, 8 Jan 2024 05:27:15 +0000 Received: from SATLEXMB08.amd.com (10.181.40.132) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Sun, 7 Jan 2024 23:27:13 -0600 Received: from SATLEXMB04.amd.com (10.181.40.145) by SATLEXMB08.amd.com (10.181.40.132) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.32; Sun, 7 Jan 2024 21:26:56 -0800 Received: from xhdbharathm40.xilinx.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.34 via Frontend Transport; Sun, 7 Jan 2024 23:26:53 -0600 From: Praveen Teja Kundanala To: , , , , , , CC: , Subject: [PATCH V3 2/3] dt-bindings: nvmem: Convert xlnx,zynqmp-nvmem.txt to yaml Date: Mon, 8 Jan 2024 10:56:16 +0530 Message-ID: <20240108052617.32510-3-praveen.teja.kundanala@amd.com> X-Mailer: git-send-email 2.38.1 In-Reply-To: <20240108052617.32510-1-praveen.teja.kundanala@amd.com> References: <20240108052617.32510-1-praveen.teja.kundanala@amd.com> MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SA2PEPF00001506:EE_|MW3PR12MB4347:EE_ X-MS-Office365-Filtering-Correlation-Id: 0bb26eed-3236-4e57-40e6-08dc100a7979 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: oXuf0EDrTz0ddNdVqVaE00ClACKCbnNR/P/aiAjatpdzRDsuputHCIIZeN9tnkFfd6BWZeKcWlawednOjTibV0G9RJMxYduiwsbhPrBnSiPGeunhaznVVulDHmpQ3RBmX6oy3GM8iuVmXw1E868SXMhZoMA0BFeF3bUoX347NufamJ7GoI5C8KrIYb/P0GZ6yxEfZEvZpsq1OqN7mAItM2hHWlaConD9U3garkuU/Bl2D8gmHWbFFT1WrEuo34zi7DHxPSykVxQrZfODsWUFSj825ShdUE6NsiDufMsuVzlo/bid3g0ycnaPmPD9RRyQBuDp8TmQAhtfpW++9bEFNhe4Fk30QA2OegLcdLKWbg3+wMptmi0V29WReO2xgG9p17Qc48ndV2E0oe49np1sghR0h7OjnFwpN8Y3LR47wuetC6J4HD7P2OUwHDOyK1RnoGZQ+pIP0Uo9IhqNGuB04SgZdludZsCnf1fIx0W9skhFjeoD8uLZ42vRAVXLrHQypeOreMNOMMS5G3EvaWpUN5x1KbKHXhyvxj366HO82izaD/T+azYRExgb1YpUq6d3pNN5+pEZsPWwXEQ6EHTaJcxBhCYriJMGjJvc9qiKYyATFbgznKJ5/w2g1cu9pEisIPPgEFe7r5E2345V14gRgNRo9aAO7nif0+xXRmJZkuOrii1cUgB74wfMTxiZbhUUBfVsbdTxgWXSsGbC1R3xvYafStN8qCs0QrfJMDdZOWl9J9qa0WrU9O8jO7HmKyWhc8sKKz3lHeCXKtz/HLx9NQ== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(39860400002)(396003)(136003)(376002)(346002)(230922051799003)(1800799012)(64100799003)(186009)(82310400011)(451199024)(46966006)(40470700004)(36840700001)(81166007)(41300700001)(2906002)(5660300002)(82740400003)(110136005)(40460700003)(36756003)(36860700001)(86362001)(356005)(103116003)(40480700001)(6666004)(316002)(8676002)(8936002)(4326008)(70206006)(47076005)(70586007)(83380400001)(966005)(26005)(1076003)(478600001)(426003)(336012)(2616005)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Jan 2024 05:27:15.3006 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 0bb26eed-3236-4e57-40e6-08dc100a7979 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: SA2PEPF00001506.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW3PR12MB4347 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240107_212724_127881_1EC00309 X-CRM114-Status: GOOD ( 17.01 ) 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 Convert the xlnx,zynqmp-nvmem.txt to yaml. Signed-off-by: Praveen Teja Kundanala Reviewed-by: Krzysztof Kozlowski --- Please note that DTB check will fail for zyqnmp dtsi with the current changes. Accompanying Device Tree Source (DTS) changes will be sent out separately. --- .../bindings/nvmem/xlnx,zynqmp-nvmem.txt | 46 ------------------- .../bindings/nvmem/xlnx,zynqmp-nvmem.yaml | 42 +++++++++++++++++ 2 files changed, 42 insertions(+), 46 deletions(-) delete mode 100644 Documentation/devicetree/bindings/nvmem/xlnx,zynqmp-nvmem.txt create mode 100644 Documentation/devicetree/bindings/nvmem/xlnx,zynqmp-nvmem.yaml diff --git a/Documentation/devicetree/bindings/nvmem/xlnx,zynqmp-nvmem.txt b/Documentation/devicetree/bindings/nvmem/xlnx,zynqmp-nvmem.txt deleted file mode 100644 index 4881561b3a02..000000000000 --- a/Documentation/devicetree/bindings/nvmem/xlnx,zynqmp-nvmem.txt +++ /dev/null @@ -1,46 +0,0 @@ --------------------------------------------------------------------------- -= Zynq UltraScale+ MPSoC nvmem firmware driver binding = --------------------------------------------------------------------------- -The nvmem_firmware node provides access to the hardware related data -like soc revision, IDCODE... etc, By using the firmware interface. - -Required properties: -- compatible: should be "xlnx,zynqmp-nvmem-fw" - -= Data cells = -Are child nodes of silicon id, bindings of which as described in -bindings/nvmem/nvmem.txt - -------- - Example -------- -firmware { - zynqmp_firmware: zynqmp-firmware { - compatible = "xlnx,zynqmp-firmware"; - method = "smc"; - - nvmem_firmware { - compatible = "xlnx,zynqmp-nvmem-fw"; - #address-cells = <1>; - #size-cells = <1>; - - /* Data cells */ - soc_revision: soc_revision { - reg = <0x0 0x4>; - }; - }; - }; -}; - -= Data consumers = -Are device nodes which consume nvmem data cells. - -For example: - pcap { - ... - - nvmem-cells = <&soc_revision>; - nvmem-cell-names = "soc_revision"; - - ... - }; diff --git a/Documentation/devicetree/bindings/nvmem/xlnx,zynqmp-nvmem.yaml b/Documentation/devicetree/bindings/nvmem/xlnx,zynqmp-nvmem.yaml new file mode 100644 index 000000000000..917c40d5c382 --- /dev/null +++ b/Documentation/devicetree/bindings/nvmem/xlnx,zynqmp-nvmem.yaml @@ -0,0 +1,42 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/nvmem/xlnx,zynqmp-nvmem.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Zynq UltraScale+ MPSoC Non Volatile Memory interface + +description: | + The ZynqMP MPSoC provides access to the hardware related data + like SOC revision, IDCODE and specific purpose efuses. + +maintainers: + - Kalyani Akula + - Praveen Teja Kundanala + +allOf: + - $ref: nvmem.yaml# + +properties: + compatible: + const: xlnx,zynqmp-nvmem-fw + +required: + - compatible + +unevaluatedProperties: false + +examples: + - | + nvmem { + compatible = "xlnx,zynqmp-nvmem-fw"; + nvmem-layout { + compatible = "fixed-layout"; + #address-cells = <1>; + #size-cells = <1>; + + soc_revision: soc-revision@0 { + reg = <0x0 0x4>; + }; + }; + }; From patchwork Mon Jan 8 05:26:17 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Praveen Teja Kundanala X-Patchwork-Id: 13513010 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 6B643C3DA6E for ; Mon, 8 Jan 2024 05:27:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:CC:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=ucMeYoozaVr15DQP3liDZsiB1x9coA5KmaZntJK8edo=; b=Af1ddgKzQwn/Ni t/bxLVVLeE77roIFJD0JFUb4u9ohCiJwxfUtXmQTGQ/64axm5vHa0cxpDV0/DhZCTrxZDtVjYZ05j va2m53uu15mV6O0teFmU2pmBJXw7ltWru+VPNxPLG/h/gM8WYb5Q2mfZGdwtVbUZnsrVVi6NYgI5e F0VBfQeDPGtd3iHhdaVlD7vMPzKRfyWPAzFuCtwbCeeDXD05/it4PuiZspQLcZ25DMw8JPHBGdGUa NAHk1/jc4OgOFxgtm7xIZcA9fL+Rr0gIAUJR08+1nyVdJhu47G74xbGXwFYdDHYU5329mzLamOh2v rLvsAV0J2YIeFKQ0HUBw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1rMiAY-0040uv-1L; Mon, 08 Jan 2024 05:27:26 +0000 Received: from mail-co1nam11on20600.outbound.protection.outlook.com ([2a01:111:f403:2416::600] helo=NAM11-CO1-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1rMiAV-0040so-1Q for linux-arm-kernel@lists.infradead.org; Mon, 08 Jan 2024 05:27:25 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=OCS9HMj92CEFPkPJ+LyyWi1pFE4i9ZSSQEiL2h1fRZGB9nBf56Us5SFsym93WQRYfmHjKx8QfgBKzWhh9v/OWRa90BnghJHBtUfpWxxAHLlqTBbd5KzNBoVcFec4Z7LYFDg0112L0tA7cSvY5/OCr6wQLFBjwd5GiX151+2BCF6mfFkxW2j4ASBEz2T2ra4eHnxaXGKFRaY5XZ4nLZHDV7bcPRnqI9MVrnt9OmgrWmsozGDrtYdF0asNtApw3gI+lPlWnvp7y89BcNYexu5aSi9EmafiABHA1kGZX6ebH/69N948FqTLZtgcFBIDeTUEpIZAhDOJEfDNJt5BrkZeEQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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=vVWatS5AbNd/jB3bOfkLVhHCKB6aD2Z1ZwSReJc2SdY=; b=C/R5y5sOzZUrI7E7b7I27h3OqjvitVuSfbI5uFovXibvrA7ovEuXVxXQ5tF4ckTLl0qaRjbX0SkhM0/8vmaPNOBcchenZe9B6+THoTZphBiBFtDJdXZQ0M3JZnstshx+VreowLweAVVaMhRNhEibcMdekqbXcgJ7d2bDf1TEVkz4Dsd6kIfAExd0Q3HR6E6IZomgElo1tosSXIM+bqXrjB6Z6lh/3lPZObV6R3qo3KvIvMK9p5WZSH6vY22fW8QFY0qBvDfyvU2aauHjmjVIPp+OQYHotDd2uqNshnotSs7Ic3JPMeLEMqmZMfxwA2ZcebyjDNdiT8kN4XJ/tHL80Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=linaro.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=vVWatS5AbNd/jB3bOfkLVhHCKB6aD2Z1ZwSReJc2SdY=; b=gjoP364YR3GIucDU7/VnvhSoyiPL1BJtv7QQlVfRvmGUdaCEh7AmX/8+g2BHaGsnYsHjHg1X5vPPy3GNIPLUXFW9a+hImRP3jCHNmlJ8z5zROAxR/9jVPlqGQXPLEMgLlcbqmWwNhfKsaSDKynpslVE2HCI3ACViQRwlv9zFtK0= Received: from DM6PR13CA0040.namprd13.prod.outlook.com (2603:10b6:5:134::17) by IA0PR12MB8253.namprd12.prod.outlook.com (2603:10b6:208:402::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.21; Mon, 8 Jan 2024 05:27:14 +0000 Received: from DS2PEPF00003442.namprd04.prod.outlook.com (2603:10b6:5:134:cafe::f5) by DM6PR13CA0040.outlook.office365.com (2603:10b6:5:134::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7181.14 via Frontend Transport; Mon, 8 Jan 2024 05:27:14 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB03.amd.com; pr=C Received: from SATLEXMB03.amd.com (165.204.84.17) by DS2PEPF00003442.mail.protection.outlook.com (10.167.17.69) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.7181.13 via Frontend Transport; Mon, 8 Jan 2024 05:27:14 +0000 Received: from SATLEXMB08.amd.com (10.181.40.132) by SATLEXMB03.amd.com (10.181.40.144) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Sun, 7 Jan 2024 23:27:13 -0600 Received: from SATLEXMB04.amd.com (10.181.40.145) by SATLEXMB08.amd.com (10.181.40.132) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.32; Sun, 7 Jan 2024 21:26:58 -0800 Received: from xhdbharathm40.xilinx.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.34 via Frontend Transport; Sun, 7 Jan 2024 23:26:56 -0600 From: Praveen Teja Kundanala To: , , , , , , CC: , Subject: [PATCH V3 3/3] nvmem: zynqmp_nvmem: Add support to access efuse Date: Mon, 8 Jan 2024 10:56:17 +0530 Message-ID: <20240108052617.32510-4-praveen.teja.kundanala@amd.com> X-Mailer: git-send-email 2.38.1 In-Reply-To: <20240108052617.32510-1-praveen.teja.kundanala@amd.com> References: <20240108052617.32510-1-praveen.teja.kundanala@amd.com> MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS2PEPF00003442:EE_|IA0PR12MB8253:EE_ X-MS-Office365-Filtering-Correlation-Id: 14dfe97b-6c36-4ce3-01d6-08dc100a790f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: b93GFQ2PZrjDTuLI73zKkubJ/nxj66VIz6AIa9b5wBr5YRahzN08yDHHMiNqt9f8iV+8DwlNgZvnrhyWnEK7GLC6j1Nprg39tHeqAqoWwvxudKzIGIaPVFIFswprbabkz452zFMaWqGUteTCUVVTzDKlPyByY7t+VnEeam6w0nuYIJtoyergQwBzMNtSFSRJH1gXL5Y64GXKSs4MZEz7+OnnRyDypAZHSwTueZ9GG+jSrb2G1H5LSxPlVneNx/ATY1BU5U4/3fsk0F+17zZvA7S4fZ8ZHDmsxNgirIy7Njs0ceLwecvrNzaiBHnnkIXqsCe0rWUcXpu767Ib441tX28hFtO7F+bkYpVs94W9BBapfaHD7OSgZYmzmY0Qpd14kQz0/iO/+xaGP/0FvC2HQYKEMBsTi8Fz1sS6cPDEgYKQMGSGco2AysXZU53e9yoH1PVfW0U4NIgwdTN60Omefkia1BoRUp3Gs10SOi25SF3987UIY/DhXm1car/iPskpyMg9OB+Zw+bRmpYUr8eAboV/GL30/dM9Q84KQixu2Pan+7JGZdhi1rpxlSBZpkhmQxFOhWosIrzP7V491vCXefSdhdKyiVKgb90sNfZMK7KNxy4hnQLJ71jXr1AF7KvzwQm2/tUJ08EgWElhto8tNhvEBa+9Q4cQojMRTkjKNiEr1ivEAnpuZhRnauspjffavLpXvddZSs7TatEFSv7q3TLI9mWJsYIVQigpoqXOtyARhrEsrv5cRgtOf9ttJPsR7cFDSaMNzCZRC5VcfKLHzg== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB03.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(39860400002)(346002)(136003)(396003)(376002)(230922051799003)(64100799003)(186009)(451199024)(1800799012)(82310400011)(40470700004)(46966006)(36840700001)(40460700003)(40480700001)(426003)(26005)(1076003)(2616005)(336012)(6666004)(478600001)(82740400003)(103116003)(36756003)(86362001)(81166007)(356005)(5660300002)(2906002)(41300700001)(36860700001)(47076005)(83380400001)(110136005)(70586007)(70206006)(316002)(4326008)(8676002)(8936002)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Jan 2024 05:27:14.5730 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 14dfe97b-6c36-4ce3-01d6-08dc100a790f X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB03.amd.com] X-MS-Exchange-CrossTenant-AuthSource: DS2PEPF00003442.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA0PR12MB8253 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240107_212723_538587_2B4A3651 X-CRM114-Status: GOOD ( 25.89 ) 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 support to read/write efuse memory map of ZynqMP. Below are the offsets of ZynqMP efuse memory map 0 - SOC version(read only) 0xC - 0xFC -ZynqMP specific purpose efuses 0x100 - 0x17F - Physical Unclonable Function(PUF) efuses repurposed as user efuses Signed-off-by: Praveen Teja Kundanala --- MAINTAINERS | 8 ++ drivers/nvmem/zynqmp_nvmem.c | 215 ++++++++++++++++++++++++++++++----- 2 files changed, 192 insertions(+), 31 deletions(-) diff --git a/MAINTAINERS b/MAINTAINERS index 97f51d5ec1cf..10cb04646b17 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -24008,6 +24008,14 @@ M: Harsha S: Maintained F: drivers/crypto/xilinx/zynqmp-sha.c +XILINX ZYNQMP NVMEM DRIVER +M: Praveen Teja Kundanala +M: Kalyani Akula +R: Michal Simek +S: Maintained +F: Documentation/devicetree/bindings/nvmem/xlnx,zynqmp-nvmem.yaml +F: drivers/nvmem/zynqmp_nvmem.c + XILLYBUS DRIVER M: Eli Billauer L: linux-kernel@vger.kernel.org diff --git a/drivers/nvmem/zynqmp_nvmem.c b/drivers/nvmem/zynqmp_nvmem.c index 7f15aa89a9d0..8682adaacd69 100644 --- a/drivers/nvmem/zynqmp_nvmem.c +++ b/drivers/nvmem/zynqmp_nvmem.c @@ -1,8 +1,10 @@ // SPDX-License-Identifier: GPL-2.0+ /* * Copyright (C) 2019 Xilinx, Inc. + * Copyright (C) 2022 - 2023, Advanced Micro Devices, Inc. */ +#include #include #include #include @@ -10,36 +12,190 @@ #include #define SILICON_REVISION_MASK 0xF +#define P_USER_0_64_UPPER_MASK GENMASK(31, 16) +#define P_USER_127_LOWER_4_BIT_MASK GENMASK(3, 0) +#define WORD_INBYTES 4 +#define SOC_VER_SIZE 0x4 +#define EFUSE_MEMORY_SIZE 0x177 +#define UNUSED_SPACE 0x8 +#define ZYNQMP_NVMEM_SIZE (SOC_VER_SIZE + UNUSED_SPACE + \ + EFUSE_MEMORY_SIZE) +#define SOC_VERSION_OFFSET 0x0 +#define EFUSE_START_OFFSET 0xC +#define EFUSE_END_OFFSET 0xFC +#define EFUSE_PUF_START_OFFSET 0x100 +#define EFUSE_PUF_MID_OFFSET 0x140 +#define EFUSE_PUF_END_OFFSET 0x17F +#define EFUSE_NOT_ENABLED 29 -struct zynqmp_nvmem_data { - struct device *dev; - struct nvmem_device *nvmem; +/* + * efuse access type + */ +enum efuse_access { + EFUSE_READ = 0, + EFUSE_WRITE +}; + +/** + * struct xilinx_efuse - the basic structure + * @src: address of the buffer to store the data to be write/read + * @size: read/write word count + * @offset: read/write offset + * @flag: 0 - represents efuse read and 1- represents efuse write + * @pufuserfuse:0 - represents non-puf efuses, offset is used for read/write + * 1 - represents puf user fuse row number. + * + * this structure stores all the required details to + * read/write efuse memory. + */ +struct xilinx_efuse { + u64 src; + u32 size; + u32 offset; + enum efuse_access flag; + u32 pufuserfuse; }; -static int zynqmp_nvmem_read(void *context, unsigned int offset, - void *val, size_t bytes) +static int zynqmp_efuse_access(void *context, unsigned int offset, + void *val, size_t bytes, enum efuse_access flag, + unsigned int pufflag) { + struct device *dev = context; + struct xilinx_efuse *efuse; + dma_addr_t dma_addr; + dma_addr_t dma_buf; + size_t words = bytes / WORD_INBYTES; int ret; - int idcode, version; - struct zynqmp_nvmem_data *priv = context; - - ret = zynqmp_pm_get_chipid(&idcode, &version); - if (ret < 0) - return ret; + int value; + char *data; + + if (bytes % WORD_INBYTES != 0) { + dev_err(dev, "Bytes requested should be word aligned\n"); + return -EOPNOTSUPP; + } + + if (pufflag == 0 && offset % WORD_INBYTES) { + dev_err(dev, "Offset requested should be word aligned\n"); + return -EOPNOTSUPP; + } + + if (pufflag == 1 && flag == EFUSE_WRITE) { + memcpy(&value, val, bytes); + if ((offset == EFUSE_PUF_START_OFFSET || + offset == EFUSE_PUF_MID_OFFSET) && + value & P_USER_0_64_UPPER_MASK) { + dev_err(dev, "Only lower 4 bytes are allowed to be programmed in P_USER_0 & P_USER_64\n"); + return -EOPNOTSUPP; + } + + if (offset == EFUSE_PUF_END_OFFSET && + (value & P_USER_127_LOWER_4_BIT_MASK)) { + dev_err(dev, "Only MSB 28 bits are allowed to be programmed for P_USER_127\n"); + return -EOPNOTSUPP; + } + } + + efuse = dma_alloc_coherent(dev, sizeof(struct xilinx_efuse), + &dma_addr, GFP_KERNEL); + if (!efuse) + return -ENOMEM; - dev_dbg(priv->dev, "Read chipid val %x %x\n", idcode, version); - *(int *)val = version & SILICON_REVISION_MASK; + data = dma_alloc_coherent(dev, sizeof(bytes), + &dma_buf, GFP_KERNEL); + if (!data) { + ret = -ENOMEM; + goto efuse_data_fail; + } + + if (flag == EFUSE_WRITE) { + memcpy(data, val, bytes); + efuse->flag = EFUSE_WRITE; + } else { + efuse->flag = EFUSE_READ; + } + + efuse->src = dma_buf; + efuse->size = words; + efuse->offset = offset; + efuse->pufuserfuse = pufflag; + + zynqmp_pm_efuse_access(dma_addr, (u32 *)&ret); + if (ret != 0) { + if (ret == EFUSE_NOT_ENABLED) { + dev_err(dev, "efuse access is not enabled\n"); + ret = -EOPNOTSUPP; + } else { + dev_err(dev, "Error in efuse read %x\n", ret); + ret = -EPERM; + } + goto efuse_access_err; + } + + if (flag == EFUSE_READ) + memcpy(val, data, bytes); +efuse_access_err: + dma_free_coherent(dev, sizeof(bytes), + data, dma_buf); +efuse_data_fail: + dma_free_coherent(dev, sizeof(struct xilinx_efuse), + efuse, dma_addr); + + return ret; +} - return 0; +static int zynqmp_nvmem_read(void *context, unsigned int offset, void *val, size_t bytes) +{ + struct device *dev = context; + int ret; + int pufflag = 0; + int idcode; + int version; + + if (offset >= EFUSE_PUF_START_OFFSET && offset <= EFUSE_PUF_END_OFFSET) + pufflag = 1; + + switch (offset) { + /* Soc version offset is zero */ + case SOC_VERSION_OFFSET: + if (bytes != SOC_VER_SIZE) + return -EOPNOTSUPP; + + ret = zynqmp_pm_get_chipid((u32 *)&idcode, (u32 *)&version); + if (ret < 0) + return ret; + + dev_dbg(dev, "Read chipid val %x %x\n", idcode, version); + *(int *)val = version & SILICON_REVISION_MASK; + break; + /* Efuse offset starts from 0xc */ + case EFUSE_START_OFFSET ... EFUSE_END_OFFSET: + case EFUSE_PUF_START_OFFSET ... EFUSE_PUF_END_OFFSET: + ret = zynqmp_efuse_access(context, offset, val, + bytes, EFUSE_READ, pufflag); + break; + default: + *(u32 *)val = 0xDEADBEEF; + ret = 0; + break; + } + + return ret; } -static struct nvmem_config econfig = { - .name = "zynqmp-nvmem", - .owner = THIS_MODULE, - .word_size = 1, - .size = 1, - .read_only = true, -}; +static int zynqmp_nvmem_write(void *context, + unsigned int offset, void *val, size_t bytes) +{ + int pufflag = 0; + + if (offset < EFUSE_START_OFFSET || offset > EFUSE_PUF_END_OFFSET) + return -EOPNOTSUPP; + + if (offset >= EFUSE_PUF_START_OFFSET && offset <= EFUSE_PUF_END_OFFSET) + pufflag = 1; + + return zynqmp_efuse_access(context, offset, + val, bytes, EFUSE_WRITE, pufflag); +} static const struct of_device_id zynqmp_nvmem_match[] = { { .compatible = "xlnx,zynqmp-nvmem-fw", }, @@ -50,21 +206,18 @@ MODULE_DEVICE_TABLE(of, zynqmp_nvmem_match); static int zynqmp_nvmem_probe(struct platform_device *pdev) { struct device *dev = &pdev->dev; - struct zynqmp_nvmem_data *priv; - - priv = devm_kzalloc(dev, sizeof(struct zynqmp_nvmem_data), GFP_KERNEL); - if (!priv) - return -ENOMEM; + struct nvmem_config econfig = {}; - priv->dev = dev; + econfig.name = "zynqmp-nvmem"; + econfig.owner = THIS_MODULE; + econfig.word_size = 1; + econfig.size = ZYNQMP_NVMEM_SIZE; econfig.dev = dev; econfig.add_legacy_fixed_of_cells = true; econfig.reg_read = zynqmp_nvmem_read; - econfig.priv = priv; - - priv->nvmem = devm_nvmem_register(dev, &econfig); + econfig.reg_write = zynqmp_nvmem_write; - return PTR_ERR_OR_ZERO(priv->nvmem); + return PTR_ERR_OR_ZERO(devm_nvmem_register(dev, &econfig)); } static struct platform_driver zynqmp_nvmem_driver = {