8 #include <soc/pei_wrapper.h>
12 #define SPD_DRAM_TYPE 2
13 #define SPD_DRAM_DDR3 0x0b
14 #define SPD_DRAM_LPDDR3 0xf1
15 #define SPD_DENSITY_BANKS 4
16 #define SPD_ADDRESSING 5
17 #define SPD_ORGANIZATION 7
18 #define SPD_BUS_DEV_WIDTH 8
19 #define SPD_PART_OFF 128
20 #define SPD_PART_LEN 18
26 const int spd_banks[8] = { 8, 16, 32, 64, -1, -1, -1, -1 };
27 const int spd_capmb[8] = { 1, 2, 4, 8, 16, 32, 64, 0 };
28 const int spd_rows[8] = { 12, 13, 14, 15, 16, -1, -1, -1 };
29 const int spd_cols[8] = { 9, 10, 11, 12, -1, -1, -1, -1 };
30 const int spd_ranks[8] = { 1, 2, 3, 4, -1, -1, -1, -1 };
31 const int spd_devw[8] = { 4, 8, 16, 32, -1, -1, -1, -1 };
32 const int spd_busw[8] = { 8, 16, 32, 64, -1, -1, -1, -1 };
63 "density %d Mb\n", banks, ranks, rows, cols, capmb);
67 if (capmb > 0 && busw > 0 && devw > 0 && ranks > 0) {
70 capmb / 8 * busw / devw * ranks);
82 die(
"SPD data not found.");
85 die(
"Missing SPD data.");
96 die(
"Invalid SPD data.");
void * memcpy(void *dest, const void *src, size_t n)
static void * cbfs_map(const char *name, size_t *size_out)
#define printk(level,...)
void __noreturn die(const char *fmt,...)
#define BIOS_INFO
BIOS_INFO - Expected events.
#define BIOS_DEBUG
BIOS_DEBUG - Verbose output.
#define BIOS_ERR
BIOS_ERR - System in incomplete state.
#define SPD_DENSITY_BANKS
#define SPD_BUS_DEV_WIDTH
static void fill_spd_for_index(uint8_t spd[], unsigned int spd_index)
static void mainboard_print_spd_info(uint8_t spd[])
void mainboard_fill_spd_data(struct pei_data *pei_data)
bool variant_is_dual_channel(const unsigned int spd_index)
unsigned int variant_get_spd_index(void)
static const int spd_index[32]
int dimm_channel1_disabled
uint8_t spd_data[4][SPD_LEN]