smbios: provide type 4 RISC-V SMBIOS Processor ID

For RISC-V CPUs the SMBIOS Processor ID field contains
the Machine Vendor ID from CSR mvendorid.

Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
This commit is contained in:
Heinrich Schuchardt 2024-01-29 12:46:05 +01:00
parent 6ebf9136ec
commit 545e0e42b9

View file

@ -11,6 +11,7 @@
#include <errno.h>
#include <log.h>
#include <asm/global_data.h>
#include <asm/sbi.h>
#include <dm/device-internal.h>
#include <dm/lists.h>
#include <linux/bitops.h>
@ -94,13 +95,24 @@ static int riscv_cpu_bind(struct udevice *dev)
struct cpu_plat *plat = dev_get_parent_plat(dev);
struct driver *drv;
int ret;
long mvendorid;
/* save the hart id */
plat->cpu_id = dev_read_addr(dev);
/* provide data for SMBIOS */
if (IS_ENABLED(CONFIG_64BIT))
plat->family = 0x201;
else
plat->family = 0x200;
if (CONFIG_IS_ENABLED(RISCV_SMODE)) {
/*
* For RISC-V CPUs the SMBIOS Processor ID field contains
* the Machine Vendor ID from CSR mvendorid.
*/
ret = sbi_get_mvendorid(&mvendorid);
if (!ret)
plat->id[0] = mvendorid;
}
/* first examine the property in current cpu node */
ret = dev_read_u32(dev, "timebase-frequency", &plat->timebase_freq);
/* if not found, then look at the parent /cpus node */