diff --git a/ArmVirtPkg/ArmVirt.dsc.inc b/ArmVirtPkg/ArmVirt.dsc.inc index eb0bca24ea..3462adf9b6 100644 --- a/ArmVirtPkg/ArmVirt.dsc.inc +++ b/ArmVirtPkg/ArmVirt.dsc.inc @@ -114,7 +114,7 @@ PlatformPeiLib|ArmVirtPkg/Library/PlatformPeiLib/PlatformPeiLib.inf MemoryInitPeiLib|ArmVirtPkg/Library/ArmVirtMemoryInitPeiLib/ArmVirtMemoryInitPeiLib.inf - ResetSystemLib|ArmVirtPkg/Library/ArmVirtPsciResetSystemLib/ArmVirtPsciResetSystemLib.inf + ResetSystemLib|ArmPkg/Library/ArmPsciResetSystemLib/ArmPsciResetSystemLib.inf # ARM PL031 RTC Driver RealTimeClockLib|ArmPlatformPkg/Library/PL031RealTimeClockLib/PL031RealTimeClockLib.inf diff --git a/ArmVirtPkg/Library/ArmVirtPsciResetSystemLib/ArmVirtPsciResetSystemLib.c b/ArmVirtPkg/Library/ArmVirtPsciResetSystemLib/ArmVirtPsciResetSystemLib.c deleted file mode 100644 index 1f27b7648d..0000000000 --- a/ArmVirtPkg/Library/ArmVirtPsciResetSystemLib/ArmVirtPsciResetSystemLib.c +++ /dev/null @@ -1,224 +0,0 @@ -/** @file - Support ResetSystem Runtime call using PSCI calls - - Note: A similar library is implemented in - ArmPkg/Library/ArmPsciResetSystemLib. Similar issues might - exist in this implementation too. - - Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.
- Copyright (c) 2013, ARM Ltd. All rights reserved.
- Copyright (c) 2014, Linaro Ltd. All rights reserved.
- Copyright (c) 2019, Intel Corporation. All rights reserved.
- - SPDX-License-Identifier: BSD-2-Clause-Patent - -**/ - -#include - -#include -#include -#include -#include -#include -#include - -#include - -#include - -STATIC UINT32 mArmPsciMethod; - -RETURN_STATUS -EFIAPI -ArmPsciResetSystemLibConstructor ( - VOID - ) -{ - EFI_STATUS Status; - FDT_CLIENT_PROTOCOL *FdtClient; - CONST VOID *Prop; - - Status = gBS->LocateProtocol ( - &gFdtClientProtocolGuid, - NULL, - (VOID **)&FdtClient - ); - ASSERT_EFI_ERROR (Status); - - Status = FdtClient->FindCompatibleNodeProperty ( - FdtClient, - "arm,psci-0.2", - "method", - &Prop, - NULL - ); - if (EFI_ERROR (Status)) { - return Status; - } - - if (AsciiStrnCmp (Prop, "hvc", 3) == 0) { - mArmPsciMethod = 1; - } else if (AsciiStrnCmp (Prop, "smc", 3) == 0) { - mArmPsciMethod = 2; - } else { - DEBUG (( - DEBUG_ERROR, - "%a: Unknown PSCI method \"%a\"\n", - __func__, - Prop - )); - return EFI_NOT_FOUND; - } - - return EFI_SUCCESS; -} - -/** - This function causes a system-wide reset (cold reset), in which - all circuitry within the system returns to its initial state. This type of reset - is asynchronous to system operation and operates without regard to - cycle boundaries. - - If this function returns, it means that the system does not support cold reset. -**/ -VOID -EFIAPI -ResetCold ( - VOID - ) -{ - ARM_SMC_ARGS ArmSmcArgs; - ARM_HVC_ARGS ArmHvcArgs; - - // Send a PSCI 0.2 SYSTEM_RESET command - ArmSmcArgs.Arg0 = ARM_SMC_ID_PSCI_SYSTEM_RESET; - ArmHvcArgs.Arg0 = ARM_SMC_ID_PSCI_SYSTEM_RESET; - - switch (mArmPsciMethod) { - case 1: - ArmCallHvc (&ArmHvcArgs); - break; - - case 2: - ArmCallSmc (&ArmSmcArgs); - break; - - default: - DEBUG ((DEBUG_ERROR, "%a: no PSCI method defined\n", __func__)); - } -} - -/** - This function causes a system-wide initialization (warm reset), in which all processors - are set to their initial state. Pending cycles are not corrupted. - - If this function returns, it means that the system does not support warm reset. -**/ -VOID -EFIAPI -ResetWarm ( - VOID - ) -{ - // Map a warm reset into a cold reset - ResetCold (); -} - -/** - This function causes the system to enter a power state equivalent - to the ACPI G2/S5 or G3 states. - - If this function returns, it means that the system does not support shutdown reset. -**/ -VOID -EFIAPI -ResetShutdown ( - VOID - ) -{ - ARM_SMC_ARGS ArmSmcArgs; - ARM_HVC_ARGS ArmHvcArgs; - - // Send a PSCI 0.2 SYSTEM_OFF command - ArmSmcArgs.Arg0 = ARM_SMC_ID_PSCI_SYSTEM_OFF; - ArmHvcArgs.Arg0 = ARM_SMC_ID_PSCI_SYSTEM_OFF; - - switch (mArmPsciMethod) { - case 1: - ArmCallHvc (&ArmHvcArgs); - break; - - case 2: - ArmCallSmc (&ArmSmcArgs); - break; - - default: - DEBUG ((DEBUG_ERROR, "%a: no PSCI method defined\n", __func__)); - } -} - -/** - This function causes a systemwide reset. The exact type of the reset is - defined by the EFI_GUID that follows the Null-terminated Unicode string passed - into ResetData. If the platform does not recognize the EFI_GUID in ResetData - the platform must pick a supported reset type to perform.The platform may - optionally log the parameters from any non-normal reset that occurs. - - @param[in] DataSize The size, in bytes, of ResetData. - @param[in] ResetData The data buffer starts with a Null-terminated string, - followed by the EFI_GUID. -**/ -VOID -EFIAPI -ResetPlatformSpecific ( - IN UINTN DataSize, - IN VOID *ResetData - ) -{ - // Map the platform specific reset as reboot - ResetCold (); -} - -/** - The ResetSystem function resets the entire platform. - - @param[in] ResetType The type of reset to perform. - @param[in] ResetStatus The status code for the reset. - @param[in] DataSize The size, in bytes, of ResetData. - @param[in] ResetData For a ResetType of EfiResetCold, EfiResetWarm, or EfiResetShutdown - the data buffer starts with a Null-terminated string, optionally - followed by additional binary data. The string is a description - that the caller may use to further indicate the reason for the - system reset. -**/ -VOID -EFIAPI -ResetSystem ( - IN EFI_RESET_TYPE ResetType, - IN EFI_STATUS ResetStatus, - IN UINTN DataSize, - IN VOID *ResetData OPTIONAL - ) -{ - switch (ResetType) { - case EfiResetWarm: - ResetWarm (); - break; - - case EfiResetCold: - ResetCold (); - break; - - case EfiResetShutdown: - ResetShutdown (); - return; - - case EfiResetPlatformSpecific: - ResetPlatformSpecific (DataSize, ResetData); - return; - - default: - return; - } -} diff --git a/ArmVirtPkg/Library/ArmVirtPsciResetSystemLib/ArmVirtPsciResetSystemLib.inf b/ArmVirtPkg/Library/ArmVirtPsciResetSystemLib/ArmVirtPsciResetSystemLib.inf deleted file mode 100644 index 4fde5e443f..0000000000 --- a/ArmVirtPkg/Library/ArmVirtPsciResetSystemLib/ArmVirtPsciResetSystemLib.inf +++ /dev/null @@ -1,42 +0,0 @@ -#/** @file -# Reset System lib using PSCI hypervisor or secure monitor calls -# -# Copyright (c) 2008, Apple Inc. All rights reserved.
-# Copyright (c) 2014, Linaro Ltd. All rights reserved.
-# -# SPDX-License-Identifier: BSD-2-Clause-Patent -# -# -#**/ - -[Defines] - INF_VERSION = 0x00010005 - BASE_NAME = ArmVirtPsciResetSystemLib - FILE_GUID = c81d76ed-66fa-44a3-ac4a-f163120187a9 - MODULE_TYPE = BASE - VERSION_STRING = 1.0 - LIBRARY_CLASS = ResetSystemLib|DXE_DRIVER DXE_RUNTIME_DRIVER - CONSTRUCTOR = ArmPsciResetSystemLibConstructor - -[Sources] - ArmVirtPsciResetSystemLib.c - -[Packages] - ArmPkg/ArmPkg.dec - ArmVirtPkg/ArmVirtPkg.dec - EmbeddedPkg/EmbeddedPkg.dec - MdeModulePkg/MdeModulePkg.dec - MdePkg/MdePkg.dec - -[LibraryClasses] - ArmSmcLib - ArmHvcLib - BaseLib - DebugLib - UefiBootServicesTableLib - -[Protocols] - gFdtClientProtocolGuid ## CONSUMES - -[Depex] - gFdtClientProtocolGuid