/** @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