From 5bd507e4b69472aef3832d2f42c692b4a17ce122 Mon Sep 17 00:00:00 2001 From: Dr-Noob Date: Sat, 31 Aug 2024 09:37:50 +0100 Subject: [PATCH] [v1.06][ARM] Add support for Amlogic A311D (#268) --- src/arm/soc.c | 6 ++++++ src/arm/socs.h | 3 +++ src/common/ascii.h | 11 +++++++++++ src/common/printer.c | 2 ++ src/common/soc.c | 1 + src/common/soc.h | 1 + 6 files changed, 24 insertions(+) diff --git a/src/arm/soc.c b/src/arm/soc.c index 6466040..30e0f98 100644 --- a/src/arm/soc.c +++ b/src/arm/soc.c @@ -970,9 +970,15 @@ struct system_on_chip* guess_soc_from_devtree(struct system_on_chip* soc) { DT_EQ(dt, len, soc, "apple,t6030", "M3 Pro", SOC_APPLE_M3_PRO, 3) DT_EQ(dt, len, soc, "apple,t6031", "M3 Max", SOC_APPLE_M3_MAX, 3) DT_EQ(dt, len, soc, "apple,t6034", "M3 Max", SOC_APPLE_M3_MAX, 3) + // TODO: Add more NXP SoCs: https://elixir.bootlin.com/linux/v6.10.6/source/arch/arm64/boot/dts/freescale // https://github.com/Dr-Noob/cpufetch/issues/261 // https://www.nxp.com/docs/en/fact-sheet/IMX8MPLUSFS.pdf DT_EQ(dt, len, soc, "imx8mp-nitrogen8mp", "i.MX 8M Plus", SOC_NXP_IMX8MP, 14) + // TODO: Add more Amlogic SoCs: https://elixir.bootlin.com/linux/v6.10.6/source/arch/arm64/boot/dts/amlogic + // https://github.com/Dr-Noob/cpufetch/issues/268 + // https://www.amlogic.com/#Products/393/index.html + // https://wikimovel.com/index.php/Amlogic_A311D + DT_EQ(dt, len, soc, "amlogic,a311d", "A311D", SOC_AMLOGIC_A311D, 12) DT_END(dt, len) } diff --git a/src/arm/socs.h b/src/arm/socs.h index ed2711e..0b55c21 100644 --- a/src/arm/socs.h +++ b/src/arm/socs.h @@ -384,6 +384,8 @@ enum { SOC_AMPERE_ALTRA, // NXP SOC_NXP_IMX8MP, + // AMLOGIC + SOC_AMLOGIC_A311D, // UNKNOWN SOC_MODEL_UNKNOWN }; @@ -402,6 +404,7 @@ inline static VENDOR get_soc_vendor_from_soc(SOC soc) { 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; else if(soc >= SOC_NXP_IMX8MP && soc <= SOC_NXP_IMX8MP) return SOC_VENDOR_NXP; + else if(soc >= SOC_AMLOGIC_A311D && soc <= SOC_AMLOGIC_A311D) return SOC_VENDOR_AMLOGIC; return SOC_VENDOR_UNKNOWN; } diff --git a/src/common/ascii.h b/src/common/ascii.h index aea760c..bd444bc 100644 --- a/src/common/ascii.h +++ b/src/common/ascii.h @@ -423,6 +423,16 @@ $C1##### ######### $C2############## $C3############### \ $C1##### ###### $C2###### ###### $C3#### \ $C1##### ## $C2###### ###### $C3## " +#define ASCII_AMLOGIC \ +"$C1 .#####. ### ### \ +$C1 ######## ### \ +$C1 ####..### ########## ### ### ##### ### ### \ +$C1 .## #. ### ## ## ## ### ## ## ## ## ### ## \ +$C1 #### #.# ### ## ## ## ### ## ## ## ## ### ## \ +$C1#########.### ## ## ## ## ### ###### ## ### \ +$C1 ### \ +$C1 ### " + // --------------------- LONG LOGOS ------------------------- // #define ASCII_AMD_L \ "$C1 \ @@ -600,6 +610,7 @@ asciiL logo_sipeed = { ASCII_SIPEED, 41, 16, true, {C_BG_RED, C_BG_WH 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, 50, 17, false, {C_FG_RED}, {C_FG_WHITE, C_FG_RED} }; asciiL logo_nxp = { ASCII_NXP, 55, 8, false, {C_FG_YELLOW, C_FG_CYAN, C_FG_GREEN}, {C_FG_CYAN, C_FG_WHITE} }; +asciiL logo_amlogic = { ASCII_AMLOGIC, 58, 8, false, {C_FG_BLUE}, {C_FG_BLUE, C_FG_B_WHITE} }; // Long variants | ----------------------------------------------------------------------------------------------------------------| asciiL logo_amd_l = { ASCII_AMD_L, 62, 19, true, {C_BG_WHITE, C_BG_GREEN}, {C_FG_WHITE, C_FG_GREEN} }; diff --git a/src/common/printer.c b/src/common/printer.c index ee56009..be3c3e5 100644 --- a/src/common/printer.c +++ b/src/common/printer.c @@ -393,6 +393,8 @@ void choose_ascii_art(struct ascii* art, struct color** cs, struct terminal* ter art->art = &logo_ampere; else if(art->vendor == SOC_VENDOR_NXP) art->art = &logo_nxp; + else if(art->vendor == SOC_VENDOR_AMLOGIC) + art->art = &logo_amlogic; else if(art->vendor == SOC_VENDOR_NVIDIA) art->art = choose_ascii_art_aux(&logo_nvidia_l, &logo_nvidia, term, lf); else { diff --git a/src/common/soc.c b/src/common/soc.c index 9b922c5..66c22bc 100644 --- a/src/common/soc.c +++ b/src/common/soc.c @@ -23,6 +23,7 @@ static char* soc_trademark_string[] = { [SOC_VENDOR_NVIDIA] = "NVIDIA ", [SOC_VENDOR_AMPERE] = "Ampere ", [SOC_VENDOR_NXP] = "NXP ", + [SOC_VENDOR_AMLOGIC] = "Amlogic ", // RISC-V [SOC_VENDOR_SIFIVE] = "SiFive ", [SOC_VENDOR_STARFIVE] = "StarFive ", diff --git a/src/common/soc.h b/src/common/soc.h index 1efbac0..2d1afcb 100644 --- a/src/common/soc.h +++ b/src/common/soc.h @@ -27,6 +27,7 @@ enum { SOC_VENDOR_NVIDIA, SOC_VENDOR_AMPERE, SOC_VENDOR_NXP, + SOC_VENDOR_AMLOGIC, // RISC-V SOC_VENDOR_SIFIVE, SOC_VENDOR_STARFIVE,