blob: 8d83609fbfc7d076c809df2228aaf2d6e91d9b1d [file] [log] [blame]
Angel Pons08b52802020-04-05 13:22:20 +02001/* SPDX-License-Identifier: GPL-2.0-only */
Elyes HAOUASa1e22b82019-03-18 22:49:36 +01002
Hannah Williams5e83e8b2018-02-09 18:35:17 -08003#include <baseboard/variants.h>
4#include <boardid.h>
Aaron Durbin042b53a2018-08-07 12:30:53 -06005#include <console/console.h>
6#include <ec/google/chromeec/ec.h>
Furquan Shaikh34870952018-10-23 07:29:42 -07007#include <memory_info.h>
Hannah Williams5e83e8b2018-02-09 18:35:17 -08008#include <soc/meminit.h>
9#include <soc/romstage.h>
10
11void mainboard_memory_init_params(FSPM_UPD *memupd)
12{
Ravi Sarawadi3c2310d2018-02-20 16:19:25 -080013 meminit_lpddr4_by_sku(&memupd->FspmConfig,
14 variant_lpddr4_config(), variant_memory_sku());
Hannah Williams5e83e8b2018-02-09 18:35:17 -080015}
16
Aaron Durbin042b53a2018-08-07 12:30:53 -060017static void save_dimm_info_by_sku_config(void)
Hannah Williams5e83e8b2018-02-09 18:35:17 -080018{
Ravi Sarawadi036aff92018-04-26 14:32:33 -070019 save_lpddr4_dimm_info(variant_lpddr4_config(), variant_memory_sku());
Hannah Williams5e83e8b2018-02-09 18:35:17 -080020}
Aaron Durbin042b53a2018-08-07 12:30:53 -060021
22void mainboard_save_dimm_info(void)
23{
Furquan Shaikh34870952018-10-23 07:29:42 -070024 char part_num_store[DIMM_INFO_PART_NUMBER_SIZE];
Aaron Durbin042b53a2018-08-07 12:30:53 -060025 const char *part_num = NULL;
26
Aaron Durbin702d2362019-06-10 10:37:40 -060027 if (CONFIG(DRAM_PART_NUM_NOT_ALWAYS_IN_CBI)) {
Aaron Durbin042b53a2018-08-07 12:30:53 -060028 /* Fall back on part numbers encoded in lp4cfg array. */
Julius Werner7c712bb2019-05-01 16:51:20 -070029 if ((int)board_id() < CONFIG_DRAM_PART_IN_CBI_BOARD_ID_MIN) {
Aaron Durbin042b53a2018-08-07 12:30:53 -060030 save_dimm_info_by_sku_config();
31 return;
32 }
33 }
34
35 if (google_chromeec_cbi_get_dram_part_num(&part_num_store[0],
36 ARRAY_SIZE(part_num_store)) < 0)
37 printk(BIOS_ERR, "ERROR: Couldn't obtain DRAM part number from CBI\n");
38 else
39 part_num = &part_num_store[0];
40
41 save_lpddr4_dimm_info_part_num(part_num);
42}