From f64ff0d4cf9af30b0756dfc084855b24e0e8c57b Mon Sep 17 00:00:00 2001 From: Dr-Noob Date: Tue, 17 Oct 2023 08:55:38 +0200 Subject: [PATCH] [v1.04] Added Google Tensor SoCs --- src/arm/soc.c | 34 ++++++++++++++++++++++++++++++++++ src/arm/socs.h | 5 +++++ src/common/soc.c | 1 + src/common/soc.h | 1 + 4 files changed, 41 insertions(+) diff --git a/src/arm/soc.c b/src/arm/soc.c index a5b4253..12d5570 100644 --- a/src/arm/soc.c +++ b/src/arm/soc.c @@ -126,6 +126,22 @@ bool match_broadcom(char* soc_name, struct system_on_chip* soc) { SOC_END } +// https://en.wikipedia.org/wiki/Google_Tensor +bool match_google(char* soc_name, struct system_on_chip* soc) { + char* tmp; + + if((tmp = strstr(soc_name, "gs")) == NULL) + return false; + + soc->soc_vendor = SOC_VENDOR_GOOGLE; + + SOC_START + SOC_EQ(tmp, "gs101", "Tensor", SOC_GOOGLE_TENSOR, soc, 5) + SOC_EQ(tmp, "gs201", "Tensor G2", SOC_GOOGLE_TENSOR_G2, soc, 5) + SOC_EQ(tmp, "gs301", "Tensor G3", SOC_GOOGLE_TENSOR_G3, soc, 4) + SOC_END +} + // https://www.techinsights.com/ // https://datasheetspdf.com/pdf-file/1316605/HiSilicon/Hi3660/1 bool match_hisilicon(char* soc_name, struct system_on_chip* soc) { @@ -537,6 +553,21 @@ bool match_special(char* soc_name, struct system_on_chip* soc) { return true; } + // Google Pixel 6 + // https://github.com/Dr-Noob/cpufetch/issues/134 + if(strcmp(soc_name, "oriole") == 0) { + fill_soc(soc, "Tensor", SOC_GOOGLE_TENSOR, 5); + return true; + } + + // Google Pixel 8 + // https://github.com/Dr-Noob/cpufetch/issues/198 + if(strcmp(soc_name, "husky") == 0 || + strcmp(soc_name, "zuma") == 0) { + fill_soc(soc, "Tensor G3", SOC_GOOGLE_TENSOR_G3, 4); + return true; + } + return false; } @@ -561,6 +592,9 @@ struct system_on_chip* parse_soc_from_string(struct system_on_chip* soc) { if(match_allwinner(raw_name, soc)) return soc; + if(match_google(raw_name, soc)) + return soc; + match_broadcom(raw_name, soc); return soc; } diff --git a/src/arm/socs.h b/src/arm/socs.h index 1cf2461..70068c1 100644 --- a/src/arm/socs.h +++ b/src/arm/socs.h @@ -304,6 +304,10 @@ enum { SOC_ROCKCHIP_3568, SOC_ROCKCHIP_3588, SOC_ROCKCHIP_3588S, + // GOOGLE + SOC_GOOGLE_TENSOR, + SOC_GOOGLE_TENSOR_G2, + SOC_GOOGLE_TENSOR_G3, // UNKNOWN SOC_MODEL_UNKNOWN }; @@ -317,6 +321,7 @@ inline static VENDOR get_soc_vendor_from_soc(SOC soc) { else if(soc >= SOC_APPLE_M1 && soc <= SOC_APPLE_M2_ULTRA) return SOC_VENDOR_APPLE; else if(soc >= SOC_ALLWINNER_A10 && soc <= SOC_ALLWINNER_R328) return SOC_VENDOR_ALLWINNER; else if(soc >= SOC_ROCKCHIP_3288 && soc <= SOC_ROCKCHIP_3588S) return SOC_VENDOR_ROCKCHIP; + else if(soc >= SOC_GOOGLE_TENSOR && soc <= SOC_GOOGLE_TENSOR_G3) return SOC_VENDOR_GOOGLE; return SOC_VENDOR_UNKNOWN; } diff --git a/src/common/soc.c b/src/common/soc.c index de3918b..51f80cf 100644 --- a/src/common/soc.c +++ b/src/common/soc.c @@ -18,6 +18,7 @@ static char* soc_trademark_string[] = { [SOC_VENDOR_BROADCOM] = "Broadcom BCM", [SOC_VENDOR_APPLE] = "Apple ", [SOC_VENDOR_ROCKCHIP] = "Rockchip ", + [SOC_VENDOR_GOOGLE] = "Google ", // RISC-V [SOC_VENDOR_SIFIVE] = "SiFive ", [SOC_VENDOR_STARFIVE] = "StarFive ", diff --git a/src/common/soc.h b/src/common/soc.h index 5b1d0b2..44f7684 100644 --- a/src/common/soc.h +++ b/src/common/soc.h @@ -22,6 +22,7 @@ enum { SOC_VENDOR_BROADCOM, SOC_VENDOR_APPLE, SOC_VENDOR_ROCKCHIP, + SOC_VENDOR_GOOGLE, // RISC-V SOC_VENDOR_SIFIVE, SOC_VENDOR_STARFIVE,