[U-Boot] [PATCH 15/69] x86: cpu: Add functions to return the family and stepping
Bin Meng
bmeng.cn at gmail.com
Fri Mar 11 05:52:21 CET 2016
Hi Simon,
On Mon, Mar 7, 2016 at 10:27 AM, Simon Glass <sjg at chromium.org> wrote:
> These two identifiers can be useful for drivers which need to adjust their
> behaviour depending on the CPU family or stepping (revision).
>
> Signed-off-by: Simon Glass <sjg at chromium.org>
> ---
>
> arch/x86/cpu/cpu.c | 10 ++++++++++
> arch/x86/include/asm/cpu.h | 14 ++++++++++++++
> 2 files changed, 24 insertions(+)
>
> diff --git a/arch/x86/cpu/cpu.c b/arch/x86/cpu/cpu.c
> index 8800e09..e2aad19 100644
> --- a/arch/x86/cpu/cpu.c
> +++ b/arch/x86/cpu/cpu.c
> @@ -333,6 +333,16 @@ static inline void get_fms(struct cpuinfo_x86 *c, uint32_t tfms)
> c->x86_model += ((tfms >> 16) & 0xF) << 4;
> }
>
> +u32 cpu_get_family_model(void)
> +{
> + return gd->arch.x86_device & 0x0fff0ff0;
The decrypted family and model are stored in gd->arch.x86 and
gd->arch.x86_model. Returning raw data would still need the caller to
parse it. Why not just return these directly?
> +}
> +
> +u32 cpu_get_stepping(void)
> +{
> + return gd->arch.x86_device & 0xf;
This is gd->arch.x86_mask.
> +}
> +
> int x86_cpu_init_f(void)
> {
> const u32 em_rst = ~X86_CR0_EM;
> diff --git a/arch/x86/include/asm/cpu.h b/arch/x86/include/asm/cpu.h
> index 18b0345..987dc65 100644
> --- a/arch/x86/include/asm/cpu.h
> +++ b/arch/x86/include/asm/cpu.h
> @@ -260,4 +260,18 @@ void cpu_call32(ulong code_seg32, ulong target, ulong table);
> */
> int cpu_jump_to_64bit(ulong setup_base, ulong target);
>
> +/**
> + * cpu_get_family_model() - Get the family and model for the CPU
> + *
> + * @return the CPU ID masked with 0x0fff0ff0
> + */
> +u32 cpu_get_family_model(void);
> +
> +/**
> + * cpu_get_stepping() - Get the stepping value for the CPU
> + *
> + * @return the CPU ID masked with 0xf
> + */
> +u32 cpu_get_stepping(void);
> +
> #endif
> --
Regards,
Bin
More information about the U-Boot
mailing list