1 #include <gtest/gtest.h> 2 3 #include <stdint.h> 4 #include <string.h> 5 6 #include <string> 7 8 #define CPUINFO_BUILD_PROP_VALUE_MAX 92 9 #define CPUINFO_ARM_CHIPSET_NAME_MAX 48 10 11 extern "C" void cpuinfo_arm_android_parse_ro_chipname( 12 const char chipname[CPUINFO_BUILD_PROP_VALUE_MAX], 13 uint32_t cores, 14 uint32_t max_cpu_freq_max, 15 char chipset_name[CPUINFO_ARM_CHIPSET_NAME_MAX]); 16 17 inline std::string parse_ro_chipname( 18 std::string chipname, uint32_t cores=1, uint32_t max_cpu_freq_max=0) 19 { 20 char chipname_buffer[CPUINFO_BUILD_PROP_VALUE_MAX]; 21 strncpy(chipname_buffer, chipname.c_str(), CPUINFO_BUILD_PROP_VALUE_MAX); 22 char chipset_name[CPUINFO_ARM_CHIPSET_NAME_MAX]; 23 cpuinfo_arm_android_parse_ro_chipname( 24 chipname_buffer, cores, max_cpu_freq_max, chipset_name); 25 return std::string(chipset_name, strnlen(chipset_name, CPUINFO_ARM_CHIPSET_NAME_MAX)); 26 } 27 28 TEST(RO_CHIPNAME, qualcomm_msm) { 29 EXPECT_EQ("Qualcomm MSM7630", 30 parse_ro_chipname("MSM7630_SURF")); 31 EXPECT_EQ("Qualcomm MSM8210", 32 parse_ro_chipname("MSM8210")); 33 EXPECT_EQ("Qualcomm MSM8226", 34 parse_ro_chipname("MSM8226")); 35 EXPECT_EQ("Qualcomm MSM8228", 36 parse_ro_chipname("MSM8228")); 37 EXPECT_EQ("Qualcomm MSM8230AB", 38 parse_ro_chipname("MSM8230AB")); 39 EXPECT_EQ("Qualcomm MSM8230VV", 40 parse_ro_chipname("MSM8230VV")); 41 EXPECT_EQ("Qualcomm MSM8239", 42 parse_ro_chipname("MSM8239")); 43 EXPECT_EQ("Qualcomm MSM8260A", 44 parse_ro_chipname("MSM8260A")); 45 EXPECT_EQ("Qualcomm MSM8274", 46 parse_ro_chipname("MSM8274")); 47 EXPECT_EQ("Qualcomm MSM8610", 48 parse_ro_chipname("MSM8610", 2)); 49 EXPECT_EQ("Qualcomm MSM8626", 50 parse_ro_chipname("MSM8626")); 51 EXPECT_EQ("Qualcomm MSM8660", 52 parse_ro_chipname("MSM8660_SURF")); 53 EXPECT_EQ("Qualcomm MSM8674", 54 parse_ro_chipname("MSM8674")); 55 EXPECT_EQ("Qualcomm MSM8674PRO", 56 parse_ro_chipname("MSM8674PRO")); 57 EXPECT_EQ("Qualcomm MSM8916", 58 parse_ro_chipname("MSM8216")); 59 EXPECT_EQ("Qualcomm MSM8916", 60 parse_ro_chipname("MSM8916", 4)); 61 EXPECT_EQ("Qualcomm MSM8916", 62 parse_ro_chipname("msm8916", 4)); 63 EXPECT_EQ("Qualcomm MSM8917", 64 parse_ro_chipname("MSM8937", 4)); 65 EXPECT_EQ("Qualcomm MSM8926", 66 parse_ro_chipname("MSM8926")); 67 EXPECT_EQ("Qualcomm MSM8928", 68 parse_ro_chipname("MSM8928")); 69 EXPECT_EQ("Qualcomm MSM8929", 70 parse_ro_chipname("MSM8929")); 71 EXPECT_EQ("Qualcomm MSM8930", 72 parse_ro_chipname("MSM8930")); 73 EXPECT_EQ("Qualcomm MSM8930AB", 74 parse_ro_chipname("MSM8930AB")); 75 EXPECT_EQ("Qualcomm MSM8930VV", 76 parse_ro_chipname("MSM8930VV")); 77 EXPECT_EQ("Qualcomm MSM8939", 78 parse_ro_chipname("MSM8939")); 79 EXPECT_EQ("Qualcomm MSM8952", 80 parse_ro_chipname("MSM8952")); 81 EXPECT_EQ("Qualcomm MSM8953", 82 parse_ro_chipname("MSM8953")); 83 EXPECT_EQ("Qualcomm MSM8960", 84 parse_ro_chipname("MSM8960", 2)); 85 EXPECT_EQ("Qualcomm MSM8974", 86 parse_ro_chipname("MSM8974")); 87 EXPECT_EQ("Qualcomm MSM8974PRO", 88 parse_ro_chipname("MSM8974PRO")); 89 EXPECT_EQ("Qualcomm MSM8976", 90 parse_ro_chipname("MSM8976")); 91 EXPECT_EQ("Qualcomm MSM8996", 92 parse_ro_chipname("MSM8996", 4)); 93 EXPECT_EQ("Qualcomm MSM8998", 94 parse_ro_chipname("MSM8998")); 95 } 96 97 TEST(RO_CHIPNAME, qualcomm_apq) { 98 EXPECT_EQ("Qualcomm APQ8016", 99 parse_ro_chipname("APQ8016")); 100 EXPECT_EQ("Qualcomm APQ8026", 101 parse_ro_chipname("APQ8026")); 102 EXPECT_EQ("Qualcomm APQ8064", 103 parse_ro_chipname("apq8064")); 104 EXPECT_EQ("Qualcomm APQ8074", 105 parse_ro_chipname("APQ8074")); 106 EXPECT_EQ("Qualcomm APQ8076", 107 parse_ro_chipname("APQ8076")); 108 EXPECT_EQ("Qualcomm APQ8084", 109 parse_ro_chipname("APQ8084")); 110 } 111 112 TEST(RO_CHIPNAME, mediatek_mt) { 113 EXPECT_EQ("MediaTek MT6737T", 114 parse_ro_chipname("MT6737T")); 115 EXPECT_EQ("MediaTek MT6757", 116 parse_ro_chipname("MT6757")); 117 } 118 119 TEST(RO_CHIPNAME, samsung_exynos) { 120 EXPECT_EQ("Samsung Exynos 3470", 121 parse_ro_chipname("exynos3470")); 122 EXPECT_EQ("Samsung Exynos 3475", 123 parse_ro_chipname("exynos3475")); 124 EXPECT_EQ("Samsung Exynos 4415", 125 parse_ro_chipname("exynos4415")); 126 EXPECT_EQ("Samsung Exynos 5260", 127 parse_ro_chipname("exynos5260")); 128 EXPECT_EQ("Samsung Exynos 5410", 129 parse_ro_chipname("exynos5410")); 130 EXPECT_EQ("Samsung Exynos 5420", 131 parse_ro_chipname("exynos5420", 4)); 132 EXPECT_EQ("Samsung Exynos 5422", 133 parse_ro_chipname("exynos5422")); 134 EXPECT_EQ("Samsung Exynos 5430", 135 parse_ro_chipname("exynos5430")); 136 EXPECT_EQ("Samsung Exynos 5433", 137 parse_ro_chipname("exynos5433")); 138 EXPECT_EQ("Samsung Exynos 7420", 139 parse_ro_chipname("exynos7420")); 140 EXPECT_EQ("Samsung Exynos 7570", 141 parse_ro_chipname("exynos7570")); 142 EXPECT_EQ("Samsung Exynos 7578", 143 parse_ro_chipname("exynos7580", 4)); 144 EXPECT_EQ("Samsung Exynos 7580", 145 parse_ro_chipname("exynos7580", 8)); 146 EXPECT_EQ("Samsung Exynos 7870", 147 parse_ro_chipname("exynos7870")); 148 EXPECT_EQ("Samsung Exynos 7880", 149 parse_ro_chipname("exynos7880")); 150 EXPECT_EQ("Samsung Exynos 8890", 151 parse_ro_chipname("exynos8890")); 152 EXPECT_EQ("Samsung Exynos 8895", 153 parse_ro_chipname("exynos8895")); 154 } 155 156 #if CPUINFO_ARCH_ARM 157 TEST(RO_CHIPNAME, marvell_pxa) { 158 EXPECT_EQ("Marvell PXA1088", 159 parse_ro_chipname("PXA1088")); 160 EXPECT_EQ("Marvell PXA986", 161 parse_ro_chipname("PXA986")); 162 } 163 164 TEST(RO_CHIPNAME, renesas) { 165 EXPECT_EQ("Renesas MP5232", 166 parse_ro_chipname("mp523x")); 167 } 168 #endif /* CPUINFO_ARCH_ARM */ 169 170 TEST(RO_CHIPNAME, spreadtrum) { 171 EXPECT_EQ("Spreadtrum SC6815AS", 172 parse_ro_chipname("SC6815AS")); 173 EXPECT_EQ("Spreadtrum SC7715A", 174 parse_ro_chipname("SC7715A")); 175 EXPECT_EQ("Spreadtrum SC7715T", 176 parse_ro_chipname("SC7715T")); 177 EXPECT_EQ("Spreadtrum SC7727S", 178 parse_ro_chipname("SC7727S")); 179 EXPECT_EQ("Spreadtrum SC7727S", 180 parse_ro_chipname("sc7727s")); 181 EXPECT_EQ("Spreadtrum SC7727SE", 182 parse_ro_chipname("SC7727SE")); 183 EXPECT_EQ("Spreadtrum SC7730S", 184 parse_ro_chipname("sc7730s")); 185 EXPECT_EQ("Spreadtrum SC7730SE", 186 parse_ro_chipname("SC7730SE")); 187 EXPECT_EQ("Spreadtrum SC7730SW", 188 parse_ro_chipname("SC7730SW")); 189 EXPECT_EQ("Spreadtrum SC7735S", 190 parse_ro_chipname("sc7735s")); 191 EXPECT_EQ("Spreadtrum SC9830I", 192 parse_ro_chipname("SC9830I")); 193 } 194