blob: 666adc249c0687152c2810e2f77d2bd7486be378 [file] [log] [blame]
/* SPDX-License-Identifier: GPL-2.0-only */
#include <soc/cnl_memcfg_init.h>
#include <soc/romstage.h>
#include <spd_bin.h>
#include <spd_cache.h>
void mainboard_memory_init_params(FSPM_UPD *memupd)
{
struct cnl_mb_cfg memcfg = {
/* Access memory info through SMBUS. */
.spd[0] = {
.read_type = READ_SMBUS,
.spd_spec = {.spd_smbus_address = 0xa0}
},
.spd[1] = {
.read_type = READ_SMBUS,
.spd_spec = {.spd_smbus_address = 0xa2}
},
.spd[2] = {
.read_type = READ_SMBUS,
.spd_spec = {.spd_smbus_address = 0xa4}
},
.spd[3] = {
.read_type = READ_SMBUS,
.spd_spec = {.spd_smbus_address = 0xa6}
},
/* Rcomp resistors on CFL-S are located on the CPU itself */
.rcomp_resistor = {121, 75, 100},
/* Rcomp target values for CFL-S, DDR4 and 2 DIMMs per channel */
.rcomp_targets = {60, 26, 20, 20, 26},
/* Baseboard is an interleaved design */
.dq_pins_interleaved = 1,
/* Baseboard is using config 2 for vref_ca */
.vref_ca_config = 2,
/* Disable Early Command Training */
.ect = 0,
};
memupd->FspmConfig.UserBd = BOARD_TYPE_SERVER;
/*
* Disabling SendDidMsg is necessary because the IFD for this board
* sets the HAP bit. Otherwise, attempting to shut down causes a global
* reset, and occasionally FSP-S freezes during boot.
*/
memupd->FspmTestConfig.SendDidMsg = 0;
cannonlake_memcfg_init(&memupd->FspmConfig, &memcfg);
}