/** @file
Slot Table Update.
@copyright
Copyright 2018 - 2021 Intel Corporation.
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#include "PeiBoardInit.h"
#include
#include
#define PCI_DEVICE_ON_BOARD_TRUE 0
#define PCI_DEVICE_ON_BOARD_FALSE 1
typedef enum {
Iio_Socket0 = 0,
Iio_Socket1,
Iio_Socket2,
Iio_Socket3,
Iio_Socket4,
Iio_Socket5,
Iio_Socket6,
Iio_Socket7
} IIO_SOCKETS;
typedef enum {
Iio_Iou0 =0,
Iio_Iou1,
Iio_Iou2,
Iio_Iou3,
Iio_Iou4,
Iio_IouMax
} IIO_IOUS;
typedef enum {
Bw5_Addr_0 = 0,
Bw5_Addr_1,
Bw5_Addr_2,
Bw5_Addr_3,
Bw5_Addr_Max
} BW5_ADDRESS;
static UINT8 TypeWilsonCitySMTPchPciSlotImpementedTableData[] = {
PCI_DEVICE_ON_BOARD_FALSE, // Root Port 0
PCI_DEVICE_ON_BOARD_FALSE, // Root Port 1
PCI_DEVICE_ON_BOARD_FALSE, // Root Port 2
PCI_DEVICE_ON_BOARD_FALSE, // Root Port 3
PCI_DEVICE_ON_BOARD_TRUE, // Root Port 4
PCI_DEVICE_ON_BOARD_TRUE, // Root Port 5
PCI_DEVICE_ON_BOARD_FALSE, // Root Port 6
PCI_DEVICE_ON_BOARD_FALSE, // Root Port 7
PCI_DEVICE_ON_BOARD_FALSE, // Root Port 8
PCI_DEVICE_ON_BOARD_FALSE, // Root Port 9
PCI_DEVICE_ON_BOARD_FALSE, // Root Port 10
PCI_DEVICE_ON_BOARD_FALSE, // Root Port 11
PCI_DEVICE_ON_BOARD_FALSE, // Root Port 12
PCI_DEVICE_ON_BOARD_FALSE, // Root Port 13
PCI_DEVICE_ON_BOARD_FALSE, // Root Port 14
PCI_DEVICE_ON_BOARD_FALSE, // Root Port 15
PCI_DEVICE_ON_BOARD_FALSE, // Root Port 16
PCI_DEVICE_ON_BOARD_FALSE, // Root Port 17
PCI_DEVICE_ON_BOARD_FALSE, // Root Port 18
PCI_DEVICE_ON_BOARD_FALSE // Root Port 19
};
UINT8
GetTypeWilsonCitySMTIOU0Setting (
UINT8 IOU0Data
)
{
//
// Change bifurcation of Port1A-1B as xxx8 when QATGpio enabled.
//
IOU0Data = IIO_BIFURCATE_xxx8xxx8;
return IOU0Data;
}
UINT8
GetTypeWilsonCitySMTIOU2Setting (
UINT8 SkuPersonalityType,
UINT8 IOU2Data
)
{
return IOU2Data;
}
static IIO_BROADWAY_ADDRESS_DATA_ENTRY SlotTypeWilsonCitySMTBroadwayTable[] = {
{Iio_Socket0, Iio_Iou2, Bw5_Addr_0 },
{Iio_Socket1, Iio_Iou1, Bw5_Addr_2},
{Iio_Socket1, Iio_Iou0, Bw5_Addr_1 },
};
PLATFORM_SLOT_UPDATE_TABLE TypeWilsonCitySMTSlotTable =
{
PLATFORM_SLOT_UPDATE_SIGNATURE,
PLATFORM_SLOT_UPDATE_VERSION,
SlotTypeWilsonCitySMTBroadwayTable,
GetTypeWilsonCitySMTIOU0Setting,
0
};
PLATFORM_SLOT_UPDATE_TABLE2 TypeWilsonCitySMTSlotTable2 =
{
PLATFORM_SLOT_UPDATE_SIGNATURE,
PLATFORM_SLOT_UPDATE_VERSION,
SlotTypeWilsonCitySMTBroadwayTable,
GetTypeWilsonCitySMTIOU0Setting,
0,
GetTypeWilsonCitySMTIOU2Setting
};
PLATFORM_PCH_PCI_SLOT_IMPLEMENTED_UPDATE_TABLE TypeWilsonCitySMTPchPciSlotImplementedTable = {
PLATFORM_SLOT_UPDATE_SIGNATURE,
PLATFORM_SLOT_UPDATE_VERSION,
TypeWilsonCitySMTPchPciSlotImpementedTableData
};
/**
Entry point function for the PEIM
@param FileHandle Handle of the file being invoked.
@param PeiServices Describes the list of possible PEI Services.
@return EFI_SUCCESS If we installed our PPI
**/
EFI_STATUS
TypeWilsonCitySMTInstallSlotTableData (
IN UBA_CONFIG_DATABASE_PPI *UbaConfigPpi
)
{
EFI_STATUS Status;
Status = UbaConfigPpi->AddData (
UbaConfigPpi,
&gPlatformSlotDataGuid,
&TypeWilsonCitySMTSlotTable,
sizeof(TypeWilsonCitySMTSlotTable)
);
if (EFI_ERROR(Status)) {
return Status;
}
Status = UbaConfigPpi->AddData (
UbaConfigPpi,
&gPlatformSlotDataGuid2,
&TypeWilsonCitySMTSlotTable2,
sizeof(TypeWilsonCitySMTSlotTable2)
);
if (EFI_ERROR(Status)) {
return Status;
}
Status = UbaConfigPpi->AddData (
UbaConfigPpi,
&gPlatformPciSlotImplementedGuid,
&TypeWilsonCitySMTPchPciSlotImplementedTable,
sizeof(TypeWilsonCitySMTPchPciSlotImplementedTable)
);
if (EFI_ERROR(Status)) {
return Status;
}
return Status;
}