coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
meminit.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 
3 #ifndef _SOC_TIGERLAKE_MEMINIT_H_
4 #define _SOC_TIGERLAKE_MEMINIT_H_
5 
6 #include <types.h>
7 #include <fsp/soc_binding.h>
8 #include <intelblocks/meminit.h>
9 
10 enum mem_type {
13 };
14 
15 struct ddr4_dq {
24 };
25 
26 struct ddr4_dqs {
35 };
36 
37 struct ddr4_dq_map {
38  struct ddr4_dq ddr0;
39  struct ddr4_dq ddr1;
40 };
41 
42 struct ddr4_dqs_map {
43  struct ddr4_dqs ddr0;
44  struct ddr4_dqs ddr1;
45 };
46 
47 struct lp4x_dq {
50 };
51 
52 struct lp4x_dqs {
55 };
56 
57 struct lp4x_dq_map {
58  struct lp4x_dq ddr0;
59  struct lp4x_dq ddr1;
60  struct lp4x_dq ddr2;
61  struct lp4x_dq ddr3;
62  struct lp4x_dq ddr4;
63  struct lp4x_dq ddr5;
64  struct lp4x_dq ddr6;
65  struct lp4x_dq ddr7;
66 };
67 
68 struct lp4x_dqs_map {
69  struct lp4x_dqs ddr0;
70  struct lp4x_dqs ddr1;
71  struct lp4x_dqs ddr2;
72  struct lp4x_dqs ddr3;
73  struct lp4x_dqs ddr4;
74  struct lp4x_dqs ddr5;
75  struct lp4x_dqs ddr6;
76  struct lp4x_dqs ddr7;
77 };
78 
81 };
82 
83 struct mb_cfg {
84  enum mem_type type;
85 
86  union {
87  /*
88  * DQ CPU<>DRAM map:
89  * Index of the array represents DQ# on the CPU and the value represents DQ# on
90  * the DRAM part.
91  */
92  uint8_t dq_map[CONFIG_DATA_BUS_WIDTH];
93  struct lp4x_dq_map lp4x_dq_map;
94  struct ddr4_dq_map ddr4_dq_map;
95  };
96 
97  union {
98  /*
99  * DQS CPU<>DRAM map:
100  * Index of the array represents DQS# on the CPU and the value represents DQS#
101  * on the DRAM part.
102  */
103  uint8_t dqs_map[CONFIG_DATA_BUS_WIDTH/BITS_PER_BYTE];
104  struct lp4x_dqs_map lp4x_dqs_map;
105  struct ddr4_dqs_map ddr4_dqs_map;
106  };
107 
108  /* Early Command Training Enable/Disable Control */
109  bool ect;
110 
112 };
113 
114 void memcfg_init(FSPM_UPD *memupd, const struct mb_cfg *mb_cfg,
115  const struct mem_spd *spd_info, bool half_populated);
116 
117 #endif /* _SOC_TIGERLAKE_MEMINIT_H_ */
void memcfg_init(FSPM_UPD *memupd, const struct mb_cfg *mb_cfg, const struct mem_spd *spd_info, bool half_populated)
Definition: meminit.c:238
mem_type
Definition: meminit.h:10
@ MEM_TYPE_LP4X
Definition: meminit.h:13
@ MEM_TYPE_DDR4
Definition: meminit.h:11
#define BITS_PER_BYTE
Definition: types.h:22
unsigned char uint8_t
Definition: stdint.h:8
struct ddr4_dq ddr1
Definition: meminit.h:39
struct ddr4_dq ddr0
Definition: meminit.h:38
uint8_t dq3[BITS_PER_BYTE]
Definition: meminit.h:19
uint8_t dq0[BITS_PER_BYTE]
Definition: meminit.h:16
uint8_t dq2[BITS_PER_BYTE]
Definition: meminit.h:18
uint8_t dq6[BITS_PER_BYTE]
Definition: meminit.h:22
uint8_t dq7[BITS_PER_BYTE]
Definition: meminit.h:23
uint8_t dq4[BITS_PER_BYTE]
Definition: meminit.h:20
uint8_t dq1[BITS_PER_BYTE]
Definition: meminit.h:17
uint8_t dq5[BITS_PER_BYTE]
Definition: meminit.h:21
struct ddr4_dqs ddr0
Definition: meminit.h:43
struct ddr4_dqs ddr1
Definition: meminit.h:44
uint8_t dqs6
Definition: meminit.h:33
uint8_t dqs4
Definition: meminit.h:31
uint8_t dqs2
Definition: meminit.h:29
uint8_t dqs1
Definition: meminit.h:28
uint8_t dqs7
Definition: meminit.h:34
uint8_t dqs3
Definition: meminit.h:30
uint8_t dqs5
Definition: meminit.h:32
uint8_t dqs0
Definition: meminit.h:27
struct lp4x_dq ddr0
Definition: meminit.h:58
struct lp4x_dq ddr4
Definition: meminit.h:62
struct lp4x_dq ddr6
Definition: meminit.h:64
struct lp4x_dq ddr7
Definition: meminit.h:65
struct lp4x_dq ddr5
Definition: meminit.h:63
struct lp4x_dq ddr3
Definition: meminit.h:61
struct lp4x_dq ddr2
Definition: meminit.h:60
struct lp4x_dq ddr1
Definition: meminit.h:59
uint8_t dq1[BITS_PER_BYTE]
Definition: meminit.h:49
uint8_t dq0[BITS_PER_BYTE]
Definition: meminit.h:48
struct lp4x_dqs ddr0
Definition: meminit.h:69
struct lp4x_dqs ddr2
Definition: meminit.h:71
struct lp4x_dqs ddr7
Definition: meminit.h:76
struct lp4x_dqs ddr5
Definition: meminit.h:74
struct lp4x_dqs ddr1
Definition: meminit.h:70
struct lp4x_dqs ddr3
Definition: meminit.h:72
struct lp4x_dqs ddr6
Definition: meminit.h:75
struct lp4x_dqs ddr4
Definition: meminit.h:73
uint8_t dqs1
Definition: meminit.h:54
uint8_t dqs0
Definition: meminit.h:53
Definition: meminit.h:71
bool ect
Definition: meminit.h:100
uint8_t dqs_map[CONFIG_DATA_BUS_WIDTH/BITS_PER_BYTE]
Definition: meminit.h:90
enum mem_type type
Definition: meminit.h:72
struct mem_ddr4_config ddr4_config
Definition: meminit.h:111
uint8_t dq_map[CONFIG_DATA_BUS_WIDTH]
Definition: meminit.h:80
bool dq_pins_interleaved
Definition: meminit.h:80
Definition: spd.h:11