/** @file
This provides a versatile abstraction for the SiliconPolicyInitLib library interface.
This defines the typedef necessary for PPI and protocol use.
This defines structs for PPI and protocol production and consumption.
There is a single GUID defining both PPI and protocol.
Copyright (c) 2017 - 2021, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#ifndef _SILICON_POLICY_INIT_LIB_INTERFACE_H_
#define _SILICON_POLICY_INIT_LIB_INTERFACE_H_
#include
//
// All interface declarations should refer to the SiliconPolicyInitLib for description of functionality
//
typedef
VOID *
(EFIAPI *PEI_SILICON_POLICY_INIT_PRE_MEM) (
IN OUT VOID *Policy OPTIONAL
);
typedef
RETURN_STATUS
(EFIAPI *PEI_SILICON_POLICY_DONE_PRE_MEM) (
IN VOID *Policy
);
typedef
VOID *
(EFIAPI *PEI_SILICON_POLICY_INIT_POST_MEM) (
IN OUT VOID *Policy OPTIONAL
);
typedef
RETURN_STATUS
(EFIAPI *PEI_SILICON_POLICY_DONE_POST_MEM) (
IN VOID *Policy
);
typedef
VOID *
(EFIAPI *PEI_SILICON_POLICY_INIT_LATE) (
IN OUT VOID *Policy OPTIONAL
);
typedef
RETURN_STATUS
(EFIAPI *PEI_SILICON_POLICY_DONE_LATE) (
IN VOID *Policy
);
//
// PPI structure declaration
//
typedef struct {
PEI_SILICON_POLICY_INIT_PRE_MEM SiliconPolicyInitPreMem;
PEI_SILICON_POLICY_DONE_PRE_MEM SiliconPolicyDonePreMem;
PEI_SILICON_POLICY_INIT_POST_MEM SiliconPolicyInitPostMem;
PEI_SILICON_POLICY_DONE_POST_MEM SiliconPolicyDonePostMem;
} SILICON_POLICY_INIT_LIB_PPI;
//
// Protocol structure declaration
//
typedef struct {
PEI_SILICON_POLICY_INIT_LATE SiliconPolicyInitLate;
PEI_SILICON_POLICY_DONE_LATE SiliconPolicyDoneLate;
} SILICON_POLICY_INIT_LIB_PROTOCOL;
extern EFI_GUID gSiliconPolicyInitLibInterfaceGuid;
#endif // _SILICON_POLICY_INIT_LIB_INTERFACE_H_