diff options
author | Lexi Winter <lexi@le-Fay.ORG> | 2024-03-23 16:18:24 +0000 |
---|---|---|
committer | Mark Johnston <markj@FreeBSD.org> | 2024-04-22 13:47:38 +0000 |
commit | fc045609789feec9d6dce75c3558fd080d53a004 (patch) | |
tree | d0350399f640b7ea6e6ea26383eef9126ed2be90 | |
parent | 753de7251761e9ce7dfe7a6196b6d2ef7806d996 (diff) | |
download | src-fc045609789feec9d6dce75c3558fd080d53a004.tar.gz src-fc045609789feec9d6dce75c3558fd080d53a004.zip |
arm64: add CPU part identifiers for Apple M1 and M2
Part numbers are sourced from Linux (arch/arm64/include/asm/cputype.h).
MFC after: 2 weeks
Pull Request: https://github.com/freebsd/freebsd-src/pull/1144
(cherry picked from commit da2b732288c72b347b128e1fa9a169c7bba3beb8)
-rw-r--r-- | sys/arm64/arm64/identcpu.c | 19 | ||||
-rw-r--r-- | sys/arm64/include/cpu.h | 14 |
2 files changed, 32 insertions, 1 deletions
diff --git a/sys/arm64/arm64/identcpu.c b/sys/arm64/arm64/identcpu.c index d02be636ad50..8ecb4926c198 100644 --- a/sys/arm64/arm64/identcpu.c +++ b/sys/arm64/arm64/identcpu.c @@ -251,6 +251,23 @@ static const struct cpu_parts cpu_parts_qcom[] = { CPU_PART_NONE, }; +/* Apple */ +static const struct cpu_parts cpu_parts_apple[] = { + { CPU_PART_M1_ICESTORM, "M1 Icestorm" }, + { CPU_PART_M1_FIRESTORM, "M1 Firestorm" }, + { CPU_PART_M1_ICESTORM_PRO, "M1 Pro Icestorm" }, + { CPU_PART_M1_FIRESTORM_PRO, "M1 Pro Firestorm" }, + { CPU_PART_M1_ICESTORM_MAX, "M1 Max Icestorm" }, + { CPU_PART_M1_FIRESTORM_MAX, "M1 Max Firestorm" }, + { CPU_PART_M2_BLIZZARD, "M2 Blizzard" }, + { CPU_PART_M2_AVALANCHE, "M2 Avalanche" }, + { CPU_PART_M2_BLIZZARD_PRO, "M2 Pro Blizzard" }, + { CPU_PART_M2_AVALANCHE_PRO, "M2 Pro Avalanche" }, + { CPU_PART_M2_BLIZZARD_MAX, "M2 Max Blizzard" }, + { CPU_PART_M2_AVALANCHE_MAX, "M2 Max Avalanche" }, + CPU_PART_NONE, +}; + /* Unknown */ static const struct cpu_parts cpu_parts_none[] = { CPU_PART_NONE, @@ -261,7 +278,7 @@ static const struct cpu_parts cpu_parts_none[] = { */ const struct cpu_implementers cpu_implementers[] = { { CPU_IMPL_AMPERE, "Ampere", cpu_parts_none }, - { CPU_IMPL_APPLE, "Apple", cpu_parts_none }, + { CPU_IMPL_APPLE, "Apple", cpu_parts_apple }, { CPU_IMPL_APM, "APM", cpu_parts_apm }, { CPU_IMPL_ARM, "ARM", cpu_parts_arm }, { CPU_IMPL_BROADCOM, "Broadcom", cpu_parts_none }, diff --git a/sys/arm64/include/cpu.h b/sys/arm64/include/cpu.h index 9ef5b7897a7c..c84d48438964 100644 --- a/sys/arm64/include/cpu.h +++ b/sys/arm64/include/cpu.h @@ -134,6 +134,20 @@ #define CPU_PART_KRYO400_GOLD 0x804 #define CPU_PART_KRYO400_SILVER 0x805 +/* Apple part numbers */ +#define CPU_PART_M1_ICESTORM 0x022 +#define CPU_PART_M1_FIRESTORM 0x023 +#define CPU_PART_M1_ICESTORM_PRO 0x024 +#define CPU_PART_M1_FIRESTORM_PRO 0x025 +#define CPU_PART_M1_ICESTORM_MAX 0x028 +#define CPU_PART_M1_FIRESTORM_MAX 0x029 +#define CPU_PART_M2_BLIZZARD 0x032 +#define CPU_PART_M2_AVALANCHE 0x033 +#define CPU_PART_M2_BLIZZARD_PRO 0x034 +#define CPU_PART_M2_AVALANCHE_PRO 0x035 +#define CPU_PART_M2_BLIZZARD_MAX 0x038 +#define CPU_PART_M2_AVALANCHE_MAX 0x039 + #define CPU_IMPL(midr) (((midr) >> 24) & 0xff) #define CPU_PART(midr) (((midr) >> 4) & 0xfff) #define CPU_VAR(midr) (((midr) >> 20) & 0xf) |