purism/librem13v2: Add memory init code
Adding code to setup the spd information from sodimm. Adapted from intel/kblrvp. Change-Id: I0403f999dac1bdef0e9e1abe7c9c62407e223bb1 Signed-off-by: Youness Alaoui <youness.alaoui@puri.sm> Reviewed-on: https://review.coreboot.org/19935 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Aaron Durbin <adurbin@chromium.org>
This commit is contained in:
parent
34a30a648f
commit
0e977fca9c
2 changed files with 43 additions and 0 deletions
|
@ -46,4 +46,13 @@ config VGA_BIOS_ID
|
|||
string
|
||||
default "8086,1916"
|
||||
|
||||
config DIMM_MAX
|
||||
int
|
||||
default 1
|
||||
|
||||
config DIMM_SPD_SIZE
|
||||
int
|
||||
default 512
|
||||
|
||||
|
||||
endif
|
||||
|
|
|
@ -16,10 +16,12 @@
|
|||
*/
|
||||
|
||||
#include <string.h>
|
||||
#include <assert.h>
|
||||
#include <arch/acpi.h>
|
||||
#include <soc/pei_data.h>
|
||||
#include <soc/pei_wrapper.h>
|
||||
#include <soc/romstage.h>
|
||||
#include <spd_bin.h>
|
||||
|
||||
void mainboard_romstage_entry(struct romstage_params *params)
|
||||
{
|
||||
|
@ -28,3 +30,35 @@ void mainboard_romstage_entry(struct romstage_params *params)
|
|||
/* Initliaze memory */
|
||||
romstage_common(params);
|
||||
}
|
||||
|
||||
void mainboard_memory_init_params(struct romstage_params *params,
|
||||
MEMORY_INIT_UPD *memory_params)
|
||||
{
|
||||
struct spd_block blk = {
|
||||
.addr_map = { 0xa0 },
|
||||
};
|
||||
|
||||
memory_params->DqPinsInterleaved = 1;
|
||||
get_spd_smbus(&blk);
|
||||
dump_spd_info(&blk);
|
||||
memory_params->MemorySpdDataLen = blk.len;
|
||||
assert(blk.spd_array[0][0] != 0);
|
||||
memory_params->MemorySpdPtr00 = (uintptr_t) blk.spd_array[0];
|
||||
memory_params->MemorySpdPtr01 = 0;
|
||||
memory_params->MemorySpdPtr10 = 0;
|
||||
memory_params->MemorySpdPtr11 = 0;
|
||||
|
||||
memcpy(memory_params->DqByteMapCh0, params->pei_data->dq_map[0],
|
||||
sizeof(params->pei_data->dq_map[0]));
|
||||
memcpy(memory_params->DqByteMapCh1, params->pei_data->dq_map[1],
|
||||
sizeof(params->pei_data->dq_map[1]));
|
||||
memcpy(memory_params->DqsMapCpu2DramCh0, params->pei_data->dqs_map[0],
|
||||
sizeof(params->pei_data->dqs_map[0]));
|
||||
memcpy(memory_params->DqsMapCpu2DramCh1, params->pei_data->dqs_map[1],
|
||||
sizeof(params->pei_data->dqs_map[1]));
|
||||
memcpy(memory_params->RcompResistor, params->pei_data->RcompResistor,
|
||||
sizeof(params->pei_data->RcompResistor));
|
||||
memcpy(memory_params->RcompTarget, params->pei_data->RcompTarget,
|
||||
sizeof(params->pei_data->RcompTarget));
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue