On Tue, Oct 18, 2016 at 01:34:06AM +0530, Bhupesh Sharma wrote:
From: Sakar Arora sakar.arora@nxp.com
This patch adds the support for system reset library which can be used to invoke a system reset via the UEFI shell on LS1043A-RDB board.
Signed-off-by: Sakar Arora sakar.arora@nxp.com Signed-off-by: Bhupesh Sharma bhupesh.sharma@nxp.com
.../Library/ResetSystemLib/ResetSystemLib.c | 87 ++++++++++++++++++++++ .../Library/ResetSystemLib/ResetSystemLib.inf | 50 +++++++++++++ 2 files changed, 137 insertions(+) create mode 100644 Platforms/Nxp/LS1043aRdb/Library/ResetSystemLib/ResetSystemLib.c create mode 100644 Platforms/Nxp/LS1043aRdb/Library/ResetSystemLib/ResetSystemLib.inf
diff --git a/Platforms/Nxp/LS1043aRdb/Library/ResetSystemLib/ResetSystemLib.c b/Platforms/Nxp/LS1043aRdb/Library/ResetSystemLib/ResetSystemLib.c new file mode 100644 index 0000000..831dd3a --- /dev/null +++ b/Platforms/Nxp/LS1043aRdb/Library/ResetSystemLib/ResetSystemLib.c @@ -0,0 +1,87 @@ +/** ResetSystemLib.c
- Do a generic Cold Reset for LS1043a
- Based on Reset system library implementation in
- BeagleBoardPkg/Library/ResetSystemLib/ResetSystemLib.c
- Copyright (c) 2008 - 2010, Apple Inc. All rights reserved.<BR>
- Copyright (c) 2016, Freescale Semiconductor, 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 <Uefi.h>
+#include <Library/ArmLib.h> +#include <Library/CacheMaintenanceLib.h> +#include <Library/MemoryAllocationLib.h> +#include <Library/IoLib.h> +#include <Library/PcdLib.h> +#include <Library/TimerLib.h> +#include <Library/DebugLib.h> +#include <Library/UefiBootServicesTableLib.h>
+#include <Library/PlatformLib.h>
Sorted includes, please?
+#define BITMASK8 0xff +/**
- 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
- )
+{
- UINT16 Val;
- //Perform cold reset of the system.
- Val = MmioReadBe16 (WDOG1_BASE_ADDR + WDOG_WCR_OFFSET);
- Val &= BITMASK8;
- Val |= WDOG_WCR_WDE;
- MmioWriteBe16 (WDOG1_BASE_ADDR + WDOG_WCR_OFFSET, Val);
- MmioWriteBe16(WDOG1_BASE_ADDR + WDOG_WSR_OFFSET, WDOG_SERVICE_SEQ1);
- MmioWriteBe16(WDOG1_BASE_ADDR + WDOG_WSR_OFFSET, WDOG_SERVICE_SEQ2);
Space before those (.
Do you need a barrier in here at all?
- MicroSecondDelay(1000000);
- // If the reset didn't work, return an error.
- ASSERT (FALSE);
- return EFI_DEVICE_ERROR;
+}
+/**
- 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/Platforms/Nxp/LS1043aRdb/Library/ResetSystemLib/ResetSystemLib.inf b/Platforms/Nxp/LS1043aRdb/Library/ResetSystemLib/ResetSystemLib.inf new file mode 100644 index 0000000..b568dcf --- /dev/null +++ b/Platforms/Nxp/LS1043aRdb/Library/ResetSystemLib/ResetSystemLib.inf @@ -0,0 +1,50 @@ +#/** @ResetSystemLib.inf +# Reset System lib to make it easy to port new platforms +# +# Copyright (c) 2016, Freescale Semiconductor, 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 = 0x00010005
- BASE_NAME = LS1043aRdbResetSystemLib
- FILE_GUID = 781371a2-3fdd-41d4-96a1-7b34cbc9e895
- MODULE_TYPE = BASE
- VERSION_STRING = 1.0
- LIBRARY_CLASS = EfiResetSystemLib
+[Sources.common]
- ResetSystemLib.c
+[Packages]
- MdePkg/MdePkg.dec
- ArmPkg/ArmPkg.dec
- EmbeddedPkg/EmbeddedPkg.dec
- OpenPlatformPkg/Platforms/Nxp/LS1043aRdb/LS1043aRdbPkg.dec
+[Pcd.common]
- gArmTokenSpaceGuid.PcdCpuResetAddress
- gEmbeddedTokenSpaceGuid.PcdEmbeddedFdBaseAddress
+[LibraryClasses]
- DebugLib
- ArmLib
- IoLib
- CacheMaintenanceLib
- MemoryAllocationLib
- UefiRuntimeServicesTableLib
- TimerLib
- UefiLib
- UefiBootServicesTableLib
Can we sort LibraryClasses and packages please?
+[FixedPcd]
- gArmTokenSpaceGuid.PcdFvBaseAddress
-- 1.9.1