mb/scaleway/tagada: populate smbios information
This is done by overriding the weak functions from smbios.c Some values are hardcoded as they are characteristics of the Tagada system. Other are retrieved from the BMC through the bmcinfo interface. Change-Id: I9b08660c6677864f5c96c66002b35bd05a366053 Signed-off-by: Julien Viard de Galbert <jviarddegalbert@online.net> Reviewed-on: https://review.coreboot.org/23843 Reviewed-by: Martin Roth <martinroth@google.com> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
parent
9a31dfeb18
commit
4f226414db
|
@ -15,9 +15,11 @@
|
|||
*
|
||||
*/
|
||||
|
||||
#include <string.h>
|
||||
#include <console/console.h>
|
||||
#include <fsp/api.h>
|
||||
#include <soc/ramstage.h>
|
||||
#include <smbios.h>
|
||||
|
||||
#include "bmcinfo.h"
|
||||
|
||||
|
@ -29,3 +31,58 @@ void mainboard_silicon_init_params(FSPS_UPD *params)
|
|||
if (bmcinfo_disable_nic1())
|
||||
params->FspsConfig.PcdEnableGbE = 2; // disable lan 1 only
|
||||
}
|
||||
|
||||
/* Override smbios_mainboard_serial_number to retrieve it from BMC */
|
||||
const char *smbios_mainboard_serial_number(void)
|
||||
{
|
||||
const char *bmc_serial = bmcinfo_serial();
|
||||
if (bmc_serial)
|
||||
return bmc_serial;
|
||||
return CONFIG_MAINBOARD_SERIAL_NUMBER;
|
||||
}
|
||||
|
||||
/* Override smbios_mainboard_set_uuid */
|
||||
void smbios_mainboard_set_uuid(u8 *uuid)
|
||||
{
|
||||
const u8 *bmc_uuid = bmcinfo_uuid();
|
||||
if (bmc_uuid)
|
||||
memcpy(uuid, bmc_uuid, 16);
|
||||
/* leave all zero */
|
||||
}
|
||||
|
||||
/* Override smbios_mainboard_version */
|
||||
const char *smbios_mainboard_version(void)
|
||||
{
|
||||
const int hwRev = bmcinfo_hwrev();
|
||||
switch (hwRev) {
|
||||
case 0:
|
||||
return "Z0";
|
||||
case 1:
|
||||
return "A0";
|
||||
case 2:
|
||||
return "A1";
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
/* Override smbios_mainboard_features_flags */
|
||||
u8 smbios_mainboard_feature_flags(void)
|
||||
{
|
||||
return 0xc;
|
||||
}
|
||||
|
||||
/* Override smbios_mainboard_location_in_chassis */
|
||||
const char *smbios_mainboard_location_in_chassis(void)
|
||||
{
|
||||
static char location[4] = "n/a";
|
||||
int slot = bmcinfo_slot();
|
||||
if (slot >= 0)
|
||||
snprintf(location, 4, "N%d", slot);
|
||||
return location;
|
||||
}
|
||||
|
||||
/* Override smbios_mainboard_board_type */
|
||||
smbios_board_type smbios_mainboard_board_type(void)
|
||||
{
|
||||
return SMBIOS_BOARD_TYPE_SERVER_BLADE;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue