/** @file Reset scheduling library services Copyright (c) 2019 Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ #include #include #include #include #include #include #include #include /** 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; }