From 6f192ddcbd8e13351a8f13365e7c714e7b61a79e Mon Sep 17 00:00:00 2001 From: Alexander Graf Date: Fri, 19 Aug 2016 01:23:26 +0200 Subject: cpu: Add DMTF id and family fields For SMBIOS tables we need to know the CPU family as well as CPU IDs. This patches allocates some space for them in the cpu device and populates it on x86. Signed-off-by: Alexander Graf Reviewed-by: Simon Glass Reviewed-by: Bin Meng --- arch/x86/cpu/cpu_x86.c | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'arch/x86/cpu/cpu_x86.c') diff --git a/arch/x86/cpu/cpu_x86.c b/arch/x86/cpu/cpu_x86.c index 09410416a1f..39004ee5f0f 100644 --- a/arch/x86/cpu/cpu_x86.c +++ b/arch/x86/cpu/cpu_x86.c @@ -15,9 +15,14 @@ DECLARE_GLOBAL_DATA_PTR; int cpu_x86_bind(struct udevice *dev) { struct cpu_platdata *plat = dev_get_parent_platdata(dev); + struct cpuid_result res; plat->cpu_id = fdtdec_get_int(gd->fdt_blob, dev->of_offset, "intel,apic-id", -1); + plat->family = gd->arch.x86; + res = cpuid(1); + plat->id[0] = res.eax; + plat->id[1] = res.edx; return 0; } -- cgit v1.2.3 From 94eaa79cecf98300974c99d935ff653c9418de21 Mon Sep 17 00:00:00 2001 From: Alexander Graf Date: Fri, 19 Aug 2016 01:23:27 +0200 Subject: cpu: Add get_vendor callback The CPU udevice already has a few callbacks to retreive information about the currently running CPUs. This patch adds a new get_vendor() call that returns the vendor of the main CPUs. Signed-off-by: Alexander Graf Reviewed-by: Simon Glass Reviewed-by: Bin Meng --- arch/x86/cpu/cpu_x86.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'arch/x86/cpu/cpu_x86.c') diff --git a/arch/x86/cpu/cpu_x86.c b/arch/x86/cpu/cpu_x86.c index 39004ee5f0f..157f3de6d81 100644 --- a/arch/x86/cpu/cpu_x86.c +++ b/arch/x86/cpu/cpu_x86.c @@ -27,6 +27,18 @@ int cpu_x86_bind(struct udevice *dev) return 0; } +int cpu_x86_get_vendor(struct udevice *dev, char *buf, int size) +{ + const char *vendor = cpu_vendor_name(gd->arch.x86_vendor); + + if (size < (strlen(vendor) + 1)) + return -ENOSPC; + + strcpy(buf, vendor); + + return 0; +} + int cpu_x86_get_desc(struct udevice *dev, char *buf, int size) { if (size < CPU_MAX_NAME_LEN) @@ -65,6 +77,7 @@ static int cpu_x86_get_count(struct udevice *dev) static const struct cpu_ops cpu_x86_ops = { .get_desc = cpu_x86_get_desc, .get_count = cpu_x86_get_count, + .get_vendor = cpu_x86_get_vendor, }; static const struct udevice_id cpu_x86_ids[] = { -- cgit v1.2.3