[v1.05][ARM] Add support for Ampere Altra (#262)

This commit is contained in:
Dr-Noob
2024-08-15 19:30:35 +01:00
parent f63178b41c
commit 38f02dc22a
7 changed files with 28 additions and 1 deletions

View File

@@ -911,6 +911,7 @@ struct system_on_chip* guess_soc_from_pci(struct system_on_chip* soc, struct cpu
pciToSoC socFromPCI[] = { pciToSoC socFromPCI[] = {
{PCI_VENDOR_NVIDIA, PCI_DEVICE_TEGRA_X1, {SOC_TEGRA_X1, SOC_VENDOR_NVIDIA, 20, "Tegra X1", NULL} }, {PCI_VENDOR_NVIDIA, PCI_DEVICE_TEGRA_X1, {SOC_TEGRA_X1, SOC_VENDOR_NVIDIA, 20, "Tegra X1", NULL} },
// {PCI_VENDOR_NVIDIA, PCI_DEVICE_GH_200,{SOC_GH_200, SOC_VENDOR_NVIDIA, ?, "Grace Hopper", NULL} }, // {PCI_VENDOR_NVIDIA, PCI_DEVICE_GH_200,{SOC_GH_200, SOC_VENDOR_NVIDIA, ?, "Grace Hopper", NULL} },
{PCI_VENDOR_AMPERE, PCI_DEVICE_ALTRA, {SOC_AMPERE_ALTRA, SOC_VENDOR_AMPERE, 7, "Altra", NULL}}, // https://www.anandtech.com/show/15575/amperes-altra-80-core-n1-soc-for-hyperscalers-against-rome-and-xeon
{0x0000, 0x0000, {UNKNOWN, SOC_VENDOR_UNKNOWN, -1, "", NULL} } {0x0000, 0x0000, {UNKNOWN, SOC_VENDOR_UNKNOWN, -1, "", NULL} }
}; };

View File

@@ -380,6 +380,8 @@ enum {
SOC_GOOGLE_TENSOR_G3, SOC_GOOGLE_TENSOR_G3,
// NVIDIA, // NVIDIA,
SOC_TEGRA_X1, SOC_TEGRA_X1,
// ALTRA
SOC_AMPERE_ALTRA,
// UNKNOWN // UNKNOWN
SOC_MODEL_UNKNOWN SOC_MODEL_UNKNOWN
}; };
@@ -396,6 +398,7 @@ inline static VENDOR get_soc_vendor_from_soc(SOC soc) {
else if(soc >= SOC_ROCKCHIP_3288 && soc <= SOC_ROCKCHIP_3588) return SOC_VENDOR_ROCKCHIP; else if(soc >= SOC_ROCKCHIP_3288 && soc <= SOC_ROCKCHIP_3588) return SOC_VENDOR_ROCKCHIP;
else if(soc >= SOC_GOOGLE_TENSOR && soc <= SOC_GOOGLE_TENSOR_G3) return SOC_VENDOR_GOOGLE; else if(soc >= SOC_GOOGLE_TENSOR && soc <= SOC_GOOGLE_TENSOR_G3) return SOC_VENDOR_GOOGLE;
else if(soc >= SOC_TEGRA_X1 && soc <= SOC_TEGRA_X1) return SOC_VENDOR_NVIDIA; else if(soc >= SOC_TEGRA_X1 && soc <= SOC_TEGRA_X1) return SOC_VENDOR_NVIDIA;
else if(soc >= SOC_AMPERE_ALTRA && soc <= SOC_AMPERE_ALTRA) return SOC_VENDOR_AMPERE;
return SOC_VENDOR_UNKNOWN; return SOC_VENDOR_UNKNOWN;
} }

View File

