/** @file Copyright (c) 2018, Intel Corporation. All rights reserved.
This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License that 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. **/ #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