From 278efb75c915015986c5ca6a0ab3cbfba7ba2724 Mon Sep 17 00:00:00 2001 From: Dr-Noob Date: Tue, 10 Sep 2024 07:41:11 +0100 Subject: [PATCH] [v1.06][ARM] Add support for Marvell SoC (#279) --- src/arm/soc.c | 2 ++ src/arm/socs.h | 3 +++ src/common/ascii.h | 13 +++++++++++++ src/common/printer.c | 2 ++ src/common/soc.c | 1 + src/common/soc.h | 1 + 6 files changed, 22 insertions(+) diff --git a/src/arm/soc.c b/src/arm/soc.c index 5f99415..0cdde03 100644 --- a/src/arm/soc.c +++ b/src/arm/soc.c @@ -991,6 +991,8 @@ struct system_on_chip* guess_soc_from_devtree(struct system_on_chip* soc) { // 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) + // Marvell + DT_EQ(dt, len, soc, "marvell,armada3700", "Armada 3700", SOC_MARVELL_A3700, 28) // http://wiki.espressobin.net/tiki-index.php?page=Armada+3700 (pdf), https://github.com/Dr-Noob/cpufetch/issues/279 DT_END(dt, len) } diff --git a/src/arm/socs.h b/src/arm/socs.h index 8dc726b..4697d8c 100644 --- a/src/arm/socs.h +++ b/src/arm/socs.h @@ -395,6 +395,8 @@ enum { SOC_NXP_IMX93, // AMLOGIC SOC_AMLOGIC_A311D, + // MARVELL + SOC_MARVELL_A3700, // UNKNOWN SOC_MODEL_UNKNOWN }; @@ -414,6 +416,7 @@ inline static VENDOR get_soc_vendor_from_soc(SOC soc) { else if(soc >= SOC_AMPERE_ALTRA && soc <= SOC_AMPERE_ALTRA) return SOC_VENDOR_AMPERE; else if(soc >= SOC_NXP_IMX8QM && soc <= SOC_NXP_IMX93) return SOC_VENDOR_NXP; else if(soc >= SOC_AMLOGIC_A311D && soc <= SOC_AMLOGIC_A311D) return SOC_VENDOR_AMLOGIC; + else if(soc >= SOC_MARVELL_A3700 && soc <= SOC_MARVELL_A3700) return SOC_VENDOR_MARVELL; return SOC_VENDOR_UNKNOWN; } diff --git a/src/common/ascii.h b/src/common/ascii.h index bd444bc..94e9cf4 100644 --- a/src/common/ascii.h +++ b/src/common/ascii.h @@ -433,6 +433,18 @@ $C1#########.### ## ## ## ## ### ###### ## ### \ $C1 ### \ $C1 ### " +#define ASCII_MARVELL \ +"$C1 ........... ........... \ +$C1 .### . .## . \ +$C1 .##### . #### . \ +$C1 ####### . ####### . \ +$C1 .#########__________. #########__________. \ +$C1 .###########|__________|#########|__________| \ +$C1 ############ ______############ __________ \ +$C1 .######### |__________|###### |__________| \ +$C1 ########### ___########### __________ \ +$C1.########## |__________| |__________| " + // --------------------- LONG LOGOS ------------------------- // #define ASCII_AMD_L \ "$C1 \ @@ -611,6 +623,7 @@ asciiL logo_nvidia = { ASCII_NVIDIA, 45, 19, false, {C_FG_GREEN, C_FG_ 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} }; +asciiL logo_marvell = { ASCII_MARVELL, 56, 10, false, {C_FG_B_BLACK}, {C_FG_B_BLACK, 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 be3c3e5..df73ad8 100644 --- a/src/common/printer.c +++ b/src/common/printer.c @@ -395,6 +395,8 @@ void choose_ascii_art(struct ascii* art, struct color** cs, struct terminal* ter art->art = &logo_nxp; else if(art->vendor == SOC_VENDOR_AMLOGIC) art->art = &logo_amlogic; + else if(art->vendor == SOC_VENDOR_MARVELL) + art->art = &logo_marvell; 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 66c22bc..b7a8be3 100644 --- a/src/common/soc.c +++ b/src/common/soc.c @@ -24,6 +24,7 @@ static char* soc_trademark_string[] = { [SOC_VENDOR_AMPERE] = "Ampere ", [SOC_VENDOR_NXP] = "NXP ", [SOC_VENDOR_AMLOGIC] = "Amlogic ", + [SOC_VENDOR_MARVELL] = "Marvell", // RISC-V [SOC_VENDOR_SIFIVE] = "SiFive ", [SOC_VENDOR_STARFIVE] = "StarFive ", diff --git a/src/common/soc.h b/src/common/soc.h index 2d1afcb..97a2562 100644 --- a/src/common/soc.h +++ b/src/common/soc.h @@ -28,6 +28,7 @@ enum { SOC_VENDOR_AMPERE, SOC_VENDOR_NXP, SOC_VENDOR_AMLOGIC, + SOC_VENDOR_MARVELL, // RISC-V SOC_VENDOR_SIFIVE, SOC_VENDOR_STARFIVE,