diff --git a/src/common/ascii.h b/src/common/ascii.h index 94e9cf4..ebb33aa 100644 --- a/src/common/ascii.h +++ b/src/common/ascii.h @@ -445,6 +445,38 @@ $C1 .######### |__________|###### |__________| \ $C1 ########### ___########### __________ \ $C1.########## |__________| |__________| " +#define ASCII_SPACEMIT \ +"$C1 :###: \ +$C1 :#######: \ +$C1 :##########: \ +$C1 :#############: \ +$C1 :################: \ +$C1 :##################: \ +$C1 :###################: \ +$C1 :##################: \ +$C1 :################: \ +$C1 :#############: \ +$C1 :##########: \ +$C1 :#######: \ +$C1 :###: :##: \ +$C1 :###: :#####: \ +$C1 :#######: :########: \ +$C1 :###########: :###########: \ +$C1 :###############: :############: \ +$C1 :###################: :############: \ +$C1 :######################: :###########: \ +$C1 :#######################: :########: \ +$C1 :#######################: :#####: \ +$C1 :#######################: :##: \ +$C1 :#######################: \ +$C1 :######################: \ +$C1 :###################: \ +$C1 :###############: \ +$C1 :###########: \ +$C1 :#######: \ +$C1 :###: " + + // --------------------- LONG LOGOS ------------------------- // #define ASCII_AMD_L \ "$C1 \ @@ -624,6 +656,7 @@ asciiL logo_ampere = { ASCII_AMPERE, 50, 17, false, {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} }; +asciiL logo_spacemit = { ASCII_SPACEMIT, 50, 29, 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 e28a257..91ddd68 100644 --- a/src/common/printer.c +++ b/src/common/printer.c @@ -398,6 +398,8 @@ void choose_ascii_art(struct ascii* art, struct color** cs, struct terminal* ter art->art = &logo_amlogic; else if(art->vendor == SOC_VENDOR_MARVELL) art->art = &logo_marvell; + else if(art->vendor == SOC_VENDOR_SPACEMIT) + art->art = &logo_spacemit; 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 a6984e3..6e7631f 100644 --- a/src/common/soc.c +++ b/src/common/soc.c @@ -29,6 +29,7 @@ static char* soc_trademark_string[] = { [SOC_VENDOR_SIFIVE] = "SiFive ", [SOC_VENDOR_STARFIVE] = "StarFive ", [SOC_VENDOR_SIPEED] = "Sipeed ", + [SOC_VENDOR_SPACEMIT] = "SpacemiT ", // ARM & RISC-V [SOC_VENDOR_ALLWINNER] = "Allwinner " }; diff --git a/src/common/soc.h b/src/common/soc.h index 921a7f7..36d590e 100644 --- a/src/common/soc.h +++ b/src/common/soc.h @@ -33,6 +33,7 @@ enum { SOC_VENDOR_SIFIVE, SOC_VENDOR_STARFIVE, SOC_VENDOR_SIPEED, + SOC_VENDOR_SPACEMIT, // ARM & RISC-V SOC_VENDOR_ALLWINNER }; diff --git a/src/riscv/soc.c b/src/riscv/soc.c index aad7a47..59f0962 100644 --- a/src/riscv/soc.c +++ b/src/riscv/soc.c @@ -38,6 +38,12 @@ bool match_sipeed(char* soc_name, struct system_on_chip* soc) { SOC_END } +bool match_spacemit(char* soc_name, struct system_on_chip* soc) { + SOC_START + SOC_EQ(soc_name, "k1-x", "X60", SOC_SPACEMIT_X60, soc, 22) // https://github.com/Dr-Noob/cpufetch/issues/286 https://www.spacemit.com/en/spacemit-x60-core/ + SOC_END +} + struct system_on_chip* parse_soc_from_string(struct system_on_chip* soc) { char* raw_name = soc->raw_name; @@ -50,6 +56,9 @@ struct system_on_chip* parse_soc_from_string(struct system_on_chip* soc) { if(match_sifive(raw_name, soc)) return soc; + if(match_spacemit(raw_name, soc)) + return soc; + match_sipeed(raw_name, soc); return soc; } diff --git a/src/riscv/socs.h b/src/riscv/socs.h index a6bc2e1..3a771a3 100644 --- a/src/riscv/socs.h +++ b/src/riscv/socs.h @@ -13,6 +13,8 @@ enum { SOC_ALLWINNER_D1H, // SIPEED SOC_SIPEED_LICHEEPI4A, + // SPACEMIT + SOC_SPACEMIT_X60, // UNKNOWN SOC_MODEL_UNKNOWN }; @@ -22,6 +24,7 @@ inline static VENDOR get_soc_vendor_from_soc(SOC soc) { if(soc >= SOC_STARFIVE_VF2 && soc <= SOC_STARFIVE_VF2) return SOC_VENDOR_STARFIVE; if(soc >= SOC_ALLWINNER_D1H && soc <= SOC_ALLWINNER_D1H) return SOC_VENDOR_ALLWINNER; if(soc >= SOC_SIPEED_LICHEEPI4A && soc <= SOC_SIPEED_LICHEEPI4A) return SOC_VENDOR_SIPEED; + if(soc >= SOC_SPACEMIT_X60 && soc <= SOC_SPACEMIT_X60) return SOC_VENDOR_SPACEMIT; return SOC_VENDOR_UNKNOWN; }