/** @file Contains several definitions for table structures used for Bifurcation and slot configuration on the different platforms. @copyright Copyright 2015 - 2021 Intel Corporation.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ #ifndef _IIOBIFURCATIONSLOTTABLE_H_ #define _IIOBIFURCATIONSLOTTABLE_H_ #include "IioPlatformData.h" #define QAT_ENABLED 0 // QAT is active-low #define RISER_PRESENT 0 #define RISER_NOT_PRESENT 1 #define RISER_HP_EN 1 #define RISER_WINGED_IN 0 #define RISER_SLOT9_DISABLE 1 typedef struct { UINT8 Socket; UINT8 IouNumber; UINT8 BroadwayAddress; // 0xff, no override bifurcation settings. // 0-2 BW5 card can be present } IIO_BROADWAY_ADDRESS_ENTRY; typedef enum { Bw5_Addr_0 = 0, Bw5_Addr_1, Bw5_Addr_2, Bw5_Addr_3, Bw5_Addr_Max } BW5_ADDRESS; typedef union { struct { UINT8 PresentSignal:1; UINT8 HPConf:1; UINT8 WingConf:1; UINT8 Slot9En:1; } Bits; UINT8 Data; } PCIE_RISER_ID; enum { Iio_PortA = 0, Iio_PortB = 1, Iio_PortC = 2, Iio_PortD = 3 }; typedef enum { Iio_Iou0 =0, Iio_Iou1, Iio_Iou2, Iio_Iou3, Iio_Iou4, Iio_IouMax } IIO_IOUS; typedef enum { Iio_Socket0 = 0, Iio_Socket1, Iio_Socket2, Iio_Socket3, Iio_Socket4, Iio_Socket5, Iio_Socket6, Iio_Socket7 } IIO_SOCKETS; typedef enum { VPP_PORT_0 = 0, VPP_PORT_1, VPP_PORT_2, VPP_PORT_3 } VPP_PORTS; /// /// Platform Port/Socket assignments. /// #define ENABLE 1 #define DISABLE 0 #define NO_SLT_IMP 0xFF #define SLT_IMP 1 #define HIDE 1 #define NOT_HIDE 0 #define VPP_PORT_0 0 #define VPP_PORT_1 1 #define VPP_PORT_MAX 0xFF #define VPP_ADDR_MAX 0xFF #define PWR_VAL_MAX 0xFF #define PWR_SCL_MAX 0xFF // // BW5 SMbus slave address // #define BW5_SMBUS_ADDRESS 0x4C #define PCA9555_COMMAND_CONFIG_PORT0_REG 0x06 #define PCA9555_COMMAND_INPUT_PORT0_REG 0x00 #define NUM_OF_RETRIES 0x03 #define BW5_0_ID_MASK 0x0007 #define BW5_1_ID_MASK 0x0070 #define BW5_2_ID_MASK 0x0700 #define BW5_3_ID_MASK 0x7000 #define BW5_CONFIG_REG_MASK 0xFF #define BW5_CARDS_PRESENT 0x04 #define BW5_CARD_NOT_PRESENT 0x07 // Bifurcation read from MCU #define BW5_BIFURCATE_x4x4x4x4 0 #define BW5_BIFURCATE_xxx8x4x4 1 #define BW5_BIFURCATE_x4x4xxx8 2 #define BW5_BIFURCATE_xxx8xxx8 3 #define BW4_DATA_OFFSET 0 #define BW4_CONFIG_OFFSET 3 typedef union { struct { UINT8 BifBits:3; UINT8 ExtPresent:1; UINT8 HotPlugEna:1; UINT8 Rsvd:2; UINT8 ExtId:1; } Bits; UINT8 Data; } BW5_BIFURCATION_DATA_STRUCT; /** This function prepare the data for silicon initialization based on bifuraction and slots table This function is for tables in version PLATFORM_IIO_CONFIG_UPDATE_VERSION = 1 */ VOID IioPortBifurcationInitVer1 ( IN IIO_GLOBALS *IioGlobalData ); /** Function returns the board ID from running HW @return BoardId **/ UINT8 EFIAPI SystemBoardIdValue ( VOID ); #endif