12 #include <soc/iomap.h>
14 #include <soc/pei_wrapper.h>
16 #include <soc/romstage.h>
17 #include <soc/systemagent.h>
52 (addr_decoder_common >> 0) & 3,
53 (addr_decoder_common >> 2) & 3,
54 (addr_decoder_common >> 4) & 3);
62 ((ch_conf >> 22) & 1) ?
"on" :
"off");
65 ((ch_conf >> 21) & 1) ?
"on" :
"off");
68 ((ch_conf >> 0) & 0xff) * 256,
69 ((ch_conf >> 19) & 1) ?
"x16" :
"x8 or x32",
70 ((ch_conf >> 17) & 1) ?
"dual" :
"single",
71 ((ch_conf >> 16) & 1) ?
"" :
", selected");
74 ((ch_conf >> 8) & 0xff) * 256,
75 ((ch_conf >> 20) & 1) ?
"x16" :
"x8 or x32",
76 ((ch_conf >> 18) & 1) ?
"dual" :
"single",
77 ((ch_conf >> 16) & 1) ?
", selected" :
"");
104 "No MRC cache found in S3 resume path.\n");
124 die(
"mrc.bin not found!");
130 die(
"pei_data version mismatch\n");
153 memset(mem_info, 0,
sizeof(*mem_info));
201 if (s3resume && !cbmem_was_initted) {
void * memcpy(void *dest, const void *src, size_t n)
void * memset(void *dstpp, int c, size_t len)
#define assert(statement)
int ABI_X86(* pei_wrapper_entry_t)(struct pei_data *pei_data)
void broadwell_fill_pei_data(struct pei_data *pei_data)
static void * cbfs_ro_map(const char *name, size_t *size_out)
int cbmem_recovery(int s3resume)
void * cbmem_add(u32 id, u64 size)
#define printk(level,...)
void __noreturn die(const char *fmt,...)
static __always_inline uint32_t mchbar_read32(const uintptr_t offset)
void timestamp_add_now(enum timestamp_id id)
#define BIOS_DEBUG
BIOS_DEBUG - Verbose output.
#define BIOS_CRIT
BIOS_CRIT - Recovery unlikely.
#define BIOS_ERR
BIOS_ERR - System in incomplete state.
void mainboard_fill_pei_data(struct pei_data *pei)
void mainboard_fill_spd_data(struct pei_data *pei_data)
#define DIMM_INFO_PART_NUMBER_SIZE
int mrc_cache_stash_data(int type, uint32_t version, const void *data, size_t size)
Returns < 0 on error, 0 on success.
void * mrc_cache_current_mmap_leak(int type, uint32_t version, size_t *data_size)
mrc_cache_mmap_leak
void sdram_initialize(void)
void perform_raminit(const int s3resume)
#define POST_RESUME_FAILURE
Resume from suspend failed.
static struct chipset_power_state power_state
#define PEI_DIMM_INFO_TOTAL
static void save_mrc_data(struct pei_data *pei_data)
static void report_memory_config(void)
static const char *const ecc_decoder[]
static void setup_sdram_meminfo(struct pei_data *pei_data)
uint32_t prev_sleep_state
If this table is filled and put in CBMEM, then these info in CBMEM will be used to generate smbios ty...
uint8_t module_part_number[DIMM_INFO_PART_NUMBER_SIZE]
uint8_t serial[DIMM_INFO_SERIAL_SIZE]
struct dimm_info dimm[DIMM_INFO_TOTAL]
struct pei_memory_info meminfo
This table is filled by the MRC blob and used to populate the mem_info struct, which is placed in CBM...
uint8_t module_part_number[PEI_DIMM_INFO_PART_NUMBER_SIZE]
uint8_t serial[PEI_DIMM_INFO_SERIAL_SIZE]
struct pei_dimm_info dimm[PEI_DIMM_INFO_TOTAL]