From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: None (no SPF record) identity=mailfrom; client-ip=2a00:1450:4864:20::541; helo=mail-ed1-x541.google.com; envelope-from=pete@akeo.ie; receiver=edk2-devel@lists.01.org Received: from mail-ed1-x541.google.com (mail-ed1-x541.google.com [IPv6:2a00:1450:4864:20::541]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 1C22C2194D387 for ; Tue, 5 Feb 2019 08:25:59 -0800 (PST) Received: by mail-ed1-x541.google.com with SMTP id b14so3349441edt.6 for ; Tue, 05 Feb 2019 08:25:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=akeo-ie.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=aJuMpTUIfdHJWjhPgR2kcc4xkXhaC6zkUrLZCewa+sQ=; b=zvAhvFPqI8MrP7NQBq5i/wvgu1Q9NlQo+LN/8bri0lfiGHgqPsBW6FI52DU2jvDTZ8 RS6H54qcfNIdHzgRfOOQSThJay2eFGgi2C/9vGlKKlogM2gb88QQNZeHi1DvALKNoZmG 6jaywuIjbdGjNIMcAzbB+rTreO44PhGZ66vfgwtENQG7PyiYcDBX36OeMM7rmLKz9S0q k2xea8nDk/0Pbbjw0nYJrryLGCfr3sgUjXAYELvNDnV/x+eVDnid/B+kfOIRJxSvcCmQ sB8PGPe2bEa74zUYyMaOYIvir4aHhv0MHSAuNpwP+D99RluXIOm3JemVj/L9xi8s7xzU 7sJw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=aJuMpTUIfdHJWjhPgR2kcc4xkXhaC6zkUrLZCewa+sQ=; b=ecHN0s0G5Jxa5Zqg6F2NIYt5XztKEQAPAoJoMxT+ENtc9tby/w0AWxFu3pJc3cfz/U BnEwosZU5HJUbXex8QHEx6qDebwm9iJNrRB2A9W/+X5A2NCXy/y3ybsSqNDGzW1SyBP1 zZiEOM3gaAsxVwmJsO1VLgku7/L2y/Lo59C8SndSEaufVKtHqOluD0Ibu6k1twzGs75n GCHMGx9FgZ4y2uHRsn34VsGtCYB/6ksq0ZjlZE0QhCVC8TCAs7JFcybwO7pGe6/psJ/L 5jOOc7NL11LlyMMCTSft6/5duh7eidFkKlM4+6KNO1JT8+ChWXIyvL0h9oTwogNjwKbS 5wRw== X-Gm-Message-State: AHQUAuY008u4Kw6ICh4F8Bh9+/NjReC2gzQig3POIZzRsNPqtJuaJC/p PzoZJ+ezPV4d5fzx9SZUSqEcrW3vDQo= X-Google-Smtp-Source: AHgI3IYoZLoUso8+nlDy5/n1rlEoPuwUN9p9ZqPfd84teCF/YdCyp5hVaqxuKaTiwnFOqhWHOEJYUQ== X-Received: by 2002:a17:906:28c9:: with SMTP id p9mr344654ejd.77.1549383957099; Tue, 05 Feb 2019 08:25:57 -0800 (PST) Received: from localhost.localdomain ([84.203.58.139]) by smtp.gmail.com with ESMTPSA id j16sm3191430ejq.59.2019.02.05.08.25.55 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 05 Feb 2019 08:25:56 -0800 (PST) From: Pete Batard To: edk2-devel@lists.01.org Date: Tue, 5 Feb 2019 16:25:19 +0000 Message-Id: <20190205162537.6472-5-pete@akeo.ie> X-Mailer: git-send-email 2.17.0.windows.1 In-Reply-To: <20190205162537.6472-1-pete@akeo.ie> References: <20190205162537.6472-1-pete@akeo.ie> Subject: [PATCH v5 edk2-platforms 04/22] Platform/RaspberryPi/RPi3: Add reset and memory init libraries X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 05 Feb 2019 16:25:59 -0000 X-List-Received-Date: Tue, 05 Feb 2019 16:25:59 -0000 X-List-Received-Date: Tue, 05 Feb 2019 16:25:59 -0000 X-List-Received-Date: Tue, 05 Feb 2019 16:25:59 -0000 X-List-Received-Date: Tue, 05 Feb 2019 16:25:59 -0000 X-List-Received-Date: Tue, 05 Feb 2019 16:25:59 -0000 X-List-Received-Date: Tue, 05 Feb 2019 16:25:59 -0000 X-List-Received-Date: Tue, 05 Feb 2019 16:25:59 -0000 X-List-Received-Date: Tue, 05 Feb 2019 16:25:59 -0000 X-List-Received-Date: Tue, 05 Feb 2019 16:25:59 -0000 X-List-Received-Date: Tue, 05 Feb 2019 16:25:59 -0000 X-List-Received-Date: Tue, 05 Feb 2019 16:25:59 -0000 X-List-Received-Date: Tue, 05 Feb 2019 16:25:59 -0000 X-List-Received-Date: Tue, 05 Feb 2019 16:25:59 -0000 X-List-Received-Date: Tue, 05 Feb 2019 16:25:59 -0000 X-List-Received-Date: Tue, 05 Feb 2019 16:25:59 -0000 X-List-Received-Date: Tue, 05 Feb 2019 16:25:59 -0000 X-List-Received-Date: Tue, 05 Feb 2019 16:25:59 -0000 X-List-Received-Date: Tue, 05 Feb 2019 16:25:59 -0000 X-List-Received-Date: Tue, 05 Feb 2019 16:25:59 -0000 X-List-Received-Date: Tue, 05 Feb 2019 16:25:59 -0000 X-List-Received-Date: Tue, 05 Feb 2019 16:25:59 -0000 X-List-Received-Date: Tue, 05 Feb 2019 16:25:59 -0000 X-List-Received-Date: Tue, 05 Feb 2019 16:25:59 -0000 X-List-Received-Date: Tue, 05 Feb 2019 16:25:59 -0000 X-List-Received-Date: Tue, 05 Feb 2019 16:25:59 -0000 X-List-Received-Date: Tue, 05 Feb 2019 16:25:59 -0000 X-List-Received-Date: Tue, 05 Feb 2019 16:25:59 -0000 X-List-Received-Date: Tue, 05 Feb 2019 16:25:59 -0000 X-List-Received-Date: Tue, 05 Feb 2019 16:25:59 -0000 X-List-Received-Date: Tue, 05 Feb 2019 16:25:59 -0000 X-List-Received-Date: Tue, 05 Feb 2019 16:25:59 -0000 X-List-Received-Date: Tue, 05 Feb 2019 16:25:59 -0000 X-List-Received-Date: Tue, 05 Feb 2019 16:25:59 -0000 X-List-Received-Date: Tue, 05 Feb 2019 16:25:59 -0000 X-List-Received-Date: Tue, 05 Feb 2019 16:25:59 -0000 X-List-Received-Date: Tue, 05 Feb 2019 16:25:59 -0000 X-List-Received-Date: Tue, 05 Feb 2019 16:25:59 -0000 X-List-Received-Date: Tue, 05 Feb 2019 16:25:59 -0000 X-List-Received-Date: Tue, 05 Feb 2019 16:25:59 -0000 X-List-Received-Date: Tue, 05 Feb 2019 16:25:59 -0000 X-List-Received-Date: Tue, 05 Feb 2019 16:25:59 -0000 X-List-Received-Date: Tue, 05 Feb 2019 16:25:59 -0000 X-List-Received-Date: Tue, 05 Feb 2019 16:25:59 -0000 X-List-Received-Date: Tue, 05 Feb 2019 16:25:59 -0000 X-List-Received-Date: Tue, 05 Feb 2019 16:25:59 -0000 X-List-Received-Date: Tue, 05 Feb 2019 16:25:59 -0000 X-List-Received-Date: Tue, 05 Feb 2019 16:25:59 -0000 X-List-Received-Date: Tue, 05 Feb 2019 16:25:59 -0000 X-List-Received-Date: Tue, 05 Feb 2019 16:25:59 -0000 X-List-Received-Date: Tue, 05 Feb 2019 16:25:59 -0000 X-List-Received-Date: Tue, 05 Feb 2019 16:25:59 -0000 X-List-Received-Date: Tue, 05 Feb 2019 16:25:59 -0000 X-List-Received-Date: Tue, 05 Feb 2019 16:25:59 -0000 X-List-Received-Date: Tue, 05 Feb 2019 16:25:59 -0000 X-List-Received-Date: Tue, 05 Feb 2019 16:25:59 -0000 X-List-Received-Date: Tue, 05 Feb 2019 16:25:59 -0000 X-List-Received-Date: Tue, 05 Feb 2019 16:25:59 -0000 X-List-Received-Date: Tue, 05 Feb 2019 16:25:59 -0000 X-List-Received-Date: Tue, 05 Feb 2019 16:25:59 -0000 X-List-Received-Date: Tue, 05 Feb 2019 16:25:59 -0000 X-List-Received-Date: Tue, 05 Feb 2019 16:25:59 -0000 X-List-Received-Date: Tue, 05 Feb 2019 16:25:59 -0000 X-List-Received-Date: Tue, 05 Feb 2019 16:25:59 -0000 X-List-Received-Date: Tue, 05 Feb 2019 16:25:59 -0000 X-List-Received-Date: Tue, 05 Feb 2019 16:25:59 -0000 X-List-Received-Date: Tue, 05 Feb 2019 16:25:59 -0000 X-List-Received-Date: Tue, 05 Feb 2019 16:25:59 -0000 X-List-Received-Date: Tue, 05 Feb 2019 16:25:59 -0000 X-List-Received-Date: Tue, 05 Feb 2019 16:25:59 -0000 X-List-Received-Date: Tue, 05 Feb 2019 16:25:59 -0000 X-List-Received-Date: Tue, 05 Feb 2019 16:25:59 -0000 X-List-Received-Date: Tue, 05 Feb 2019 16:25:59 -0000 X-List-Received-Date: Tue, 05 Feb 2019 16:25:59 -0000 X-List-Received-Date: Tue, 05 Feb 2019 16:25:59 -0000 X-List-Received-Date: Tue, 05 Feb 2019 16:25:59 -0000 X-List-Received-Date: Tue, 05 Feb 2019 16:25:59 -0000 X-List-Received-Date: Tue, 05 Feb 2019 16:25:59 -0000 X-List-Received-Date: Tue, 05 Feb 2019 16:25:59 -0000 X-List-Received-Date: Tue, 05 Feb 2019 16:25:59 -0000 X-List-Received-Date: Tue, 05 Feb 2019 16:25:59 -0000 X-List-Received-Date: Tue, 05 Feb 2019 16:25:59 -0000 X-List-Received-Date: Tue, 05 Feb 2019 16:25:59 -0000 X-List-Received-Date: Tue, 05 Feb 2019 16:25:59 -0000 X-List-Received-Date: Tue, 05 Feb 2019 16:25:59 -0000 X-List-Received-Date: Tue, 05 Feb 2019 16:25:59 -0000 X-List-Received-Date: Tue, 05 Feb 2019 16:25:59 -0000 X-List-Received-Date: Tue, 05 Feb 2019 16:25:59 -0000 X-List-Received-Date: Tue, 05 Feb 2019 16:25:59 -0000 X-List-Received-Date: Tue, 05 Feb 2019 16:25:59 -0000 X-List-Received-Date: Tue, 05 Feb 2019 16:25:59 -0000 The memory init library ensures that relevant memory regions are reserved on boot. The reset library supports the ResetSystem runtime call using PSCI and signals the gRaspberryPiEventResetGuid event group on reset, which we need to save modified configuration vars to NVRAM. Note that we tried to drop ResetLib altogether, and use the reset notification event provided by the EDK2, but this results in Linux kernel panics, for which we have no workaround. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Pete Batard --- Platform/RaspberryPi/RPi3/Library/MemoryInitPeiLib/MemoryInitPeiLib.c | 162 ++++++++++++++++++++ Platform/RaspberryPi/RPi3/Library/MemoryInitPeiLib/MemoryInitPeiLib.inf | 51 ++++++ Platform/RaspberryPi/RPi3/Library/ResetLib/ResetLib.c | 104 +++++++++++++ Platform/RaspberryPi/RPi3/Library/ResetLib/ResetLib.inf | 46 ++++++ 4 files changed, 363 insertions(+) diff --git a/Platform/RaspberryPi/RPi3/Library/MemoryInitPeiLib/MemoryInitPeiLib.c b/Platform/RaspberryPi/RPi3/Library/MemoryInitPeiLib/MemoryInitPeiLib.c new file mode 100644 index 000000000000..903364e08b15 --- /dev/null +++ b/Platform/RaspberryPi/RPi3/Library/MemoryInitPeiLib/MemoryInitPeiLib.c @@ -0,0 +1,162 @@ +/** @file + * + * Copyright (c) 2017-2018, Andrey Warkentin + * Copyright (c) 2011-2015, ARM Limited. All rights reserved. + * + * This program and the accompanying materials + * are licensed and made available under the terms and conditions of the BSD License + * which accompanies this distribution. The full text of the license may be found at + * http://opensource.org/licenses/bsd-license.php + * + * THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + * WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + * + **/ + +#include + +#include +#include +#include +#include +#include +#include + +extern UINT64 mSystemMemoryEnd; + +VOID +BuildMemoryTypeInformationHob ( + VOID + ); + +STATIC +VOID +InitMmu ( + IN ARM_MEMORY_REGION_DESCRIPTOR *MemoryTable + ) +{ + RETURN_STATUS Status; + + //Note: Because we called PeiServicesInstallPeiMemory() before to call InitMmu() the MMU Page Table + // resides in DRAM (even at the top of DRAM as it is the first permanent memory allocation) + Status = ArmConfigureMmu (MemoryTable, NULL, NULL); + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_ERROR, "Error: Failed to enable MMU\n")); + } +} + +STATIC +VOID +AddRuntimeServicesRegion ( + IN ARM_MEMORY_REGION_DESCRIPTOR *Desc +) +{ + BuildResourceDescriptorHob ( + EFI_RESOURCE_SYSTEM_MEMORY, + EFI_RESOURCE_ATTRIBUTE_PRESENT | + EFI_RESOURCE_ATTRIBUTE_INITIALIZED | + EFI_RESOURCE_ATTRIBUTE_WRITE_COMBINEABLE | + EFI_RESOURCE_ATTRIBUTE_WRITE_THROUGH_CACHEABLE | + EFI_RESOURCE_ATTRIBUTE_WRITE_BACK_CACHEABLE | + EFI_RESOURCE_ATTRIBUTE_TESTED, + Desc->PhysicalBase, + Desc->Length + ); + + BuildMemoryAllocationHob ( + Desc->PhysicalBase, + Desc->Length, + EfiRuntimeServicesData + ); +} + +STATIC +VOID +AddReservedMemoryRegion ( + IN ARM_MEMORY_REGION_DESCRIPTOR *Desc + ) +{ + BuildResourceDescriptorHob ( + EFI_RESOURCE_SYSTEM_MEMORY, + EFI_RESOURCE_ATTRIBUTE_PRESENT | + EFI_RESOURCE_ATTRIBUTE_INITIALIZED | + EFI_RESOURCE_ATTRIBUTE_WRITE_COMBINEABLE | + EFI_RESOURCE_ATTRIBUTE_WRITE_THROUGH_CACHEABLE | + EFI_RESOURCE_ATTRIBUTE_WRITE_BACK_CACHEABLE | + EFI_RESOURCE_ATTRIBUTE_TESTED, + Desc->PhysicalBase, + Desc->Length + ); + + BuildMemoryAllocationHob ( + Desc->PhysicalBase, + Desc->Length, + EfiReservedMemoryType + ); +} + +/*++ + +Routine Description: + + + +Arguments: + + FileHandle - Handle of the file being invoked. + PeiServices - Describes the list of possible PEI Services. + +Returns: + + Status - EFI_SUCCESS if the boot mode could be set + +--*/ +EFI_STATUS +EFIAPI +MemoryPeim ( + IN EFI_PHYSICAL_ADDRESS UefiMemoryBase, + IN UINT64 UefiMemorySize + ) +{ + ARM_MEMORY_REGION_DESCRIPTOR *MemoryTable; + + // Get Virtual Memory Map from the Platform Library + ArmPlatformGetVirtualMemoryMap (&MemoryTable); + + // Ensure PcdSystemMemorySize has been set + ASSERT (PcdGet64 (PcdSystemMemorySize) != 0); + + // FD without variable store + AddReservedMemoryRegion (&MemoryTable[0]); + + // Variable store. + AddRuntimeServicesRegion (&MemoryTable[1]); + + // Trusted Firmware region + AddReservedMemoryRegion (&MemoryTable[2]); + + // Usable memory. + BuildResourceDescriptorHob ( + EFI_RESOURCE_SYSTEM_MEMORY, + EFI_RESOURCE_ATTRIBUTE_PRESENT | + EFI_RESOURCE_ATTRIBUTE_INITIALIZED | + EFI_RESOURCE_ATTRIBUTE_WRITE_COMBINEABLE | + EFI_RESOURCE_ATTRIBUTE_WRITE_THROUGH_CACHEABLE | + EFI_RESOURCE_ATTRIBUTE_WRITE_BACK_CACHEABLE | + EFI_RESOURCE_ATTRIBUTE_TESTED, + MemoryTable[3].PhysicalBase, + MemoryTable[3].Length + ); + + AddReservedMemoryRegion (&MemoryTable[4]); + + // Build Memory Allocation Hob + InitMmu (MemoryTable); + + if (FeaturePcdGet (PcdPrePiProduceMemoryTypeInformationHob)) { + // Optional feature that helps prevent EFI memory map fragmentation. + BuildMemoryTypeInformationHob (); + } + + return EFI_SUCCESS; +} diff --git a/Platform/RaspberryPi/RPi3/Library/MemoryInitPeiLib/MemoryInitPeiLib.inf b/Platform/RaspberryPi/RPi3/Library/MemoryInitPeiLib/MemoryInitPeiLib.inf new file mode 100644 index 000000000000..8e44f2e39408 --- /dev/null +++ b/Platform/RaspberryPi/RPi3/Library/MemoryInitPeiLib/MemoryInitPeiLib.inf @@ -0,0 +1,51 @@ +#/** @file +# +# Copyright (c) 2016, Linaro, Ltd. All rights reserved. +# Copyright (c) 2011-2014, ARM Ltd. All rights reserved. +# +# This program and the accompanying materials +# are licensed and made available under the terms and conditions of the BSD License +# which accompanies this distribution. The full text of the license may be found at +# http://opensource.org/licenses/bsd-license.php +# +# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +# +#**/ + +[Defines] + INF_VERSION = 0x0001001A + BASE_NAME = MemoryInitPeiLib + FILE_GUID = 4bbc9c10-a100-43fb-8311-332ba497d1b4 + MODULE_TYPE = BASE + VERSION_STRING = 1.0 + LIBRARY_CLASS = MemoryInitPeiLib|SEC PEIM + +[Sources] + MemoryInitPeiLib.c + +[Packages] + MdePkg/MdePkg.dec + MdeModulePkg/MdeModulePkg.dec + EmbeddedPkg/EmbeddedPkg.dec + ArmPkg/ArmPkg.dec + ArmPlatformPkg/ArmPlatformPkg.dec + +[LibraryClasses] + DebugLib + HobLib + ArmMmuLib + ArmPlatformLib + +[Guids] + gEfiMemoryTypeInformationGuid + +[FeaturePcd] + gEmbeddedTokenSpaceGuid.PcdPrePiProduceMemoryTypeInformationHob + +[FixedPcd] + gArmTokenSpaceGuid.PcdSystemMemoryBase + gArmTokenSpaceGuid.PcdSystemMemorySize + +[Depex] + TRUE diff --git a/Platform/RaspberryPi/RPi3/Library/ResetLib/ResetLib.c b/Platform/RaspberryPi/RPi3/Library/ResetLib/ResetLib.c new file mode 100644 index 000000000000..465bb8babf25 --- /dev/null +++ b/Platform/RaspberryPi/RPi3/Library/ResetLib/ResetLib.c @@ -0,0 +1,104 @@ +/** @file + * + * Support ResetSystem Runtime call using PSCI calls. + * Signals the gRaspberryPiEventResetGuid event group on reset. + * + * Copyright (c) 2018, Andrei Warkentin + * Copyright (c) 2014, Linaro Ltd. All rights reserved. + * Copyright (c) 2013-2015, ARM Ltd. All rights reserved. + * Copyright (c) 2008-2009, Apple Inc. All rights reserved. + * + * This program and the accompanying materials + * are licensed and made available under the terms and conditions of the BSD License + * which accompanies this distribution. The full text of the license may be found at + * http://opensource.org/licenses/bsd-license.php + * + * THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + * WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + * + **/ + +#include + +#include +#include +#include +#include +#include +#include + +#include + +/** + Resets the entire platform. + + @param ResetType The type of reset to perform. + @param ResetStatus The status code for the reset. + @param DataSize The size, in bytes, of WatchdogData. + @param ResetData For a ResetType of EfiResetCold, EfiResetWarm, or + EfiResetShutdown the data buffer starts with a Null-terminated + Unicode string, optionally followed by additional binary data. + +**/ +EFI_STATUS +EFIAPI +LibResetSystem ( + IN EFI_RESET_TYPE ResetType, + IN EFI_STATUS ResetStatus, + IN UINTN DataSize, + IN CHAR16 *ResetData OPTIONAL + ) +{ + ARM_SMC_ARGS ArmSmcArgs; + + if (!EfiAtRuntime ()) { + /* + * Only if still in UEFI. + */ + EfiEventGroupSignal (&gRaspberryPiEventResetGuid); + } + + switch (ResetType) { + case EfiResetPlatformSpecific: + // Map the platform specific reset as reboot + case EfiResetWarm: + // Map a warm reset into a cold reset + case EfiResetCold: + // Send a PSCI 0.2 SYSTEM_RESET command + ArmSmcArgs.Arg0 = ARM_SMC_ID_PSCI_SYSTEM_RESET; + break; + case EfiResetShutdown: + // Send a PSCI 0.2 SYSTEM_OFF command + ArmSmcArgs.Arg0 = ARM_SMC_ID_PSCI_SYSTEM_OFF; + break; + default: + ASSERT (FALSE); + return EFI_UNSUPPORTED; + } + + ArmCallSmc (&ArmSmcArgs); + + // We should never be here + DEBUG ((DEBUG_ERROR, "%a: PSCI Reset failed\n", __FUNCTION__)); + CpuDeadLoop (); + return EFI_UNSUPPORTED; +} + +/** + Initialize any infrastructure required for LibResetSystem () to function. + + @param ImageHandle The firmware allocated handle for the EFI image. + @param SystemTable A pointer to the EFI System Table. + + @retval EFI_SUCCESS The constructor always returns EFI_SUCCESS. + +**/ +EFI_STATUS +EFIAPI +LibInitializeResetSystem ( + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable + ) +{ + return EFI_SUCCESS; +} diff --git a/Platform/RaspberryPi/RPi3/Library/ResetLib/ResetLib.inf b/Platform/RaspberryPi/RPi3/Library/ResetLib/ResetLib.inf new file mode 100644 index 000000000000..31ec5a3c17a8 --- /dev/null +++ b/Platform/RaspberryPi/RPi3/Library/ResetLib/ResetLib.inf @@ -0,0 +1,46 @@ +#/** @file +# +# Reset System lib using PSCI hypervisor or secure monitor calls. +# Signals the gRaspberryPiEventResetGuid event group on reset. +# +# Copyright (c) 2018, Andrei Warkentin +# Copyright (c) 2014, Linaro Ltd. All rights reserved. +# Copyright (c) 2014, ARM Ltd. All rights reserved. +# Copyright (c) 2008, Apple Inc. All rights reserved. +# +# This program and the accompanying materials +# are licensed and made available under the terms and conditions of the BSD License +# which accompanies this distribution. The full text of the license may be found at +# http://opensource.org/licenses/bsd-license.php +# +# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +# +#**/ + +[Defines] + INF_VERSION = 0x0001001A + BASE_NAME = ResetLib + FILE_GUID = B9F59B69-A105-41C7-8F5A-2C60DD7FD7AB + MODULE_TYPE = BASE + VERSION_STRING = 1.0 + LIBRARY_CLASS = EfiResetSystemLib + +[Sources] + ResetLib.c + +[Packages] + ArmPkg/ArmPkg.dec + MdePkg/MdePkg.dec + EmbeddedPkg/EmbeddedPkg.dec + Platform/RaspberryPi/RPi3/RPi3.dec + +[LibraryClasses] + DebugLib + BaseLib + ArmSmcLib + UefiLib + UefiRuntimeLib + +[Guids] + gRaspberryPiEventResetGuid -- 2.17.0.windows.1