summaryrefslogtreecommitdiff
path: root/Silicon/BroxtonSoC/BroxtonSiPkg/NorthCluster/MemoryInit/BXT/Include/MrcEfiDefinitions.h
blob: b19d6a05c6bb61121deb1ca794b4f073bedb1cbc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
/** @file
  -  Copyright (c) 2016 - 2017, Intel Corporation. All rights reserved.<BR>

  This program and the accompanying materials
  are licensed and made available under the terms and conditions of the BSD License
  which accompanies this distribution.  The full text of the license may be found at
  http://opensource.org/licenses/bsd-license.php.

  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.

**/

#ifndef _MRCEFIDEFINITIONS_H_
#define _MRCEFIDEFINITIONS_H_

#if defined(EFI_MEMORY_INIT) || defined(FSP_FLAG)
#include <Ppi/DramPolicyPpi.h>
#include <Library/SteppingLib.h>
#define DRAM_POLICY DRAM_POLICY_PPI
#else

#include <Guiddef.h>
#include "DataTypes.h"

#define DRAM_POLICY_NUMBER_CHANNELS         4
#define DRAM_POLICY_NUMBER_BITS             32
#define DRAM_POLICY_NUMBER_SPD_ADDRESSES    2

#pragma pack(push,1)

typedef GUID                      EFI_GUID;

typedef struct {
  UINT8  RankEnable;
  UINT8  DeviceWidth;
  UINT8  DramDensity;
  UINT8  Option;
  UINT8  OdtConfig;
  UINT8  TristateClk1;
  UINT8  Mode2N;
  UINT8  OdtLevels;
} DRP_DRAM_POLICY;

typedef struct {
  UINT8                 Package;
  UINT8                 Profile;
  UINT8                 MemoryDown;
  UINT8                 DDR3LPageSize;
  UINT8                 DDR3LASR;
  EFI_PHYSICAL_ADDRESS  MrcTrainingDataPtr;
  EFI_PHYSICAL_ADDRESS  MrcBootDataPtr;
  UINT8                 ScramblerSupport;
  UINT16                ChannelHashMask;
  UINT16                SliceHashMask;
  UINT8                 InterleavedMode;
  UINT8                 ChannelsSlicesEnabled;  /// bit0 = SliceEnabled; bit1 = channelEnabled
  UINT8                 MinRefRate2xEnabled;
  UINT8                 DualRankSupportEnabled;
  UINT16                SystemMemorySizeLimit;
  UINT16                LowMemMaxVal;
  UINT16                HighMemMaxVal;
  UINT8                 DisableFastBoot;
  UINT8                 RmtMode;
  UINT8                 RmtCheckRun;
  UINT16                RmtMarginCheckScaleHighThreshold;
  UINT32                MsgLevelMask;
  UINT8                 SpdAddress[DRAM_POLICY_NUMBER_SPD_ADDRESSES];
  UINT8                 ChSwizzle[DRAM_POLICY_NUMBER_CHANNELS][DRAM_POLICY_NUMBER_BITS];
  DRP_DRAM_POLICY       ChDrp[DRAM_POLICY_NUMBER_CHANNELS];
  UINT8                 DebugMsgLevel;
  UINT8                 reserved[13];
} DRAM_POLICY_PPI;

#define DRAM_POLICY DRAM_POLICY_PPI

#pragma pack(pop)

typedef enum {
  Bxt          = 0x00,
  Bxt1,
  BxtX,
  BxtP,
  BxtSeriesMax = 0xFF
} BXT_SERIES;

#endif
#endif