/** @file PCH Reset Protocol @copyright Copyright 2011 - 2021 Intel Corporation.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ #ifndef _PCH_RESET_H_ #define _PCH_RESET_H_ #include #define EFI_CAPSULE_VARIABLE_NAME L"CapsuleUpdateData" extern EFI_GUID gEfiCapsuleVendorGuid; // // Extern the GUID for protocol users. // extern EFI_GUID gPchResetProtocolGuid; extern EFI_GUID gPchResetCallbackProtocolGuid; extern EFI_GUID gPchPowerCycleResetGuid; extern EFI_GUID gPchGlobalResetGuid; extern EFI_GUID gPchGlobalResetWithEcGuid; // // Forward reference for ANSI C compatibility // typedef struct _PCH_RESET_PROTOCOL PCH_RESET_PROTOCOL; typedef PCH_RESET_CALLBACK_PPI PCH_RESET_CALLBACK_PROTOCOL; // // Related Definitions // // // PCH Platform Specific ResetData // #define PCH_POWER_CYCLE_RESET_GUID \ { \ 0x8d8ee25b, 0x66dd, 0x4ed8, { 0x8a, 0xbd, 0x14, 0x16, 0xe8, 0x8e, 0x1d, 0x24 } \ } #define PCH_GLOBAL_RESET_GUID \ { \ 0x9db31b4c, 0xf5ef, 0x48bb, { 0x94, 0x2b, 0x18, 0x1f, 0x7e, 0x3a, 0x3e, 0x40 } \ } #define PCH_GLOBAL_RESET_WITH_EC_GUID \ { \ 0xd22e6b72, 0x53cd, 0x4158, { 0x83, 0x3f, 0x6f, 0xd8, 0x7e, 0xbe, 0xa9, 0x93 } \ } #define PCH_PLATFORM_SPECIFIC_RESET_STRING L"PCH_RESET" #define PCH_RESET_DATA_STRING_MAX_LENGTH sizeof (PCH_PLATFORM_SPECIFIC_RESET_STRING) typedef struct _RESET_DATA { CHAR16 Description[PCH_RESET_DATA_STRING_MAX_LENGTH]; EFI_GUID Guid; } PCH_RESET_DATA; // // Member functions // /** Execute Pch Reset from the Host controller. @param[in] This Pointer to the PCH_RESET_PROTOCOL instance. @param[in] ResetType UEFI defined reset type. @param[in] DataSize The size of ResetData in bytes. @param[in] ResetData Optional element used to introduce a platform specific reset. The exact type of the reset is defined by the EFI_GUID that follows the Null-terminated Unicode string. @retval EFI_SUCCESS Successfully completed. @retval EFI_INVALID_PARAMETER If ResetType is invalid. **/ typedef EFI_STATUS (EFIAPI *PCH_RESET) ( IN PCH_RESET_PROTOCOL *This, IN PCH_RESET_TYPE ResetType, IN UINTN DataSize, IN VOID *ResetData OPTIONAL ); /** Retrieve PCH platform specific ResetData @param[in] Guid PCH platform specific reset GUID. @param[out] DataSize The size of ResetData in bytes. @retval ResetData A platform specific reset that the exact type of the reset is defined by the EFI_GUID that follows the Null-terminated Unicode string. @retval NULL If Guid is not defined in PCH platform specific reset. **/ typedef VOID * (EFIAPI *PCH_RESET_GET_RESET_DATA) ( IN EFI_GUID *Guid, OUT UINTN *DataSize ); /** Interface structure to execute Pch Reset from the Host controller. **/ struct _PCH_RESET_PROTOCOL { PCH_RESET Reset; PCH_RESET_GET_RESET_DATA GetResetData; }; #endif