@@ -394,6 +394,21 @@ $C2## ## ## ## ## ## ## ## #: :# \
$C2## ## ## ## ## ## ## ## ####### \ $C2## ## ## ## ## ## ## ## ####### \
$C2## ## ### ## ###### ## ## ## " $C2## ## ### ## ###### ## ## ## "
#define ASCII_AMPERE \
"$C1 /// \
$C1 .///// \
$C1 /// /// \
$C1 /// /// \
$C1 ,//* /// \
$C1 /// /// \
$C1 /// /// \
$C1 ///////* /////* /// \
$C1 /////// /// ////// /// \
$C1 .//// /// //////// \
$C1 //// ,//* ///// \
$C1 /// /// //// \
$C1/// /// */// "
// --------------------- LONG LOGOS ------------------------- // // --------------------- LONG LOGOS ------------------------- //
#define ASCII_AMD_L \ #define ASCII_AMD_L \
"$C1 \ "$C1 \
@@ -569,6 +584,7 @@ asciiL logo_sifive = { ASCII_SIFIVE, 48, 19, true, {C_BG_WHITE, C_BG_
asciiL logo_starfive = { ASCII_STARFIVE, 33, 17, false, {C_FG_WHITE}, {C_FG_WHITE, C_FG_BLUE} }; asciiL logo_starfive = { ASCII_STARFIVE, 33, 17, false, {C_FG_WHITE}, {C_FG_WHITE, C_FG_BLUE} };
asciiL logo_sipeed = { ASCII_SIPEED, 41, 16, true, {C_BG_RED, C_BG_WHITE}, {C_FG_RED, C_FG_WHITE} }; asciiL logo_sipeed = { ASCII_SIPEED, 41, 16, true, {C_BG_RED, C_BG_WHITE}, {C_FG_RED, C_FG_WHITE} };
asciiL logo_nvidia = { ASCII_NVIDIA, 45, 19, false, {C_FG_GREEN, C_FG_WHITE}, {C_FG_WHITE, C_FG_GREEN} }; asciiL logo_nvidia = { ASCII_NVIDIA, 45, 19, false, {C_FG_GREEN, C_FG_WHITE}, {C_FG_WHITE, C_FG_GREEN} };
asciiL logo_ampere = { ASCII_AMPERE, 51, 13, false, {C_FG_RED}, {C_FG_WHITE, C_FG_RED} };
// Long variants | ----------------------------------------------------------------------------------------------------------------| // Long variants | ----------------------------------------------------------------------------------------------------------------|
asciiL logo_amd_l = { ASCII_AMD_L, 62, 19, true, {C_BG_WHITE, C_BG_GREEN}, {C_FG_WHITE, C_FG_GREEN} }; asciiL logo_amd_l = { ASCII_AMD_L, 62, 19, true, {C_BG_WHITE, C_BG_GREEN}, {C_FG_WHITE, C_FG_GREEN} };

View File

@@ -2,7 +2,10 @@
#define __PCI__ #define __PCI__
#define PCI_VENDOR_NVIDIA 0x10de #define PCI_VENDOR_NVIDIA 0x10de
#define PCI_VENDOR_AMPERE 0x1def
#define PCI_DEVICE_TEGRA_X1 0x0faf #define PCI_DEVICE_TEGRA_X1 0x0faf
#define PCI_DEVICE_ALTRA 0xe100
struct pci_device { struct pci_device {
char * path; char * path;

View File

@@ -389,6 +389,8 @@ void choose_ascii_art(struct ascii* art, struct color** cs, struct terminal* ter
art->art = &logo_allwinner; art->art = &logo_allwinner;
else if(art->vendor == SOC_VENDOR_ROCKCHIP) else if(art->vendor == SOC_VENDOR_ROCKCHIP)
art->art = &logo_rockchip; art->art = &logo_rockchip;
else if(art->vendor == SOC_VENDOR_AMPERE)
art->art = &logo_ampere;
else if(art->vendor == SOC_VENDOR_NVIDIA) else if(art->vendor == SOC_VENDOR_NVIDIA)
art->art = choose_ascii_art_aux(&logo_nvidia_l, &logo_nvidia, term, lf); art->art = choose_ascii_art_aux(&logo_nvidia_l, &logo_nvidia, term, lf);
else { else {

View File

@@ -21,6 +21,7 @@ static char* soc_trademark_string[] = {
[SOC_VENDOR_ROCKCHIP] = "Rockchip ", [SOC_VENDOR_ROCKCHIP] = "Rockchip ",
[SOC_VENDOR_GOOGLE] = "Google ", [SOC_VENDOR_GOOGLE] = "Google ",
[SOC_VENDOR_NVIDIA] = "NVIDIA ", [SOC_VENDOR_NVIDIA] = "NVIDIA ",
[SOC_VENDOR_AMPERE] = "Ampere ",
// RISC-V // RISC-V
[SOC_VENDOR_SIFIVE] = "SiFive ", [SOC_VENDOR_SIFIVE] = "SiFive ",
[SOC_VENDOR_STARFIVE] = "StarFive ", [SOC_VENDOR_STARFIVE] = "StarFive ",

View File

@@ -25,6 +25,7 @@ enum {
SOC_VENDOR_ROCKCHIP, SOC_VENDOR_ROCKCHIP,
SOC_VENDOR_GOOGLE, SOC_VENDOR_GOOGLE,
SOC_VENDOR_NVIDIA, SOC_VENDOR_NVIDIA,
SOC_VENDOR_AMPERE,
// RISC-V // RISC-V
SOC_VENDOR_SIFIVE, SOC_VENDOR_SIFIVE,
SOC_VENDOR_STARFIVE, SOC_VENDOR_STARFIVE,