From ff032efb28f4dda2dca80e420231dd7a1e17f783 Mon Sep 17 00:00:00 2001 From: Dr-Noob Date: Thu, 26 Nov 2020 11:51:06 +0100 Subject: [PATCH] [v0.91][ARM] Fix for snapdragon chips reporting name in lowercase --- src/arm/soc.c | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/src/arm/soc.c b/src/arm/soc.c index 77ae3f1..44bfabb 100644 --- a/src/arm/soc.c +++ b/src/arm/soc.c @@ -1,6 +1,7 @@ #include #include #include +#include #include "soc.h" #include "udev.h" @@ -29,6 +30,18 @@ bool match_soc(struct system_on_chip* soc, char* raw_name, char* expected_name, return true; } +char* toupperstr(char* str) { + int len = strlen(str) + 1; + char* ret = malloc(sizeof(char) * len); + memset(ret, 0, sizeof(char) * len); + + for(int i=0; i < len; i++) { + ret[i] = toupper((unsigned char) str[i]); + } + + return ret; +} + #define SOC_START if (false) {} #define CHECK_SOC(raw_name, expected_name, soc_name, soc_vendor, soc, process) \ else if (match_soc(soc, raw_name, expected_name, soc_name, soc_vendor, process)) return true; @@ -177,12 +190,13 @@ bool match_mediatek(char* soc_name, struct system_on_chip* soc) { bool match_qualcomm(char* soc_name, struct system_on_chip* soc) { char* tmp; + char* soc_name_upper = toupperstr(soc_name); - if((tmp = strstr(soc_name, "MSM")) != NULL); - else if((tmp = strstr(soc_name, "SDM")) != NULL); - else if((tmp = strstr(soc_name, "APQ")) != NULL); - else if((tmp = strstr(soc_name, "SM")) != NULL); - else if((tmp = strstr(soc_name, "QM")) != NULL); + if((tmp = strstr(soc_name_upper, "MSM")) != NULL); + else if((tmp = strstr(soc_name_upper, "SDM")) != NULL); + else if((tmp = strstr(soc_name_upper, "APQ")) != NULL); + else if((tmp = strstr(soc_name_upper, "SM")) != NULL); + else if((tmp = strstr(soc_name_upper, "QM")) != NULL); else return false; SOC_START