/************************************************************************ * * Copyright (c) 2013-2015 Intel Corporation. * * SPDX-License-Identifier: BSD-2-Clause-Patent * * MCU register definition * ************************************************************************/ #ifndef __IOSF_DEFINITIONS_H #define __IOSF_DEFINITIONS_H // Define each of the IOSF-SB register offsets used by MRC. // MCU registers (DUNIT): // ==== #define DRP 0x0000 #define DTR0 0x0001 #define DTR1 0x0002 #define DTR2 0x0003 #define DTR3 0x0004 #define DTR4 0x0005 #define DPMC0 0x0006 #define DPMC1 0x0007 #define DRFC 0x0008 #define DSCH 0x0009 #define DCAL 0x000A #define DRMC 0x000B #define PMSTS 0x000C #define DCO 0x000F #define DSTAT 0x0020 #define DECCCTRL 0x0060 #define DFUSESTAT 0x0070 #define SCRMSEED 0x0080 #define SCRMLO 0x0081 #define SCRMHI 0x0082 #define MCU_CH_OFFSET 0x0040 #define MCU_RK_OFFSET 0x0020 //// // // BEGIN DUnit register definition // #pragma pack(1) typedef union { uint32_t raw; struct { uint32_t rank0Enabled :1; /**< BIT [0] Rank 0 Enable */ uint32_t rank1Enabled :1; /**< BIT [1] Rank 1 Enable */ uint32_t reserved0 :2; uint32_t dimm0DevWidth :2; /**< BIT [5:4] DIMM 0 Device Width (Rank0&1) */ uint32_t dimm0DevDensity :2; /**< BIT [7:6] DIMM 0 Device Density */ uint32_t reserved1 :1; uint32_t dimm1DevWidth :2; /**< BIT [10:9] DIMM 1 Device Width (Rank2&3) */ uint32_t dimm1DevDensity :2; /**< BIT [12:11] DIMM 1 Device Density */ uint32_t split64 :1; /**< BIT [13] split 64B transactions */ uint32_t addressMap :2; /**< BIT [15:14] Address Map select */ uint32_t reserved3 :14; uint32_t mode32 :1; /**< BIT [30] Select 32bit data interface*/ uint32_t reserved4 :1; } field; } RegDRP; /**< DRAM Rank Population and Interface Register */ #pragma pack() #pragma pack(1) typedef union { uint32_t raw; struct { uint32_t dramFrequency :2; /**< DRAM Frequency (000=800,001=1033,010=1333) */ uint32_t reserved1 :2; uint32_t tRP :4; /**< bit [7:4] Precharge to Activate Delay */ uint32_t tRCD :4; /**< bit [11:8] Activate to CAS Delay */ uint32_t tCL :3; /**< bit [14:12] CAS Latency */ uint32_t reserved4 :1; uint32_t tXS :1; /**< SRX Delay */ uint32_t reserved5 :1; uint32_t tXSDLL :1; /**< SRX To DLL Delay */ uint32_t reserved6 :1; uint32_t tZQCS :1; /**< bit [20] ZQTS recovery Latncy */ uint32_t reserved7 :1; uint32_t tZQCL :1; /**< bit [22] ZQCL recovery Latncy */ uint32_t reserved8 :1; uint32_t pmeDelay :2; /**< bit [25:24] Power mode entry delay */ uint32_t reserved9 :2; uint32_t CKEDLY :4; /**< bit [31:28] */ } field; } RegDTR0; /**< DRAM Timing Register 0 */ #pragma pack() #pragma pack(1) typedef union { uint32_t raw; struct { uint32_t tWCL :3; /**< bit [2:0] CAS Write Latency */ uint32_t reserved1 :1; uint32_t tCMD :2; /**< bit [5:4] Command transport duration */ uint32_t reserved2 :2; uint32_t tWTP :4; /**< Write to Precharge */ uint32_t tCCD :2; /**< CAS to CAS delay */ uint32_t reserved4 :2; uint32_t tFAW :4; /**< Four bank Activation Window*/ uint32_t tRAS :4; /**< Row Activation Period: */ uint32_t tRRD :2; /**