cpu/intel: Add socket types
[coreboot2.git] / src / northbridge / intel / i945 / raminit.h
blob22c4faf653385405a32fcda390dda273ddc36e6c
1 /* SPDX-License-Identifier: GPL-2.0-only */
3 #ifndef RAMINIT_H
4 #define RAMINIT_H
6 #include <types.h>
8 #define DIMM_SOCKETS 2
10 #define DIMM_TCO_BASE 0x30
12 /* Burst length is always 8 */
13 #define BURSTLENGTH 8
15 struct sys_info {
16 u16 memory_frequency; /* 400, 533 or 667 */
17 u16 fsb_frequency; /* 945GM: 400, 533 or 667 / 945GC: 533, 800, or 1066 */
18 u32 tclk;
20 u8 trp;
21 u8 trcd;
22 u8 tras;
23 u8 trfc;
24 u8 twr;
26 u8 cas; /* 3, 4 or 5 */
27 u8 refresh; /* 0 = 15.6us, 1 = 7.8us */
29 bool dual_channel;
30 bool interleaved;
32 u8 mvco4x; /* 0 (8x) or 1 (4x) */
33 bool clkcfg_bit7;
34 u8 boot_path;
35 #define BOOT_PATH_NORMAL 0
36 #define BOOT_PATH_RESET 1
37 #define BOOT_PATH_RESUME 2
39 u8 package; /* 0 = planar, 1 = stacked */
40 #define SYSINFO_PACKAGE_PLANAR 0x00
41 #define SYSINFO_PACKAGE_STACKED 0x01
42 u8 dimm[2 * DIMM_SOCKETS];
43 u8 rows[2 * DIMM_SOCKETS];
44 u8 cols[2 * DIMM_SOCKETS];
45 #define SYSINFO_DIMM_X16DS 0x00
46 #define SYSINFO_DIMM_X8DS 0x01
47 #define SYSINFO_DIMM_X16SS 0x02
48 #define SYSINFO_DIMM_X8DDS 0x03
49 #define SYSINFO_DIMM_NOT_POPULATED 0x04
51 u8 banks[2 * DIMM_SOCKETS];
52 size_t banksize[2 * 2 * DIMM_SOCKETS];
53 const u8 *spd_addresses;
55 } __packed;
57 void receive_enable_adjust(struct sys_info *sysinfo);
58 void sdram_initialize(int boot_path, const u8 *sdram_addresses);
59 int fixup_i945gm_errata(void);
60 #endif /* RAMINIT_H */