/** @file Copyright (c) 2018, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ #ifndef _memhostchipcommon_h #define _memhostchipcommon_h #include "SysHostChipCommon.h" #define NODE_TO_SKT(node) (node / MAX_IMC) #define SKT_TO_NODE(socket, mc) ((socket << 1) | (mc & BIT0)) #define NODE_TO_MC(node) (node % MAX_IMC) #define SKTMC_TO_NODE(socket, mc) ((socket * MAX_IMC) | (mc % MAX_IMC)) #define NODECH_TO_SKTCH(node, ch) (((node % MAX_IMC)*MAX_MC_CH) + ch) // // //MAX_CHANNELS and DYNVAR_MAX were previously defined in MmrcProjectDefinitionsGenerated.h, but // now are here and must be manually updated as needed depending on MMRC tool execution (they have been // removed from automatic generation by the tool) // // Channels // #define MAX_CHANNELS 6 #define DYNVAR_MAX 51 #define MAX_IMC 2 #define MAX_MC_CH 3 // Max channels per MC #define MAX_CH ((MAX_IMC)*(MAX_MC_CH)) // Max channels per socket #define MC_MAX_NODE (MAX_SOCKET * MAX_IMC) // Max number of memory nodes #define MAX_DIMM 2 // Max DIMM per channel #define MAX_DIMM3 3 // Max DIMM per channel #define MAX_TECH 19 // Number of entries in DRAM technology table #define MAX_RIR 4 // Number of Rank Interleave Register rules for DDR #define MAX_RIR_DDRT 4 // Number of Rank Interleave Register rules for NVMDIMM #define MAX_RIR_WAYS 8 // Number of interleave ways for RIR for DDR #define TAD_RULES 8 // Number of TAD rule registers #define MAX_TAD_WAYS 3 // Number of interleave ways for TAD RULES #define SAD_RULES 24 // Number of SAD rule registers #define MAX_SAD_RULES 24 // Number of SAD rule registers #define MAX_STROBE 18 // Number of strobe groups #define MAX_SEEDS 10 // Maximum #if QR_DIMM_SUPPORT #define MAX_RANK_DIMM 4 // Max ranks per DIMM #else #define MAX_RANK_DIMM 2 // Max ranks per DIMM #endif #define MAX_RANK_CH 8 // Max ranks per channel #define MAX_SPARE_RANK 2 // Max number of spare ranks in a channel #define SPD_MODULE_PART 18 // Number of bytes of module part - DDR3 #define SPD_MODULE_PART_DDR4 20 // Number of bytes of module part - DDR4 #define SAD_RULES_ADDR_RANGE 4 // Max IOT rules = 4, Total address limits (lower(4) entries each) // Ctl FUBs #define NUM_CTL_PLATFORM_GROUPS 4 // SPD Defines //----------------------------------------------------------------------------- #pragma pack(1) // // Define the WDB line. The WDB line is like the cache line. // #define MRC_WDB_LINES 32 #define MRC_WDB_LINE_SIZE 64 #define CADB_LINES 16 // Define in the Critical Section function on what to wait. // typedef enum { DoneAndRefDrained, Done, Immediate } EWaitOn; typedef enum { ssOne = 0, ssTwo, ssThree, ssFour, } TSubSequencesNumber; #define MAX_PHASE_IN_FINE_ADJUSTMENT 64 #pragma pack() #define SKX_PCKG_TYPE 4 //CMD_CTL_DELAY_H #define CHIP_IOGPDLY_PSECS SKX_PCKG_TYPE // // Chip specific section of the struct CPU_CSR_ACCESS_VAR // #define CPU_CSR_ACCESS_VAR_CHIP \ typedef enum { TYPE_SCF_BAR = 0, TYPE_PCU_BAR, TYPE_MEM_BAR0, TYPE_MEM_BAR1, TYPE_MEM_BAR2, TYPE_MEM_BAR3, TYPE_MEM_BAR4, TYPE_MEM_BAR5, TYPE_MEM_BAR6, TYPE_MEM_BAR7, TYPE_SBREG_BAR, TYPE_MAX_MMIO_BAR } MMIO_BARS; // Output structures based on scope #define MAX_BITS 72 #endif // _memhostchipcommon_h