diff --git a/src/detection/cpu/cpu_linux.c b/src/detection/cpu/cpu_linux.c index 5ee6dcdd3..498f04896 100644 --- a/src/detection/cpu/cpu_linux.c +++ b/src/detection/cpu/cpu_linux.c @@ -145,6 +145,7 @@ static void detectQualcomm(FFCPUResult* cpu) { // https://en.wikipedia.org/wiki/List_of_Qualcomm_Snapdragon_systems_on_chips + assert(cpu->name.length >= 2); uint32_t code = (uint32_t) strtoul(cpu->name.chars + 2, NULL, 10); const char* name = NULL; @@ -189,6 +190,7 @@ static void detectMediaTek(FFCPUResult* cpu) { // https://en.wikipedia.org/wiki/List_of_MediaTek_systems_on_chips + assert(cpu->name.length >= 2); uint32_t code = (uint32_t) strtoul(cpu->name.chars + 2, NULL, 10); const char* name = NULL; @@ -225,18 +227,26 @@ static void detectAndroid(FFCPUResult* cpu) { if (ffSettingsGetAndroidProperty("ro.soc.model", &cpu->name)) ffStrbufClear(&cpu->vendor); // We usually detect the vendor of CPU core as ARM, but instead we want the vendor of SOC - else if(ffSettingsGetAndroidProperty("ro.mediatek.platform", &cpu->name)) - ffStrbufSetStatic(&cpu->vendor, "MTK"); } if (cpu->vendor.length == 0) { if (!ffSettingsGetAndroidProperty("ro.soc.manufacturer", &cpu->vendor)) - ffSettingsGetAndroidProperty("ro.product.product.manufacturer", &cpu->vendor); + if (!ffSettingsGetAndroidProperty("ro.product.product.manufacturer", &cpu->vendor)) + if (!ffSettingsGetAndroidProperty("ro.product.vendor.manufacturer", &cpu->vendor)) + if(ffSettingsGetAndroidProperty("ro.mediatek.platform", &cpu->name)) + ffStrbufSetStatic(&cpu->vendor, "MediaTek"); } - if (ffStrbufEqualS(&cpu->vendor, "QTI") && ffStrbufStartsWithS(&cpu->name, "SM")) + if (ffStrbufEqualS(&cpu->vendor, "QTI")) + ffStrbufSetStatic(&cpu->vendor, "Qualcomm"); + else if (ffStrbufIgnCaseEqualS(&cpu->vendor, "MediaTek")) // sometimes "Mediatek" + ffStrbufSetStatic(&cpu->vendor, "MediaTek"); + else if (cpu->vendor.length > 0) + cpu->vendor.chars[0] = (char) toupper(cpu->vendor.chars[0]); + + if (ffStrbufEqualS(&cpu->vendor, "Qualcomm") && ffStrbufStartsWithS(&cpu->name, "SM")) detectQualcomm(cpu); - else if (ffStrbufEqualS(&cpu->vendor, "MTK") && ffStrbufStartsWithS(&cpu->name, "MT")) + else if (ffStrbufEqualS(&cpu->vendor, "MediaTek") && ffStrbufStartsWithS(&cpu->name, "MT")) detectMediaTek(cpu); } #endif