coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
raminit.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 
3 #ifndef PINEVIEW_RAMINIT_H
4 #define PINEVIEW_RAMINIT_H
5 
6 #define SYSINFO_DIMM_NOT_POPULATED 0x00
7 #define SYSINFO_DIMM_X16SS 0x01
8 #define SYSINFO_DIMM_X16DS 0x02
9 #define SYSINFO_DIMM_X8DS 0x05
10 #define SYSINFO_DIMM_X8DDS 0x06
11 
12 enum fsb_clk {
15 };
16 
17 enum mem_clk {
20 };
21 
22 enum ddr {
23  DDR2 = 2,
24  DDR3 = 3,
25 };
26 
27 enum chip_width { /* as in DDR3 spd */
32 };
33 
34 enum chip_cap { /* as in DDR3 spd */
42 };
43 
44 struct timings {
45  unsigned int CAS;
46  enum fsb_clk fsb_clock;
47  enum mem_clk mem_clock;
48  unsigned int tRAS;
49  unsigned int tRP;
50  unsigned int tRCD;
51  unsigned int tWR;
52  unsigned int tRFC;
53  unsigned int tWTR;
54  unsigned int tRRD;
55  unsigned int tRTP;
56 };
57 
58 struct dimminfo {
59  unsigned int card_type; /* 0x0: unpopulated,
60  0xa - 0xf: raw card type A - F */
62  enum chip_width width;
64  unsigned int page_size; /* of whole DIMM in Bytes (4096 or 8192) */
65  unsigned int sides;
66  unsigned int banks;
67  unsigned int ranks;
68  unsigned int rows;
69  unsigned int cols;
70  unsigned int cas_latencies;
71  unsigned int tAAmin;
72  unsigned int tCKmin;
73  unsigned int tWR;
74  unsigned int tRP;
75  unsigned int tRCD;
76  unsigned int tRAS;
77  unsigned int rank_capacity_mb; /* per rank in Megabytes */
78  u8 spd_data[256];
79 };
80 
81 struct pllparam {
82  u8 kcoarse[2][72];
83  u8 pi[2][72];
84  u8 dben[2][72];
85  u8 dbsel[2][72];
86  u8 clkdelay[2][72];
87 };
88 
89 struct sysinfo {
92  u8 pi[8];
97 
99  int cores;
108 
109  int dimm_config[2];
111  int spd_type;
113  struct timings selected_timings;
114  struct dimminfo dimms[4];
116 
120  u8 mvco4x; /* 0 (8x) or 1 (4x) */
121 };
122 
123 void sdram_initialize(int boot_path, const u8 *sdram_addresses);
124 
125 #endif /* PINEVIEW_RAMINIT_H */
void sdram_initialize(void)
Definition: raminit.c:1692
fsb_clk
Definition: raminit.h:12
@ FSB_CLOCK_800MHz
Definition: raminit.h:14
@ FSB_CLOCK_667MHz
Definition: raminit.h:13
chip_cap
Definition: raminit.h:34
@ CHIP_CAP_1G
Definition: raminit.h:37
@ CHIP_CAP_4G
Definition: raminit.h:39
@ CHIP_CAP_512M
Definition: raminit.h:36
@ CHIP_CAP_8G
Definition: raminit.h:40
@ CHIP_CAP_2G
Definition: raminit.h:38
@ CHIP_CAP_256M
Definition: raminit.h:35
@ CHIP_CAP_16G
Definition: raminit.h:41
mem_clk
Definition: raminit.h:17
@ MEM_CLOCK_667MHz
Definition: raminit.h:18
@ MEM_CLOCK_800MHz
Definition: raminit.h:19
ddr
Definition: raminit.h:22
@ DDR3
Definition: raminit.h:24
@ DDR2
Definition: raminit.h:23
chip_width
Definition: raminit.h:27
@ CHIP_WIDTH_x32
Definition: raminit.h:31
@ CHIP_WIDTH_x8
Definition: raminit.h:29
@ CHIP_WIDTH_x4
Definition: raminit.h:28
@ CHIP_WIDTH_x16
Definition: raminit.h:30
uint16_t u16
Definition: stdint.h:48
uint8_t u8
Definition: stdint.h:45
unsigned int cols
Definition: raminit.h:69
unsigned int tWR
Definition: raminit.h:73
unsigned int rows
Definition: raminit.h:68
unsigned int tAAmin
Definition: raminit.h:71
u8 type
Definition: raminit.h:61
unsigned int card_type
Definition: raminit.h:59
unsigned int ranks
Definition: raminit.h:67
u8 spd_data[256]
Definition: raminit.h:78
unsigned int tRAS
Definition: raminit.h:76
unsigned int rank_capacity_mb
Definition: raminit.h:77
unsigned int page_size
Definition: raminit.h:64
unsigned int tRP
Definition: raminit.h:74
enum chip_width width
Definition: raminit.h:62
enum chip_cap chip_capacity
Definition: raminit.h:63
unsigned int tCKmin
Definition: raminit.h:72
unsigned int sides
Definition: raminit.h:65
unsigned int tRCD
Definition: raminit.h:75
unsigned int banks
Definition: raminit.h:66
unsigned int cas_latencies
Definition: raminit.h:70
u8 clkdelay[2][72]
Definition: raminit.h:86
u8 dben[2][72]
Definition: raminit.h:84
u8 kcoarse[2][72]
Definition: raminit.h:82
u8 pi[2][72]
Definition: raminit.h:83
u8 dbsel[2][72]
Definition: raminit.h:85
int txt_enabled
Definition: raminit.h:98
int channel_capacity[2]
Definition: raminit.h:112
u8 mvco4x
Definition: raminit.h:120
struct dimminfo dimms[4]
Definition: raminit.h:114
int max_render_mhz
Definition: raminit.h:104
u8 nodll
Definition: raminit.h:117
u16 coarsedelay
Definition: raminit.h:94
u16 readptrdelay
Definition: raminit.h:96
u8 maxpi
Definition: raminit.h:90
u8 async
Definition: raminit.h:118
int max_ddr2_mhz
Definition: raminit.h:101
int enable_peg
Definition: raminit.h:106
int cores
Definition: raminit.h:99
u8 pioffset
Definition: raminit.h:91
int spd_type
Definition: raminit.h:111
int max_fsb_mhz
Definition: raminit.h:103
int dimm_config[2]
Definition: raminit.h:109
u8 spd_map[4]
Definition: raminit.h:115
int enable_igd
Definition: raminit.h:105
u8 pi[8]
Definition: raminit.h:92
int dimms_per_ch
Definition: raminit.h:110
u8 dt0mode
Definition: raminit.h:119
int max_ddr3_mt
Definition: raminit.h:102
u16 ggc
Definition: raminit.h:107
u16 coarsectrl
Definition: raminit.h:93
u16 mediumphase
Definition: raminit.h:95
struct timings selected_timings
Definition: raminit.h:113
int boot_path
Definition: raminit.h:100
enum fsb_clk fsb_clock
Definition: raminit.h:46
enum mem_clk mem_clock
Definition: raminit.h:47
unsigned int tRTP
Definition: raminit.h:55
unsigned int tRP
Definition: raminit.h:49
unsigned int tRRD
Definition: raminit.h:54
unsigned int tWR
Definition: raminit.h:51
unsigned int tWTR
Definition: raminit.h:53
unsigned int tRCD
Definition: raminit.h:50
unsigned int tRFC
Definition: raminit.h:52
unsigned int CAS
Definition: raminit.h:45
unsigned int tRAS
Definition: raminit.h:48