/** @file
UBA Slot Update Library Header File.
@copyright
Copyright 2012 - 2021 Intel Corporation.
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#ifndef _UBA_SLOT_UPDATE_LIB_H
#define _UBA_SLOT_UPDATE_LIB_H
#include
#include
#define PLATFORM_SLOT_UPDATE_SIGNATURE SIGNATURE_32 ('P', 'S', 'L', 'T')
#define PLATFORM_SLOT_UPDATE_VERSION 01
// {BE1CC570-03FC-4a44-8068-5B6E36CAEBB2}
#define PLATFORM_SLOT_DATA_GUID \
{ 0xbe1cc570, 0x03fc, 0x4a44, { 0x80, 0x68, 0x5b, 0x6e, 0x36, 0xca, 0xeb, 0xb2 } }
// {226763AE-972C-4e3c-80D1-73B25E8CBBA3}
#define PLATFORM_SLOT_DATA_GUID2 \
{ 0x226763ae, 0x972c, 0x4e3c, { 0x80, 0xd1, 0x73, 0xb2, 0x5e, 0x8c, 0xbb, 0xa3 } };
// {56F676D3-24DF-4c77-A336-009DAE693598}
#define PLATFORM_SLOT_DATA_GUID2_1 \
{ 0x56f676d3, 0x24df, 0x4c77, { 0xa3, 0x36, 0x01, 0x9d, 0xae, 0x69, 0x35, 0x98 } };
// {B93613E1-48F0-4b32-B3A8-4FEDFC7C1365}
#define PLATFORM_SLOT_DATA_DXE_GUID \
{ 0xb93613e1, 0x48f0, 0x4b32, { 0xb3, 0xa8, 0x4f, 0xed, 0xfc, 0x7c, 0x13, 0x65 } }
// {8185B70E-9A20-4fc4-A1D6-77D54A736518}
#define PLATFORM_SLOT_DATA_DXE_GUID2 \
{ 0x8185b70e, 0x9a20, 0x4fc4, { 0xa1, 0xd6, 0x77, 0xd5, 0x4a, 0x73, 0x65, 0x18 } };
// {A87C540B-3D69-4c3b-B7F7-6383589C21CE}
#define PLATFORM_SLOT_DATA_DXE_GUID2_1 \
{ 0xa87c540b, 0x3d69, 0x4c3b, { 0xb7, 0xf7, 0x63, 0x83, 0x58, 0x9c, 0x21, 0xce } };
// {B4CB70B3-558D-4478-84CA-22616034EA16}
#define PLATFORM_PCI_SLOT_IMPLEMENTED_GUID \
{ 0xb4cb70b3, 0x558d, 0x4478, { 0x84, 0xca, 0x22, 0x61, 0x60, 0x34, 0xea, 0x16 } };
typedef struct _IIO_BROADWAY_ADDRESS_DATA_ENTRY {
UINT8 Socket;
UINT8 IouNumber;
UINT8 BroadwayAddress; // 0xff, no override bifurcation settings.
// 0-2 BW5 card can be present
} IIO_BROADWAY_ADDRESS_DATA_ENTRY;
typedef
UINT8
(*PLATFORM_GET_IOU_SETTING) (
IN UINT8 IOU2Data
);
typedef
UINT8
(*PLATFORM_GET_IOU2_SETTING) (
IN UINT8 SkuPersonalityType,
IN UINT8 IOU2Data
);
typedef struct _PLATFORM_SLOT_UPDATE_TABLE {
UINT32 Signature;
UINT32 Version;
IIO_BROADWAY_ADDRESS_DATA_ENTRY *BroadwayTablePtr;
PLATFORM_GET_IOU_SETTING GetIOU2Setting;
UINT8 FlagValue;
} PLATFORM_SLOT_UPDATE_TABLE;
typedef struct _PLATFORM_SLOT_UPDATE_TABLE2 {
UINT32 Signature;
UINT32 Version;
IIO_BROADWAY_ADDRESS_DATA_ENTRY *BroadwayTablePtr;
PLATFORM_GET_IOU_SETTING GetIOU0Setting;
UINT8 FlagValue;
PLATFORM_GET_IOU2_SETTING GetIOU2Setting;
} PLATFORM_SLOT_UPDATE_TABLE2;
typedef struct _PLATFORM_PCH_PCI_SLOT_IMPLEMENTED_UPDATE_TABLE {
UINT32 Signature;
UINT32 Version;
UINT8 *SlotImplementedTableDataPtr;
} PLATFORM_PCH_PCI_SLOT_IMPLEMENTED_UPDATE_TABLE;
EFI_STATUS
PlatformGetSlotTableData (
IN OUT IIO_BROADWAY_ADDRESS_DATA_ENTRY **BroadwayTable,
IN OUT UINT8 *IOU2Setting,
IN OUT UINT8 *FlagValue
);
EFI_STATUS
PlatformGetSlotTableData2 (
IN OUT IIO_BROADWAY_ADDRESS_DATA_ENTRY **BroadwayTable,
IN OUT UINT8 *IOU0Setting,
IN OUT UINT8 *FlagValue,
IN OUT UINT8 *IOU2Setting,
IN UINT8 SkuPersonalityType
);
EFI_STATUS
PlatformPchGetPciSlotImplementedTableData (
IN OUT UINT8 **SlotImplementedTable
);
STATIC EFI_GUID gPlatformSlotDataGuid = PLATFORM_SLOT_DATA_GUID;
STATIC EFI_GUID gPlatformSlotDataGuid2 = PLATFORM_SLOT_DATA_GUID2;
STATIC EFI_GUID gPlatformSlotDataGuid2_1 = PLATFORM_SLOT_DATA_GUID2_1;
STATIC EFI_GUID gPlatformSlotDataDxeGuid = PLATFORM_SLOT_DATA_DXE_GUID;
STATIC EFI_GUID gPlatformSlotDataDxeGuid2 = PLATFORM_SLOT_DATA_DXE_GUID2;
STATIC EFI_GUID gPlatformSlotDataDxeGuid2_1 = PLATFORM_SLOT_DATA_DXE_GUID2_1;
STATIC EFI_GUID gPlatformPciSlotImplementedGuid = PLATFORM_PCI_SLOT_IMPLEMENTED_GUID;
#endif //_UBA_SLOT_UPDATE_LIB_H