coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
romstage_fsp_params.c
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 #include <assert.h>
3 #include <console/console.h>
4 #include <fsp/api.h>
5 #include <soc/romstage.h>
6 #include <spd_bin.h>
7 #include <soc/meminit.h>
8 #include <baseboard/variants.h>
9 #include "board_id.h"
10 #include "spd/spd.h"
11 
13 {
14  uint8_t board_id = (get_board_id() & 0xFF);
15  int spd_index;
16 
17  printk(BIOS_INFO, "board id is 0x%x\n", board_id);
18 
19  switch (board_id) {
20  case TGL_UP3_LP4_MICRON:
21  case TGL_UP4_LP4_MICRON:
23  break;
27  break;
28  case TGL_UP3_LP4_HYNIX:
29  case TGL_UP4_LP4_HYNIX:
31  break;
32  default:
34  printk(BIOS_WARNING, "Invalid board_id 0x%x\n", board_id);
35  }
36 
37  printk(BIOS_INFO, "SPD index is 0x%x\n", spd_index);
38  return spd_index;
39 }
40 
41 void mainboard_memory_init_params(FSPM_UPD *mupd)
42 {
43  const struct mb_cfg *mem_config = variant_memory_params();
44  const struct mem_spd spd_info = {
45  .topo = MEM_TOPO_MEMORY_DOWN,
46  .cbfs_index = mainboard_get_spd_index(),
47  };
48  bool half_populated = false;
49 
50  memcfg_init(mupd, mem_config, &spd_info, half_populated);
51 
52 }
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_TOPO_MEMORY_DOWN
Definition: meminit.h:25
#define printk(level,...)
Definition: stdlib.h:16
uint32_t board_id(void)
board_id() - Get the board version
Definition: ec_boardid.c:6
void mainboard_memory_init_params(FSPM_UPD *memupd)
static uintptr_t mainboard_get_spd_index(void)
#define BIOS_INFO
BIOS_INFO - Expected events.
Definition: loglevel.h:113
#define BIOS_WARNING
BIOS_WARNING - Bad configuration.
Definition: loglevel.h:86
const struct mb_cfg *__weak variant_memory_params(void)
Definition: memory.c:67
static const int spd_index[32]
Definition: memory.c:10
static uint8_t get_board_id(void)
Definition: boardid.c:14
#define SPD_ID_HYNIX
Definition: spd.h:9
#define SPD_ID_MICRON
Definition: spd.h:7
#define SPD_ID_SAMSUNG
Definition: spd.h:8
static const struct mb_cfg mem_config
Definition: memory.c:11
unsigned long uintptr_t
Definition: stdint.h:21
unsigned char uint8_t
Definition: stdint.h:8
Definition: meminit.h:71
Definition: spd.h:11
#define TGL_UP3_LP4_HYNIX
Definition: board_id.h:11
#define TGL_UP4_LP4_HYNIX
Definition: board_id.h:16
#define TGL_UP3_LP4_MICRON
Definition: board_id.h:12
#define TGL_UP3_LP4_SAMSUNG
Definition: board_id.h:10
#define TGL_UP4_LP4_SAMSUNG
Definition: board_id.h:15
#define TGL_UP4_LP4_MICRON
Definition: board_id.h:17