[v1.04][RISCV] Add Lichee PI 4a SoC (#200)

This commit is contained in:
Dr-Noob
2023-11-01 20:48:25 +00:00
parent 9a578d3670
commit a43b700540
4 changed files with 15 additions and 1 deletions

View File

@@ -22,6 +22,7 @@ static char* soc_trademark_string[] = {
// RISC-V // RISC-V
[SOC_VENDOR_SIFIVE] = "SiFive ", [SOC_VENDOR_SIFIVE] = "SiFive ",
[SOC_VENDOR_STARFIVE] = "StarFive ", [SOC_VENDOR_STARFIVE] = "StarFive ",
[SOC_VENDOR_SIPEED] = "Sipeed ",
// ARM & RISC-V // ARM & RISC-V
[SOC_VENDOR_ALLWINNER] = "Allwinner " [SOC_VENDOR_ALLWINNER] = "Allwinner "
}; };

View File

@@ -26,6 +26,7 @@ enum {
// RISC-V // RISC-V
SOC_VENDOR_SIFIVE, SOC_VENDOR_SIFIVE,
SOC_VENDOR_STARFIVE, SOC_VENDOR_STARFIVE,
SOC_VENDOR_SIPEED,
// ARM & RISC-V // ARM & RISC-V
SOC_VENDOR_ALLWINNER SOC_VENDOR_ALLWINNER
}; };

View File

@@ -32,6 +32,12 @@ bool match_allwinner(char* soc_name, struct system_on_chip* soc) {
SOC_END SOC_END
} }
bool match_sipeed(char* soc_name, struct system_on_chip* soc) {
SOC_START
SOC_EQ(soc_name, "light", "Lichee Pi 4A", SOC_SIPEED_LICHEEPI4A, soc, 12) // https://github.com/Dr-Noob/cpufetch/issues/200, https://sipeed.com/licheepi4a
SOC_END
}
struct system_on_chip* parse_soc_from_string(struct system_on_chip* soc) { struct system_on_chip* parse_soc_from_string(struct system_on_chip* soc) {
char* raw_name = soc->raw_name; char* raw_name = soc->raw_name;
@@ -41,7 +47,10 @@ struct system_on_chip* parse_soc_from_string(struct system_on_chip* soc) {
if(match_allwinner(raw_name, soc)) if(match_allwinner(raw_name, soc))
return soc; return soc;
match_sifive(raw_name, soc); if(match_sifive(raw_name, soc))
return soc;
match_sipeed(raw_name, soc);
return soc; return soc;
} }

View File

@@ -11,6 +11,8 @@ enum {
SOC_STARFIVE_VF2, SOC_STARFIVE_VF2,
// ALLWINNER // ALLWINNER
SOC_ALLWINNER_D1H, SOC_ALLWINNER_D1H,
// SIPEED
SOC_SIPEED_LICHEEPI4A,
// UNKNOWN // UNKNOWN
SOC_MODEL_UNKNOWN SOC_MODEL_UNKNOWN
}; };
@@ -19,6 +21,7 @@ inline static VENDOR get_soc_vendor_from_soc(SOC soc) {
if(soc >= SOC_SIFIVE_U740 && soc <= SOC_SIFIVE_U740) return SOC_VENDOR_SIFIVE; if(soc >= SOC_SIFIVE_U740 && soc <= SOC_SIFIVE_U740) return SOC_VENDOR_SIFIVE;
if(soc >= SOC_STARFIVE_VF2 && soc <= SOC_STARFIVE_VF2) return SOC_VENDOR_STARFIVE; 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_ALLWINNER_D1H && soc <= SOC_ALLWINNER_D1H) return SOC_VENDOR_ALLWINNER;
if(soc >= SOC_SIPEED_LICHEEPI4A && soc <= SOC_SIPEED_LICHEEPI4A) return SOC_VENDOR_SIPEED;
return SOC_VENDOR_UNKNOWN; return SOC_VENDOR_UNKNOWN;
} }