blob: 6d5d3ff4fd52060d5b6417410b9ed4c59ce6ce62 [file] [log] [blame]
Angel Ponsb04c2f82020-04-03 01:23:20 +02001/* SPDX-License-Identifier: GPL-2.0-only */
Julien Viard de Galbert4f136402018-02-16 14:40:53 +01002
Julien Viard de Galbert4f226412018-02-26 14:42:39 +01003#include <string.h>
Julien Viard de Galbert4f136402018-02-16 14:40:53 +01004#include <fsp/api.h>
5#include <soc/ramstage.h>
Julien Viard de Galbert4f226412018-02-26 14:42:39 +01006#include <smbios.h>
Julien Viard de Galbert9d217bf2018-05-02 10:55:25 +02007#include <spd.h>
Julien Viard de Galbert4f136402018-02-16 14:40:53 +01008
Julien Viard de Galbert0e755d42018-03-07 15:48:54 +01009#include "bmcinfo.h"
10
Julien Viard de Galbert4f136402018-02-16 14:40:53 +010011void mainboard_silicon_init_params(FSPS_UPD *params)
12{
Julien Viard de Galbertb424caa2018-02-13 22:19:30 +010013 /* Disable eMMC */
14 params->FspsConfig.PcdEnableEmmc = 0;
Julien Viard de Galbert0e755d42018-03-07 15:48:54 +010015
16 if (bmcinfo_disable_nic1())
17 params->FspsConfig.PcdEnableGbE = 2; // disable lan 1 only
Julien Viard de Galbert4f136402018-02-16 14:40:53 +010018}
Julien Viard de Galbert4f226412018-02-26 14:42:39 +010019
20/* Override smbios_mainboard_serial_number to retrieve it from BMC */
21const char *smbios_mainboard_serial_number(void)
22{
23 const char *bmc_serial = bmcinfo_serial();
24 if (bmc_serial)
25 return bmc_serial;
26 return CONFIG_MAINBOARD_SERIAL_NUMBER;
27}
28
Nico Huberebd8a4f2017-11-01 09:49:16 +010029/* Override smbios_system_set_uuid */
30void smbios_system_set_uuid(u8 *uuid)
Julien Viard de Galbert4f226412018-02-26 14:42:39 +010031{
32 const u8 *bmc_uuid = bmcinfo_uuid();
33 if (bmc_uuid)
34 memcpy(uuid, bmc_uuid, 16);
35 /* leave all zero */
36}
37
38/* Override smbios_mainboard_version */
39const char *smbios_mainboard_version(void)
40{
41 const int hwRev = bmcinfo_hwrev();
42 switch (hwRev) {
43 case 0:
44 return "Z0";
45 case 1:
46 return "A0";
47 case 2:
48 return "A1";
49 }
50 return "";
51}
52
53/* Override smbios_mainboard_features_flags */
54u8 smbios_mainboard_feature_flags(void)
55{
56 return 0xc;
57}
58
59/* Override smbios_mainboard_location_in_chassis */
60const char *smbios_mainboard_location_in_chassis(void)
61{
62 static char location[4] = "n/a";
63 int slot = bmcinfo_slot();
64 if (slot >= 0)
65 snprintf(location, 4, "N%d", slot);
66 return location;
67}
68
69/* Override smbios_mainboard_board_type */
70smbios_board_type smbios_mainboard_board_type(void)
71{
72 return SMBIOS_BOARD_TYPE_SERVER_BLADE;
73}
Julien Viard de Galbert9d217bf2018-05-02 10:55:25 +020074
Kyösti Mälkki87709542020-06-07 12:07:01 +030075smbios_enclosure_type smbios_mainboard_enclosure_type(void)
76{
77 return SMBIOS_ENCLOSURE_MULTI_SYSTEM_CHASSIS;
78}
79
Julien Viard de Galbert9d217bf2018-05-02 10:55:25 +020080/* Add any mainboard specific information for dimm */
81void mainboard_add_dimm_info(
82 struct memory_info *mem_info,
83 int channel, int dimm, int index)
84{
85 /* Mainboard only has DDR4 DIMM slots */
86 mem_info->dimm[index].mod_type = SPD_UDIMM;
87}