|  | @@ -63,104 +63,6 @@ FILE_LICENCE ( BSD2 );
 | 
		
	
		
			
			| 63 | 63 |  
 | 
		
	
		
			
			| 64 | 64 |  #define THUNDERX_CPU_ID(node, cluster, core) (((node) << 16) | ((cluster) << 8) | (core))
 | 
		
	
		
			
			| 65 | 65 |  
 | 
		
	
		
			
			| 66 |  | -//TODO: Put common type definitions in separate common include file
 | 
		
	
		
			
			| 67 |  | -typedef enum {
 | 
		
	
		
			
			| 68 |  | -    BGX_MODE_SGMII, /* 1 lane, 1.250 Gbaud */
 | 
		
	
		
			
			| 69 |  | -    BGX_MODE_XAUI,  /* 4 lanes, 3.125 Gbaud */
 | 
		
	
		
			
			| 70 |  | -    BGX_MODE_DXAUI, /* 4 lanes, 6.250 Gbaud */
 | 
		
	
		
			
			| 71 |  | -    BGX_MODE_RXAUI, /* 2 lanes, 6.250 Gbaud */
 | 
		
	
		
			
			| 72 |  | -    BGX_MODE_XFI,   /* 1 lane, 10.3125 Gbaud */
 | 
		
	
		
			
			| 73 |  | -    BGX_MODE_XLAUI, /* 4 lanes, 10.3125 Gbaud */
 | 
		
	
		
			
			| 74 |  | -    BGX_MODE_10G_KR,/* 1 lane, 10.3125 Gbaud */
 | 
		
	
		
			
			| 75 |  | -    BGX_MODE_40G_KR,/* 4 lanes, 10.3125 Gbaud */
 | 
		
	
		
			
			| 76 |  | -    BGX_MODE_UNKNOWN
 | 
		
	
		
			
			| 77 |  | -} BGX_MODE_T;
 | 
		
	
		
			
			| 78 |  | -
 | 
		
	
		
			
			| 79 |  | -typedef enum {
 | 
		
	
		
			
			| 80 |  | -    EBB8800,
 | 
		
	
		
			
			| 81 |  | -    EBB8804,
 | 
		
	
		
			
			| 82 |  | -    CRB_1S,
 | 
		
	
		
			
			| 83 |  | -    CRB_2S,
 | 
		
	
		
			
			| 84 |  | -    ASIANCAT,
 | 
		
	
		
			
			| 85 |  | -    GBT_MT60,
 | 
		
	
		
			
			| 86 |  | -    INVENTEC_P3E003,
 | 
		
	
		
			
			| 87 |  | -    BOARD_MAX
 | 
		
	
		
			
			| 88 |  | -} BOARD_TYPE;
 | 
		
	
		
			
			| 89 |  | -
 | 
		
	
		
			
			| 90 |  | -typedef struct {
 | 
		
	
		
			
			| 91 |  | -    BOOLEAN Enabled;
 | 
		
	
		
			
			| 92 |  | -    UINT64  LaneToSds;
 | 
		
	
		
			
			| 93 |  | -    UINT64  MacAddress;
 | 
		
	
		
			
			| 94 |  | -} LMAC_CFG;
 | 
		
	
		
			
			| 95 |  | -
 | 
		
	
		
			
			| 96 |  | -typedef struct {
 | 
		
	
		
			
			| 97 |  | -    BOOLEAN BgxEnabled;
 | 
		
	
		
			
			| 98 |  | -    BGX_MODE_T BgxMode;
 | 
		
	
		
			
			| 99 |  | -    UINTN    LmacCount; //Maximum number of LMAcs
 | 
		
	
		
			
			| 100 |  | -    UINT64   BaseAddress;
 | 
		
	
		
			
			| 101 |  | -    UINT64   LmacType;
 | 
		
	
		
			
			| 102 |  | -    /* Bit mask of QLMs connected to this BGX */
 | 
		
	
		
			
			| 103 |  | -    UINT64   QlmMask;
 | 
		
	
		
			
			| 104 |  | -    UINT64   QlmFreq;
 | 
		
	
		
			
			| 105 |  | -    BOOLEAN  UseTraining;
 | 
		
	
		
			
			| 106 |  | -    LMAC_CFG Lmacs[LMAC_PER_BGX_COUNT];
 | 
		
	
		
			
			| 107 |  | -} BGX_CFG;
 | 
		
	
		
			
			| 108 |  | -
 | 
		
	
		
			
			| 109 |  | -typedef struct {
 | 
		
	
		
			
			| 110 |  | -    BOOLEAN PemUsable;
 | 
		
	
		
			
			| 111 |  | -} PEM_CFG;
 | 
		
	
		
			
			| 112 |  | -
 | 
		
	
		
			
			| 113 |  | -typedef struct {
 | 
		
	
		
			
			| 114 |  | -    enum { NotPresent, Empty, Available } Status;
 | 
		
	
		
			
			| 115 |  | -    UINT8 Type;
 | 
		
	
		
			
			| 116 |  | -    UINT8 SubType;
 | 
		
	
		
			
			| 117 |  | -    UINT8 Rank;
 | 
		
	
		
			
			| 118 |  | -    UINT16 Mfg;
 | 
		
	
		
			
			| 119 |  | -    UINTN SizeMb;
 | 
		
	
		
			
			| 120 |  | -    UINTN Speed;
 | 
		
	
		
			
			| 121 |  | -    CHAR8 Serial[16];
 | 
		
	
		
			
			| 122 |  | -    CHAR8 PartNo[24];
 | 
		
	
		
			
			| 123 |  | -} DIMM_CFG;
 | 
		
	
		
			
			| 124 |  | -
 | 
		
	
		
			
			| 125 |  | -typedef struct {
 | 
		
	
		
			
			| 126 |  | -    DIMM_CFG DimmCfg[DIMM_PER_LMC_COUNT];
 | 
		
	
		
			
			| 127 |  | -} LMC_CFG;
 | 
		
	
		
			
			| 128 |  | -
 | 
		
	
		
			
			| 129 |  | -typedef struct {
 | 
		
	
		
			
			| 130 |  | -    BOOLEAN Core[CORE_COUNT];
 | 
		
	
		
			
			| 131 |  | -    BGX_CFG BgxCfg[BGX_PER_NODE_COUNT];
 | 
		
	
		
			
			| 132 |  | -    PEM_CFG PemCfg[PEM_PER_NODE_COUNT];
 | 
		
	
		
			
			| 133 |  | -    LMC_CFG LmcCfg[LMC_PER_NODE_COUNT];
 | 
		
	
		
			
			| 134 |  | -    UINT64 RamStart;
 | 
		
	
		
			
			| 135 |  | -    UINT64 RamReserve;
 | 
		
	
		
			
			| 136 |  | -    UINT64 RamSize;
 | 
		
	
		
			
			| 137 |  | -    UINTN CPUSpeed;
 | 
		
	
		
			
			| 138 |  | -    UINTN CPUVersion;
 | 
		
	
		
			
			| 139 |  | -} NODE_CFG;
 | 
		
	
		
			
			| 140 |  | -
 | 
		
	
		
			
			| 141 |  | -#define MAX_SERIAL 32
 | 
		
	
		
			
			| 142 |  | -#define MAX_REVISION 32
 | 
		
	
		
			
			| 143 |  | -typedef struct {
 | 
		
	
		
			
			| 144 |  | -    BOARD_TYPE BoardType;
 | 
		
	
		
			
			| 145 |  | -    CHAR8 Serial[MAX_SERIAL];
 | 
		
	
		
			
			| 146 |  | -    CHAR8 Revision[MAX_REVISION];
 | 
		
	
		
			
			| 147 |  | -    UINTN NumNodes;
 | 
		
	
		
			
			| 148 |  | -    UINTN BmcBootTwsiBus;
 | 
		
	
		
			
			| 149 |  | -    UINTN BmcBootTwsiAddr;
 | 
		
	
		
			
			| 150 |  | -    UINTN RtcTwsiBus;
 | 
		
	
		
			
			| 151 |  | -    UINTN RtcTwsiAddr;
 | 
		
	
		
			
			| 152 |  | -    /* IPMI support*/
 | 
		
	
		
			
			| 153 |  | -    UINTN BmcIpmiTwsiBus;
 | 
		
	
		
			
			| 154 |  | -    UINTN BmcIpmiTwsiAddr;
 | 
		
	
		
			
			| 155 |  | -    NODE_CFG Node[MAX_NODES];
 | 
		
	
		
			
			| 156 |  | -    UINT16 CpuClusterCount;
 | 
		
	
		
			
			| 157 |  | -    UINT16 CpuPerClusterCount;
 | 
		
	
		
			
			| 158 |  | -    UINT16 PcieSegmentCount;
 | 
		
	
		
			
			| 159 |  | -    UINT64 MacAddrRangeStart;
 | 
		
	
		
			
			| 160 |  | -    UINTN DdrSpeed;
 | 
		
	
		
			
			| 161 |  | -    UINT64 AcpiOemTableId;
 | 
		
	
		
			
			| 162 |  | -} BOARD_CFG;
 | 
		
	
		
			
			| 163 |  | -
 | 
		
	
		
			
			| 164 | 66 |  /******************************************************************************
 | 
		
	
		
			
			| 165 | 67 |   *
 | 
		
	
		
			
			| 166 | 68 |   * From ThunderConfigProtocol.h
 | 
		
	
	
		
			
			|  | @@ -183,13 +85,30 @@ typedef struct {
 | 
		
	
		
			
			| 183 | 85 |   */
 | 
		
	
		
			
			| 184 | 86 |  
 | 
		
	
		
			
			| 185 | 87 |  #define EFI_THUNDER_CONFIG_PROTOCOL_GUID \
 | 
		
	
		
			
			| 186 |  | -  {0xb75a0608, 0x99ff, 0x11e5, {0x9b, 0xeb, 0x00, 0x14, 0xd1, 0xfa, 0x23, 0x5c}}
 | 
		
	
		
			
			|  | 88 | +  {0xc12b1873, 0xac17, 0x4176, {0xac, 0x77, 0x7e, 0xcb, 0x4d, 0xef, 0xff, 0xec}}
 | 
		
	
		
			
			| 187 | 89 |  
 | 
		
	
		
			
			| 188 | 90 |  ///
 | 
		
	
		
			
			| 189 | 91 |  /// Forward declaration
 | 
		
	
		
			
			| 190 | 92 |  ///
 | 
		
	
		
			
			| 191 | 93 |  typedef struct _EFI_THUNDER_CONFIG_PROTOCOL EFI_THUNDER_CONFIG_PROTOCOL;
 | 
		
	
		
			
			| 192 | 94 |  
 | 
		
	
		
			
			|  | 95 | +typedef enum {
 | 
		
	
		
			
			|  | 96 | +  BGX_ENABLED,
 | 
		
	
		
			
			|  | 97 | +  BGX_MODE,
 | 
		
	
		
			
			|  | 98 | +  LMAC_COUNT,
 | 
		
	
		
			
			|  | 99 | +  BASE_ADDRESS,
 | 
		
	
		
			
			|  | 100 | +  LMAC_TYPE_BGX,
 | 
		
	
		
			
			|  | 101 | +  QLM_MASK,
 | 
		
	
		
			
			|  | 102 | +  QLM_FREQ,
 | 
		
	
		
			
			|  | 103 | +  USE_TRAINING
 | 
		
	
		
			
			|  | 104 | +} BGX_PROPERTY;
 | 
		
	
		
			
			|  | 105 | +
 | 
		
	
		
			
			|  | 106 | +typedef enum {
 | 
		
	
		
			
			|  | 107 | +  ENABLED,
 | 
		
	
		
			
			|  | 108 | +  LANE_TO_SDS,
 | 
		
	
		
			
			|  | 109 | +  MAC_ADDRESS
 | 
		
	
		
			
			|  | 110 | +} LMAC_PROPERTY;
 | 
		
	
		
			
			|  | 111 | +
 | 
		
	
		
			
			| 193 | 112 |  ///
 | 
		
	
		
			
			| 194 | 113 |  /// Function prototypes
 | 
		
	
		
			
			| 195 | 114 |  ///
 | 
		
	
	
		
			
			|  | @@ -197,7 +116,30 @@ typedef
 | 
		
	
		
			
			| 197 | 116 |  EFI_STATUS
 | 
		
	
		
			
			| 198 | 117 |  (EFIAPI *EFI_THUNDER_CONFIG_PROTOCOL_GET_CONFIG)(
 | 
		
	
		
			
			| 199 | 118 |    IN EFI_THUNDER_CONFIG_PROTOCOL  *This,
 | 
		
	
		
			
			| 200 |  | -  OUT BOARD_CFG** cfg
 | 
		
	
		
			
			|  | 119 | +  OUT VOID** cfg
 | 
		
	
		
			
			|  | 120 | +  );
 | 
		
	
		
			
			|  | 121 | +
 | 
		
	
		
			
			|  | 122 | +typedef
 | 
		
	
		
			
			|  | 123 | +EFI_STATUS
 | 
		
	
		
			
			|  | 124 | +(EFIAPI *EFI_THUNDER_CONFIG_PROTOCOL_GET_BGX_PROP)(
 | 
		
	
		
			
			|  | 125 | +  IN EFI_THUNDER_CONFIG_PROTOCOL   *This,
 | 
		
	
		
			
			|  | 126 | +  IN UINTN                         NodeId,
 | 
		
	
		
			
			|  | 127 | +  IN UINTN                         BgxId,
 | 
		
	
		
			
			|  | 128 | +  IN BGX_PROPERTY                  BgxProp,
 | 
		
	
		
			
			|  | 129 | +  IN UINT64                        ValueSize,
 | 
		
	
		
			
			|  | 130 | +  OUT UINT64                       *Value
 | 
		
	
		
			
			|  | 131 | +  );
 | 
		
	
		
			
			|  | 132 | +
 | 
		
	
		
			
			|  | 133 | +typedef
 | 
		
	
		
			
			|  | 134 | +EFI_STATUS
 | 
		
	
		
			
			|  | 135 | +(EFIAPI *EFI_THUNDER_CONFIG_PROTOCOL_GET_LMAC_PROP)(
 | 
		
	
		
			
			|  | 136 | +  IN EFI_THUNDER_CONFIG_PROTOCOL   *This,
 | 
		
	
		
			
			|  | 137 | +  IN UINTN                         NodeId,
 | 
		
	
		
			
			|  | 138 | +  IN UINTN                         BgxId,
 | 
		
	
		
			
			|  | 139 | +  IN UINTN                         LmacId,
 | 
		
	
		
			
			|  | 140 | +  IN LMAC_PROPERTY                 LmacProp,
 | 
		
	
		
			
			|  | 141 | +  IN UINT64                        ValueSize,
 | 
		
	
		
			
			|  | 142 | +  OUT UINT64                       *Value
 | 
		
	
		
			
			| 201 | 143 |    );
 | 
		
	
		
			
			| 202 | 144 |  
 | 
		
	
		
			
			| 203 | 145 |  ///
 | 
		
	
	
		
			
			|  | @@ -205,7 +147,9 @@ EFI_STATUS
 | 
		
	
		
			
			| 205 | 147 |  ///
 | 
		
	
		
			
			| 206 | 148 |  struct _EFI_THUNDER_CONFIG_PROTOCOL {
 | 
		
	
		
			
			| 207 | 149 |    EFI_THUNDER_CONFIG_PROTOCOL_GET_CONFIG GetConfig;
 | 
		
	
		
			
			| 208 |  | -  BOARD_CFG* BoardConfig;
 | 
		
	
		
			
			|  | 150 | +  EFI_THUNDER_CONFIG_PROTOCOL_GET_BGX_PROP GetBgxProp;
 | 
		
	
		
			
			|  | 151 | +  EFI_THUNDER_CONFIG_PROTOCOL_GET_LMAC_PROP GetLmacProp;
 | 
		
	
		
			
			|  | 152 | +  VOID* BoardConfig;
 | 
		
	
		
			
			| 209 | 153 |  };
 | 
		
	
		
			
			| 210 | 154 |  
 | 
		
	
		
			
			| 211 | 155 |  #endif /* _THUNDERXCFG_H */
 |