Skip to content

Commit a0c08cc

Browse files
committed
[v1.06][RISCV] Add support for SpacemiT K1-X SoC (#286)
1 parent 65c75eb commit a0c08cc

File tree

6 files changed

+37
-0
lines changed

6 files changed

+37
-0
lines changed

src/common/ascii.h

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -445,6 +445,26 @@ struct ascii_logo {
445445
$C1 ########### ___########### __________ \
446446
$C1.########## |__________| |__________| "
447447

448+
#define ASCII_SPACEMIT \
449+
"$C1 :#: \
450+
$C1 :####: \
451+
$C1 :#######: \
452+
$C1 :#########: \
453+
$C1 :#########: \
454+
$C1 :#######: \
455+
$C1 :####: \
456+
$C1 :#: \
457+
$C1:##: :#: \
458+
$C1:####: :###: \
459+
$C1:#######: :####: \
460+
$C1:##########: :###: \
461+
$C1:###########: :#: \
462+
$C1:###########: \
463+
$C1 :##########: \
464+
$C1 :#######: \
465+
$C1 :####: \
466+
$C1 :##: "
467+
448468
// --------------------- LONG LOGOS ------------------------- //
449469
#define ASCII_AMD_L \
450470
"$C1 \
@@ -624,6 +644,7 @@ asciiL logo_ampere = { ASCII_AMPERE, 50, 17, false, {C_FG_RED},
624644
asciiL logo_nxp = { ASCII_NXP, 55, 8, false, {C_FG_YELLOW, C_FG_CYAN, C_FG_GREEN}, {C_FG_CYAN, C_FG_WHITE} };
625645
asciiL logo_amlogic = { ASCII_AMLOGIC, 58, 8, false, {C_FG_BLUE}, {C_FG_BLUE, C_FG_B_WHITE} };
626646
asciiL logo_marvell = { ASCII_MARVELL, 56, 10, false, {C_FG_B_BLACK}, {C_FG_B_BLACK, C_FG_B_WHITE} };
647+
asciiL logo_spacemit = { ASCII_SPACEMIT, 27, 18, false, {C_FG_B_GREEN}, {C_FG_B_GREEN, C_FG_B_WHITE} };
627648

628649
// Long variants | ----------------------------------------------------------------------------------------------------------------|
629650
asciiL logo_amd_l = { ASCII_AMD_L, 62, 19, true, {C_BG_WHITE, C_BG_GREEN}, {C_FG_WHITE, C_FG_GREEN} };

src/common/printer.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -412,6 +412,8 @@ void choose_ascii_art(struct ascii* art, struct color** cs, struct terminal* ter
412412
art->art = &logo_allwinner;
413413
else if(art->vendor == SOC_VENDOR_SIPEED)
414414
art->art = &logo_sipeed;
415+
else if(art->vendor == SOC_VENDOR_SPACEMIT)
416+
art->art = &logo_spacemit;
415417
else
416418
art->art = &logo_riscv;
417419
#endif

src/common/soc.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ static char* soc_trademark_string[] = {
2929
[SOC_VENDOR_SIFIVE] = "SiFive ",
3030
[SOC_VENDOR_STARFIVE] = "StarFive ",
3131
[SOC_VENDOR_SIPEED] = "Sipeed ",
32+
[SOC_VENDOR_SPACEMIT] = "SpacemiT ",
3233
// ARM & RISC-V
3334
[SOC_VENDOR_ALLWINNER] = "Allwinner "
3435
};

src/common/soc.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ enum {
3333
SOC_VENDOR_SIFIVE,
3434
SOC_VENDOR_STARFIVE,
3535
SOC_VENDOR_SIPEED,
36+
SOC_VENDOR_SPACEMIT,
3637
// ARM & RISC-V
3738
SOC_VENDOR_ALLWINNER
3839
};

src/riscv/soc.c

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,12 @@ bool match_sipeed(char* soc_name, struct system_on_chip* soc) {
3838
SOC_END
3939
}
4040

41+
bool match_spacemit(char* soc_name, struct system_on_chip* soc) {
42+
SOC_START
43+
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/
44+
SOC_END
45+
}
46+
4147
struct system_on_chip* parse_soc_from_string(struct system_on_chip* soc) {
4248
char* raw_name = soc->raw_name;
4349

@@ -50,6 +56,9 @@ struct system_on_chip* parse_soc_from_string(struct system_on_chip* soc) {
5056
if(match_sifive(raw_name, soc))
5157
return soc;
5258

59+
if(match_spacemit(raw_name, soc))
60+
return soc;
61+
5362
match_sipeed(raw_name, soc);
5463
return soc;
5564
}

src/riscv/socs.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ enum {
1313
SOC_ALLWINNER_D1H,
1414
// SIPEED
1515
SOC_SIPEED_LICHEEPI4A,
16+
// SPACEMIT
17+
SOC_SPACEMIT_K1X,
1618
// UNKNOWN
1719
SOC_MODEL_UNKNOWN
1820
};
@@ -22,6 +24,7 @@ inline static VENDOR get_soc_vendor_from_soc(SOC soc) {
2224
if(soc >= SOC_STARFIVE_VF2 && soc <= SOC_STARFIVE_VF2) return SOC_VENDOR_STARFIVE;
2325
if(soc >= SOC_ALLWINNER_D1H && soc <= SOC_ALLWINNER_D1H) return SOC_VENDOR_ALLWINNER;
2426
if(soc >= SOC_SIPEED_LICHEEPI4A && soc <= SOC_SIPEED_LICHEEPI4A) return SOC_VENDOR_SIPEED;
27+
if(soc >= SOC_SPACEMIT_K1X && soc <= SOC_SPACEMIT_K1X) return SOC_VENDOR_SPACEMIT;
2528
return SOC_VENDOR_UNKNOWN;
2629
}
2730

0 commit comments

Comments
 (0)