Skip to content

Commit

Permalink
[v1.06][RISCV] Add support for SpacemiT K1-X SoC (#286)
Browse files Browse the repository at this point in the history
  • Loading branch information
Dr-Noob committed Oct 10, 2024
1 parent 65c75eb commit a0c08cc
Show file tree
Hide file tree
Showing 6 changed files with 37 additions and 0 deletions.
21 changes: 21 additions & 0 deletions src/common/ascii.h
Original file line number Diff line number Diff line change
Expand Up @@ -445,6 +445,26 @@ struct ascii_logo {
$C1 ########### ___########### __________ \
$C1.########## |__________| |__________| "

#define ASCII_SPACEMIT \
"$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 \
Expand Down Expand Up @@ -624,6 +644,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, 27, 18, false, {C_FG_B_GREEN}, {C_FG_B_GREEN, 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} };
Expand Down
2 changes: 2 additions & 0 deletions src/common/printer.c
Original file line number Diff line number Diff line change
Expand Up @@ -412,6 +412,8 @@ void choose_ascii_art(struct ascii* art, struct color** cs, struct terminal* ter
art->art = &logo_allwinner;
else if(art->vendor == SOC_VENDOR_SIPEED)
art->art = &logo_sipeed;
else if(art->vendor == SOC_VENDOR_SPACEMIT)
art->art = &logo_spacemit;
else
art->art = &logo_riscv;
#endif
Expand Down
1 change: 1 addition & 0 deletions src/common/soc.c
Original file line number Diff line number Diff line change
Expand Up @@ -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 "
};
Expand Down
1 change: 1 addition & 0 deletions src/common/soc.h
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ enum {
SOC_VENDOR_SIFIVE,
SOC_VENDOR_STARFIVE,
SOC_VENDOR_SIPEED,
SOC_VENDOR_SPACEMIT,
// ARM & RISC-V
SOC_VENDOR_ALLWINNER
};
Expand Down
9 changes: 9 additions & 0 deletions src/riscv/soc.c
Original file line number Diff line number Diff line change
Expand Up @@ -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", "K1-X", SOC_SPACEMIT_K1X, 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;

Expand All @@ -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;
}
Expand Down
3 changes: 3 additions & 0 deletions src/riscv/socs.h
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ enum {
SOC_ALLWINNER_D1H,
// SIPEED
SOC_SIPEED_LICHEEPI4A,
// SPACEMIT
SOC_SPACEMIT_K1X,
// UNKNOWN
SOC_MODEL_UNKNOWN
};
Expand All @@ -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_K1X && soc <= SOC_SPACEMIT_K1X) return SOC_VENDOR_SPACEMIT;
return SOC_VENDOR_UNKNOWN;
}

Expand Down

0 comments on commit a0c08cc

Please sign in to comment.