12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- /** @file
- Reset scheduling library services
- Copyright (c) 2019 Intel Corporation. All rights reserved. <BR>
- SPDX-License-Identifier: BSD-2-Clause-Patent
- **/
- #include <Library/DebugLib.h>
- #include <Library/ResetSystemLib.h>
- #include <Uefi/UefiBaseType.h>
- #include <Uefi.h>
- #include <Pi/PiMultiPhase.h>
- #include <Library/HobLib.h>
- #include <Private/Library/SiScheduleResetLib.h>
- #include <Private/SiScheduleResetHob.h>
- /**
- This function returns SiScheduleResetHob for library use
- **/
- SI_SCHEDULE_RESET_HOB *
- SiScheduleGetResetData (
- VOID
- );
- /**
- This function performs reset based on SiScheduleResetHob
- @retval BOOLEAN The function returns FALSE if no reset is required
- **/
- BOOLEAN
- SiScheduleResetPerformReset (
- VOID
- )
- {
- UINTN DataSize;
- SI_SCHEDULE_RESET_HOB *SiScheduleResetHob;
- if (!SiScheduleResetIsRequired ()) {
- return FALSE;
- }
- SiScheduleResetHob = SiScheduleGetResetData ();
- if (SiScheduleResetHob == NULL) {
- return TRUE;
- }
- DEBUG ((DEBUG_INFO, "SiScheduleResetPerformReset : Reset Type = 0x%x\n", SiScheduleResetHob->ResetType));
- switch (SiScheduleResetHob->ResetType) {
- case EfiResetWarm:
- ResetWarm ();
- break;
- case EfiResetCold:
- ResetCold ();
- break;
- case EfiResetShutdown:
- ResetShutdown ();
- break;
- case EfiResetPlatformSpecific:
- DataSize = sizeof (PCH_RESET_DATA);
- ResetPlatformSpecific (DataSize, &SiScheduleResetHob->ResetData);
- break;
- }
- // Code should never reach here
- ASSERT (FALSE);
- return TRUE;
- }
|