mirror of https://github.com/acidanthera/audk.git
ArmVirtPkg: Remove the NorFlashQemuLib
The FdtNorFlashQemuLib has been enabled, remove ArmVirtPkg version. BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=4770 Cc: Ard Biesheuvel <ardb+tianocore@kernel.org> Cc: Leif Lindholm <quic_llindhol@quicinc.com> Cc: Sami Mujawar <sami.mujawar@arm.com> Cc: Gerd Hoffmann <kraxel@redhat.com> Signed-off-by: Chao Li <lichao@loongson.cn>
This commit is contained in:
parent
10cd8b45ce
commit
10ab1c67c4
|
@ -1,136 +0,0 @@
|
|||
/** @file
|
||||
|
||||
Copyright (c) 2014-2018, Linaro Ltd. All rights reserved.<BR>
|
||||
|
||||
SPDX-License-Identifier: BSD-2-Clause-Patent
|
||||
|
||||
**/
|
||||
|
||||
#include <Library/BaseLib.h>
|
||||
#include <Library/DebugLib.h>
|
||||
#include <Library/UefiBootServicesTableLib.h>
|
||||
#include <Library/VirtNorFlashPlatformLib.h>
|
||||
|
||||
#include <Protocol/FdtClient.h>
|
||||
|
||||
#define QEMU_NOR_BLOCK_SIZE SIZE_256KB
|
||||
|
||||
#define MAX_FLASH_BANKS 4
|
||||
|
||||
EFI_STATUS
|
||||
VirtNorFlashPlatformInitialization (
|
||||
VOID
|
||||
)
|
||||
{
|
||||
return EFI_SUCCESS;
|
||||
}
|
||||
|
||||
STATIC VIRT_NOR_FLASH_DESCRIPTION mNorFlashDevices[MAX_FLASH_BANKS];
|
||||
|
||||
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;
|
||||
UINT32 Num;
|
||||
UINT64 Base;
|
||||
UINT64 Size;
|
||||
|
||||
Status = gBS->LocateProtocol (
|
||||
&gFdtClientProtocolGuid,
|
||||
NULL,
|
||||
(VOID **)&FdtClient
|
||||
);
|
||||
ASSERT_EFI_ERROR (Status);
|
||||
|
||||
Num = 0;
|
||||
for (FindNodeStatus = FdtClient->FindCompatibleNode (
|
||||
FdtClient,
|
||||
"cfi-flash",
|
||||
&Node
|
||||
);
|
||||
!EFI_ERROR (FindNodeStatus) && Num < MAX_FLASH_BANKS;
|
||||
FindNodeStatus = FdtClient->FindNextCompatibleNode (
|
||||
FdtClient,
|
||||
"cfi-flash",
|
||||
Node,
|
||||
&Node
|
||||
))
|
||||
{
|
||||
Status = FdtClient->GetNodeProperty (
|
||||
FdtClient,
|
||||
Node,
|
||||
"reg",
|
||||
(CONST VOID **)&Reg,
|
||||
&PropSize
|
||||
);
|
||||
if (EFI_ERROR (Status)) {
|
||||
DEBUG ((
|
||||
DEBUG_ERROR,
|
||||
"%a: GetNodeProperty () failed (Status == %r)\n",
|
||||
__func__,
|
||||
Status
|
||||
));
|
||||
continue;
|
||||
}
|
||||
|
||||
ASSERT ((PropSize % (4 * sizeof (UINT32))) == 0);
|
||||
|
||||
while (PropSize >= (4 * sizeof (UINT32)) && Num < MAX_FLASH_BANKS) {
|
||||
Base = SwapBytes64 (ReadUnaligned64 ((VOID *)&Reg[0]));
|
||||
Size = SwapBytes64 (ReadUnaligned64 ((VOID *)&Reg[2]));
|
||||
Reg += 4;
|
||||
|
||||
PropSize -= 4 * sizeof (UINT32);
|
||||
|
||||
//
|
||||
// Disregard any flash devices that overlap with the primary FV.
|
||||
// The firmware is not updatable from inside the guest anyway.
|
||||
//
|
||||
if ((PcdGet64 (PcdFvBaseAddress) + PcdGet32 (PcdFvSize) > Base) &&
|
||||
((Base + Size) > PcdGet64 (PcdFvBaseAddress)))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
mNorFlashDevices[Num].DeviceBaseAddress = (UINTN)Base;
|
||||
mNorFlashDevices[Num].RegionBaseAddress = (UINTN)Base;
|
||||
mNorFlashDevices[Num].Size = (UINTN)Size;
|
||||
mNorFlashDevices[Num].BlockSize = QEMU_NOR_BLOCK_SIZE;
|
||||
Num++;
|
||||
}
|
||||
|
||||
//
|
||||
// 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 executable
|
||||
// code, which is not intended to be guest updatable, and is usually backed
|
||||
// in a readonly manner by QEMU anyway.
|
||||
//
|
||||
Status = 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 = mNorFlashDevices;
|
||||
*Count = Num;
|
||||
|
||||
return EFI_SUCCESS;
|
||||
}
|
|
@ -1,42 +0,0 @@
|
|||
#/** @file
|
||||
#
|
||||
# Component description file for NorFlashQemuLib module
|
||||
#
|
||||
# Copyright (c) 2014, Linaro Ltd. All rights reserved.<BR>
|
||||
#
|
||||
# SPDX-License-Identifier: BSD-2-Clause-Patent
|
||||
#
|
||||
#**/
|
||||
|
||||
[Defines]
|
||||
INF_VERSION = 0x00010005
|
||||
BASE_NAME = NorFlashQemuLib
|
||||
FILE_GUID = 339B7829-4C5F-4EFC-B2DD-5050E530DECE
|
||||
MODULE_TYPE = DXE_DRIVER
|
||||
VERSION_STRING = 1.0
|
||||
LIBRARY_CLASS = VirtNorFlashPlatformLib
|
||||
|
||||
[Sources.common]
|
||||
NorFlashQemuLib.c
|
||||
|
||||
[Packages]
|
||||
MdePkg/MdePkg.dec
|
||||
ArmPkg/ArmPkg.dec
|
||||
ArmVirtPkg/ArmVirtPkg.dec
|
||||
EmbeddedPkg/EmbeddedPkg.dec
|
||||
OvmfPkg/OvmfPkg.dec
|
||||
|
||||
[LibraryClasses]
|
||||
BaseLib
|
||||
DebugLib
|
||||
UefiBootServicesTableLib
|
||||
|
||||
[Protocols]
|
||||
gFdtClientProtocolGuid ## CONSUMES
|
||||
|
||||
[Depex]
|
||||
gFdtClientProtocolGuid
|
||||
|
||||
[Pcd]
|
||||
gArmTokenSpaceGuid.PcdFvBaseAddress
|
||||
gArmTokenSpaceGuid.PcdFvSize
|
Loading…
Reference in New Issue