From 843da5cf7057c2283fc01fc778137d4602ae3f80 Mon Sep 17 00:00:00 2001 From: Dr-Noob Date: Mon, 2 Aug 2021 21:11:53 +0100 Subject: [PATCH] [v0.98][ARM] Add M1 SoC detection and apple logo --- src/arm/soc.c | 3 ++- src/arm/soc.h | 3 ++- src/arm/socs.h | 3 +++ src/common/ascii.h | 22 ++++++++++++++++++++++ src/common/printer.c | 9 +++++++++ 5 files changed, 38 insertions(+), 2 deletions(-) diff --git a/src/arm/soc.c b/src/arm/soc.c index 7d6dab9..d33f99e 100644 --- a/src/arm/soc.c +++ b/src/arm/soc.c @@ -18,6 +18,7 @@ static char* soc_trademark_string[] = { [SOC_VENDOR_EXYNOS] = "Exynos ", [SOC_VENDOR_KIRIN] = "Kirin ", [SOC_VENDOR_BROADCOM] = "Broadcom BCM", + [SOC_VENDOR_APPLE] = "Apple " }; static char* soc_rpi_string[] = { @@ -614,7 +615,7 @@ struct system_on_chip* get_soc() { #endif } #elif defined __APPLE__ || __MACH__ - soc->raw_name = NULL; + fill_soc(soc, "M1", SOC_APPLE_M1, 5); #endif if(soc->raw_name == NULL) { diff --git a/src/arm/soc.h b/src/arm/soc.h index 1dc10b3..90df32c 100644 --- a/src/arm/soc.h +++ b/src/arm/soc.h @@ -12,7 +12,8 @@ enum { SOC_VENDOR_MEDIATEK, SOC_VENDOR_EXYNOS, SOC_VENDOR_KIRIN, - SOC_VENDOR_BROADCOM + SOC_VENDOR_BROADCOM, + SOC_VENDOR_APPLE }; struct system_on_chip { diff --git a/src/arm/socs.h b/src/arm/socs.h index c028d11..66466b2 100644 --- a/src/arm/socs.h +++ b/src/arm/socs.h @@ -250,6 +250,8 @@ enum { SOC_SNAPD_SM8250, SOC_SNAPD_SM8250_AB, SOC_SNAPD_SM8350, + // APPLE + SOC_APPLE_M1 }; inline static VENDOR get_soc_vendor_from_soc(SOC soc) { @@ -258,6 +260,7 @@ inline static VENDOR get_soc_vendor_from_soc(SOC soc) { else if(soc >= SOC_EXYNOS_3475 && soc <= SOC_EXYNOS_880) return SOC_VENDOR_EXYNOS; else if(soc >= SOC_MTK_MT6889 && soc <= SOC_MTK_MT8783) return SOC_VENDOR_MEDIATEK; else if(soc >= SOC_SNAPD_QSD8650 && soc <= SOC_SNAPD_SM8350) return SOC_VENDOR_SNAPDRAGON; + else if(soc >= SOC_APPLE_M1 && soc <= SOC_APPLE_M1) return SOC_VENDOR_APPLE; return SOC_VENDOR_UNKNOWN; } diff --git a/src/common/ascii.h b/src/common/ascii.h index bd77ac9..c57c1f7 100644 --- a/src/common/ascii.h +++ b/src/common/ascii.h @@ -150,6 +150,27 @@ ######################## \ ############### \ " + +#define APPLE_ASCII \ +" ;' \ + .clod. \ + cdddd; \ + cdddo \ + ddddddd:` dddddddd: \ + ,clooddoolcc:clloddddoll: \ + 'lddddddddddddddddddddddddd' \ + ;ddddddddddddddddddddddddd' \ + .ddddddddddddddddddddddddd, \ + .ddddddddddddddddddddddddd. \ + .ddddddddddddddddddddddddd' \ + dddddddddddddddddddddddddo. \ + ,dddddddddddddddddddddddddoc. \ + ldddddddddddddddddddddddddddl \ + ldddddddddddddddddddddddddd \ + 'dddddddddddddddddddddddc \ + ldddddddddddddddddddd \ + .ddd ldd' \ + " #define ARM_ASCII \ " \ @@ -225,6 +246,7 @@ static const char* ASCII_ARRAY [] = { EXYNOS_ASCII, KIRIN_ASCII, BROADCOM_ASCII, + APPLE_ASCII, IBM_ASCII, UNKNOWN_ASCII }; diff --git a/src/common/printer.c b/src/common/printer.c index 76f5d97..7453f89 100644 --- a/src/common/printer.c +++ b/src/common/printer.c @@ -225,6 +225,13 @@ struct ascii* set_ascii(VENDOR vendor, STYLE style, struct colors* cs) { COL_FANCY_4 = COLOR_FG_RED; art->ascii_chars[0] = '@'; } + else if(art->vendor == SOC_VENDOR_APPLE) { + COL_FANCY_1 = COLOR_BG_BLACK; + COL_FANCY_2 = COLOR_BG_BLACK; + COL_FANCY_3 = COLOR_FG_BLACK; + COL_FANCY_4 = COLOR_FG_BLACK; + art->ascii_chars[0] = '@'; + } else { COL_FANCY_1 = COLOR_BG_CYAN; COL_FANCY_2 = COLOR_BG_CYAN; @@ -341,6 +348,8 @@ struct ascii* set_ascii(VENDOR vendor, STYLE style, struct colors* cs) { strcpy(tmp, KIRIN_ASCII); else if(art->vendor == SOC_VENDOR_BROADCOM) strcpy(tmp, BROADCOM_ASCII); + else if(art->vendor == SOC_VENDOR_APPLE) + strcpy(tmp, APPLE_ASCII); else strcpy(tmp, ARM_ASCII); #endif