From nobody Tue Feb 10 11:16:11 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+98417+1787277+3901457@groups.io; helo=mail02.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+98417+1787277+3901457@groups.io ARC-Seal: i=1; a=rsa-sha256; t=1673575532; cv=none; d=zohomail.com; s=zohoarc; b=ElvVTs4eJg4o/Lt+SWndNhU8wTzX0dXsgJne2i1CxkuQBk+Uou3ODQZOndVTIGwKwuqxaShvkpN75CJZPil9m3B41Eakm+hK0u3onkNx8PDQf29xmpKJTAbWRTwFhJvIbzlIVv+1L9Gc0ALc2RS0Hk2MWA9Fspl+Ywz6CSY26HU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1673575532; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=yNxRua8ugnhC6eTGZBmyIVx2ZfVYFLBg6BJhK0P6ANA=; b=gYv7fhhaD/6B3+Ql2tDPuwbnzVEgRE07BJqmcltfgmkWJnd/Tah5WqmJkFvZ6akt2WYdntb6eK3jusioEIFB0mjFLqkq8gurH3NBR3Wq8IyJ6XtMYpvwxYtbhlDDntxKKY99uchOfq+07FJqPB3lEj75sR+Nom+NvwNAtkp5d2w= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+98417+1787277+3901457@groups.io Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1673575532084530.7344280903105; Thu, 12 Jan 2023 18:05:32 -0800 (PST) Return-Path: X-Received: by 127.0.0.2 with SMTP id kWDjYY1788612xgguRTpo08D; Thu, 12 Jan 2023 18:05:31 -0800 X-Received: from loongson.cn (loongson.cn [114.242.206.163]) by mx.groups.io with SMTP id smtpd.web10.76123.1673575530609952392 for ; Thu, 12 Jan 2023 18:05:31 -0800 X-Received: from loongson.cn (unknown [10.2.5.185]) by gateway (Coremail) with SMTP id _____8BxKuppvMBjc14BAA--.4197S3; Fri, 13 Jan 2023 10:05:29 +0800 (CST) X-Received: from localhost.localdomain (unknown [10.2.5.185]) by localhost.localdomain (Coremail) with SMTP id AQAAf8Cxnb5ZvMBjTroYAA--.49812S5; Fri, 13 Jan 2023 10:05:29 +0800 (CST) From: "xianglai" To: devel@edk2.groups.io Cc: Ard Biesheuvel , Bibo Mao , Chao Li , Leif Lindholm , Liming Gao , Michael D Kinney Subject: [edk2-devel] [edk2-platforms][PATCH V3 3/8] Platform/Loongson: Add pflash driver. Date: Fri, 13 Jan 2023 10:05:07 +0800 Message-Id: <6074639b5f83fff26b2b7211cb71f2d75bd0ddb1.1673573841.git.lixianglai@loongson.cn> In-Reply-To: References: MIME-Version: 1.0 X-CM-TRANSID: AQAAf8Cxnb5ZvMBjTroYAA--.49812S5 X-CM-SenderInfo: 5ol0xt5qjotxo6or00hjvr0hdfq/ X-Coremail-Antispam: 1Uk129KBjvJXoW3Gr1ftr15Zr4kWF43Zw45Awb_yoWxXw1xpa 1UXFWkKwsrXFW3twsxA3WUXr43AFW3C39xJ39FqF1DC3ZrKFnIkw1jvr1rXFsrXryUXr1j qw409ayDW3WDXw7anT9S1TB71UUUUU7qnTZGkaVYY2UrUUUUj1kv1TuYvTs0mT0YCTnIWj qI5I8CrVACY4xI64kE6c02F40Ex7xfYxn0WfASr-VFAUDa7-sFnT9fnUUIcSsGvfJTRUUU b0AFc2x0x2IEx4CE42xK8VAvwI8IcIk0rVWrJVCq3wA2ocxC64kIII0Yj41l84x0c7CEw4 AK67xGY2AK021l84ACjcxK6xIIjxv20xvE14v26r4j6ryUM28EF7xvwVC0I7IYx2IY6xkF 7I0E14v26r4j6F4UM28EF7xvwVC2z280aVAFwI0_Cr0_Gr1UM28EF7xvwVC2z280aVCY1x 0267AKxVW8JVW8Jr1le2I262IYc4CY6c8Ij28IcVAaY2xG8wAqjxCEc2xF0cIa020Ex4CE 44I27wAqx4xG64xvF2IEw4CE5I8CrVC2j2WlYx0E74AGY7Cv6cx26rWlOx8S6xCaFVCjc4 AY6r1j6r4UM4x0Y48IcxkI7VAKI48JMxAIw28IcxkI7VAKI48JMxAIw28IcVCjz48v1sIE Y20_WwCFx2IqxVCFs4IE7xkEbVWUJVW8JwC20s026c02F40E14v26r1j6r18MI8I3I0E74 80Y4vE14v26r106r1rMI8E67AF67kF1VAFwI0_JF0_Jw1lIxkGc2Ij64vIr41lIxAIcVC0 I7IYx2IY67AKxVW8JVW5JwCI42IY6xIIjxv20xvEc7CjxVAFwI0_Gr0_Cr1lIxAIcVCF04 k26cxKx2IYs7xG6r1j6r1xMIIF0xvEx4A2jsIE14v26r4j6F4UMIIF0xvEx4A2jsIEc7Cj xVAFwI0_Gr0_Gr1UYxBIdaVFxhVjvjDU0xZFpf9x0zRVWlkUUUUU= Precedence: Bulk List-Unsubscribe: List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,lixianglai@loongson.cn X-Gm-Message-State: pJs6zLdakl7Ksrub6qwS9jyVx1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1673575531; bh=fGigIy2+6TpcddFb2GbiTT9xM2qVpXrSPOw5xt9eQeA=; h=Cc:Date:From:Reply-To:Subject:To; b=HSUd+OPeNXOj1wFdZ9bSKJyX3YmCvEcpj/6kSF7EdBzycCiGLQLIY+Oss4vZNjjKp/1 EaiaraMPNmzBFpqp1XzIbwOfyEuv7heiP30B9fMn79HRjqc6pNtXN5vtw6bNHGaW/CwUH MiEZ2EMNS+qRGAdcpsLgHYsI1x2R5djTpxQ= X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1673575532742100002 Content-Type: text/plain; charset="utf-8" Add pflash driver for loongarch. Cc: Ard Biesheuvel Cc: Bibo Mao Cc: Chao Li Cc: Leif Lindholm Cc: Liming Gao Cc: Michael D Kinney Signed-off-by: xianglai li --- .../Library/NorFlashQemuLib/NorFlashQemuLib.c | 141 ++++++++++++++++++ .../NorFlashQemuLib/NorFlashQemuLib.inf | 43 ++++++ 2 files changed, 184 insertions(+) create mode 100644 Platform/Loongson/LoongArchQemuPkg/Library/NorFlashQemu= Lib/NorFlashQemuLib.c create mode 100644 Platform/Loongson/LoongArchQemuPkg/Library/NorFlashQemu= Lib/NorFlashQemuLib.inf diff --git a/Platform/Loongson/LoongArchQemuPkg/Library/NorFlashQemuLib/Nor= FlashQemuLib.c b/Platform/Loongson/LoongArchQemuPkg/Library/NorFlashQemuLib= /NorFlashQemuLib.c new file mode 100644 index 0000000000..2e0bf3cef0 --- /dev/null +++ b/Platform/Loongson/LoongArchQemuPkg/Library/NorFlashQemuLib/NorFlashQe= muLib.c @@ -0,0 +1,141 @@ +/** @file + + Copyright (c) 2023 Loongson Technology Corporation Limited. All rights r= eserved.
+ + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + + +#include +#include +#include +#include + +#include + +#define QEMU_NOR_BLOCK_SIZE SIZE_128KB + +EFI_STATUS +VirtNorFlashPlatformInitialization ( + VOID + ) +{ + return EFI_SUCCESS; +} + +STATIC VIRT_NOR_FLASH_DESCRIPTION mNorFlashDevices; + +EFI_STATUS +VirtNorFlashPlatformGetDevices ( + OUT VIRT_NOR_FLASH_DESCRIPTION **NorFlashDescriptions, + OUT UINT32 *Count + ) +{ + FDT_CLIENT_PROTOCOL *FdtClient; + INT32 Node; + EFI_STATUS Status; + EFI_STATUS FindNodeStatus; + CONST UINT32 *Reg; + UINT32 PropSize; + UINT64 Base; + UINT64 Size; + + Status =3D gBS->LocateProtocol ( + &gFdtClientProtocolGuid, + NULL, + (VOID **)&FdtClient + ); + ASSERT_EFI_ERROR (Status); + + FindNodeStatus =3D FdtClient->FindCompatibleNode ( + FdtClient, + "cfi-flash", + &Node + ); + ASSERT_EFI_ERROR (FindNodeStatus); + + Status =3D FdtClient->GetNodeProperty ( + FdtClient, + Node, + "reg", + (CONST VOID **)&Reg, + &PropSize + ); + if (EFI_ERROR (Status)) { + DEBUG (( + DEBUG_ERROR, + "%a: GetNodeProperty () failed (Status =3D=3D %r)\n", + __FUNCTION__, + Status + )); + return Status; + } + + ASSERT ((PropSize % (4 * sizeof (UINT32))) =3D=3D 0); + + if (PropSize < (4 * sizeof (UINT32))) { + DEBUG (( + DEBUG_ERROR, + "%a: reg node size(%d) is too small \n", + __FUNCTION__, + PropSize + )); + return EFI_NOT_FOUND; + } + + Base =3D SwapBytes64 (ReadUnaligned64 ((VOID *)&Reg[0])); + Size =3D SwapBytes64 (ReadUnaligned64 ((VOID *)&Reg[2])); + + mNorFlashDevices.DeviceBaseAddress =3D (UINTN)Base; + mNorFlashDevices.RegionBaseAddress =3D (UINTN)Base; + mNorFlashDevices.Size =3D (UINTN)Size; + mNorFlashDevices.BlockSize =3D QEMU_NOR_BLOCK_SIZE; + + Status =3D PcdSet32S (PcdFlashNvStorageVariableBase, Base); + ASSERT_EFI_ERROR (Status); + + /* + * Base is the value of PcdFlashNvStorageVariableBase, + * PcdFlashNvStorageFtwWorkingBase can be got by + * PcdFlashNvStorageVariableBase + PcdFlashNvStorageVariableSize + */ + Base +=3D PcdGet32 (PcdFlashNvStorageVariableSize); + Status =3D PcdSet32S (PcdFlashNvStorageFtwWorkingBase, Base); + ASSERT_EFI_ERROR (Status); + + /* + * Now,Base is the value of PcdFlashNvStorageFtwWorkingBase, + * PcdFlashNvStorageFtwSpareBase can be got by + * PcdFlashNvStorageFtwWorkingBase + PcdFlashNvStorageFtwWorkingSize. + */ + Base +=3D PcdGet32 (PcdFlashNvStorageFtwWorkingSize); + Status =3D PcdSet32S (PcdFlashNvStorageFtwSpareBase, Base); + ASSERT_EFI_ERROR (Status); + + // + // UEFI takes ownership of the NOR flash, and exposes its functionality + // through the UEFI Runtime Services GetVariable, SetVariable, etc. This + // means we need to disable it in the device tree to prevent the OS from + // attaching its device driver as well. + // Note that this also hides other flash banks, but the only other flash + // bank we expect to encounter is the one that carries the UEFI executab= le + // code, which is not intended to be guest updatable, and is usually bac= ked + // in a readonly manner by QEMU anyway. + // + Status =3D FdtClient->SetNodeProperty ( + FdtClient, + Node, + "status", + "disabled", + sizeof ("disabled") + ); + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_WARN, "Failed to set NOR flash status to 'disabled'\n")); + } + + *NorFlashDescriptions =3D &mNorFlashDevices; + *Count =3D 1; + + return EFI_SUCCESS; +} diff --git a/Platform/Loongson/LoongArchQemuPkg/Library/NorFlashQemuLib/Nor= FlashQemuLib.inf b/Platform/Loongson/LoongArchQemuPkg/Library/NorFlashQemuL= ib/NorFlashQemuLib.inf new file mode 100644 index 0000000000..da05ca0898 --- /dev/null +++ b/Platform/Loongson/LoongArchQemuPkg/Library/NorFlashQemuLib/NorFlashQe= muLib.inf @@ -0,0 +1,43 @@ +## @file +# +# Copyright (c) 2023 Loongson Technology Corporation Limited. All rights = reserved.
+# +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[Defines] + INF_VERSION =3D 0x00010005 + BASE_NAME =3D NorFlashQemuLib + FILE_GUID =3D 339B7829-4C5F-4EFC-B2DD-5050E530DECE + MODULE_TYPE =3D DXE_DRIVER + VERSION_STRING =3D 1.0 + LIBRARY_CLASS =3D VirtNorFlashPlatformLib + +[Sources.common] + NorFlashQemuLib.c + +[Packages] + MdePkg/MdePkg.dec + EmbeddedPkg/EmbeddedPkg.dec + OvmfPkg/OvmfPkg.dec + MdeModulePkg/MdeModulePkg.dec + +[LibraryClasses] + BaseLib + DebugLib + UefiBootServicesTableLib + +[Protocols] + gFdtClientProtocolGuid ## CONSUMES + +[Depex] + gFdtClientProtocolGuid + +[Pcd] +gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize +gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareSize +gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingSize +gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase +gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase +gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareBase --=20 2.31.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#98417): https://edk2.groups.io/g/devel/message/98417 Mute This Topic: https://groups.io/mt/96238011/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-