soc/amd/picasso/soc_util: use cpuid_match

Now that there is a cpuid_match function, we can use it instead of doing
basically the same thing manually. In the functions is_fam17_1x and
is_fam17_2x both the stepping number and the lower nibble of the model
number are masked out. To avoid having magic constants in the code,
introduce the CPUID_ALL_STEPPINGS_AND_BASE_MODELS_MASK definition.

Signed-off-by: Felix Held <felix-coreboot@felixheld.de>
Change-Id: I758f9564c08c62c747cc4f93a8d6b540a1834a62
Reviewed-on: https://review.coreboot.org/c/coreboot/+/72860
Reviewed-by: Fred Reitberger <reitbergerfred@gmail.com>
Reviewed-by: Martin Roth <martin.roth@amd.corp-partner.google.com>
Reviewed-by: Eric Lai <eric_lai@quanta.corp-partner.google.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
Felix Held 2023-02-06 19:47:11 +01:00
parent e1a84db3e0
commit b6969db5c2
2 changed files with 10 additions and 12 deletions

View File

@ -121,8 +121,9 @@ struct device;
((model) & 0xf) << 4 | \
((stepping) & 0xf) << 0)
#define CPUID_EXACT_MATCH_MASK 0xffffffff
#define CPUID_ALL_STEPPINGS_MASK 0xfffffff0
#define CPUID_EXACT_MATCH_MASK 0xffffffff
#define CPUID_ALL_STEPPINGS_MASK 0xfffffff0
#define CPUID_ALL_STEPPINGS_AND_BASE_MODELS_MASK 0xffffff00
static inline bool cpuid_match(uint32_t a, uint32_t b, uint32_t mask)
{

View File

@ -93,32 +93,29 @@ static bool is_mystery_silicon(void)
static bool is_fam17_1x(void)
{
/* mask lower model number nibble and stepping */
return cpuid_eax(1) >> 8 == PICASSO_B0_CPUID >> 8;
return cpuid_match(cpuid_eax(1), PICASSO_B0_CPUID,
CPUID_ALL_STEPPINGS_AND_BASE_MODELS_MASK);
}
static bool is_fam17_11(void)
{
/* only mask stepping */
return cpuid_eax(1) >> 4 == RAVEN1_B0_CPUID >> 4;
return cpuid_match(cpuid_eax(1), RAVEN1_B0_CPUID, CPUID_ALL_STEPPINGS_MASK);
}
static bool is_fam17_18(void)
{
/* only mask stepping */
return cpuid_eax(1) >> 4 == PICASSO_B0_CPUID >> 4;
return cpuid_match(cpuid_eax(1), PICASSO_B0_CPUID, CPUID_ALL_STEPPINGS_MASK);
}
static bool is_fam17_2x(void)
{
/* mask lower model number nibble and stepping */
return cpuid_eax(1) >> 8 == RAVEN2_A0_CPUID >> 8;
return cpuid_match(cpuid_eax(1), RAVEN2_A0_CPUID,
CPUID_ALL_STEPPINGS_AND_BASE_MODELS_MASK);
}
static bool is_fam17_20(void)
{
/* only mask stepping */
return cpuid_eax(1) >> 4 == RAVEN2_A0_CPUID >> 4;
return cpuid_match(cpuid_eax(1), RAVEN2_A0_CPUID, CPUID_ALL_STEPPINGS_MASK);
}
enum silicon_type get_silicon_type(void)