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_product_board( 12 const char board[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_product_board( 18 std::string board, uint32_t cores=1, uint32_t max_cpu_freq_max=0) 19 { 20 char board_buffer[CPUINFO_BUILD_PROP_VALUE_MAX]; 21 strncpy(board_buffer, board.c_str(), CPUINFO_BUILD_PROP_VALUE_MAX); 22 char chipset_name[CPUINFO_ARM_CHIPSET_NAME_MAX]; 23 cpuinfo_arm_android_parse_ro_product_board( 24 board_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_PRODUCT_BOARD, qualcomm_msm) { 29 EXPECT_EQ("Qualcomm APQ8064", 30 parse_ro_product_board("MSM8960", 4)); 31 EXPECT_EQ("Qualcomm MSM7630", 32 parse_ro_product_board("MSM7630_SURF")); 33 EXPECT_EQ("Qualcomm MSM8209", 34 parse_ro_product_board("MSM8209")); 35 EXPECT_EQ("Qualcomm MSM8210", 36 parse_ro_product_board("MSM8210")); 37 EXPECT_EQ("Qualcomm MSM8212", 38 parse_ro_product_board("MSM8212")); 39 EXPECT_EQ("Qualcomm MSM8225", 40 parse_ro_product_board("MSM8225")); 41 EXPECT_EQ("Qualcomm MSM8226", 42 parse_ro_product_board("MSM8226")); 43 EXPECT_EQ("Qualcomm MSM8227", 44 parse_ro_product_board("MSM8227")); 45 EXPECT_EQ("Qualcomm MSM8228", 46 parse_ro_product_board("MSM8228")); 47 EXPECT_EQ("Qualcomm MSM8230", 48 parse_ro_product_board("MSM8230")); 49 EXPECT_EQ("Qualcomm MSM8260A", 50 parse_ro_product_board("MSM8260A")); 51 EXPECT_EQ("Qualcomm MSM8274", 52 parse_ro_product_board("MSM8274")); 53 #if CPUINFO_ARCH_ARM 54 EXPECT_EQ("Qualcomm MSM8610", 55 parse_ro_product_board("MSM8610", 2)); 56 EXPECT_EQ("Qualcomm MSM8612", 57 parse_ro_product_board("MSM8610", 4)); 58 #endif /* CPUINFO_ARCH_ARM */ 59 EXPECT_EQ("Qualcomm MSM8612", 60 parse_ro_product_board("MSM8612")); 61 EXPECT_EQ("Qualcomm MSM8625", 62 parse_ro_product_board("MSM8625")); 63 EXPECT_EQ("Qualcomm MSM8626", 64 parse_ro_product_board("MSM8626")); 65 EXPECT_EQ("Qualcomm MSM8660", 66 parse_ro_product_board("MSM8660_SURF")); 67 EXPECT_EQ("Qualcomm MSM8674", 68 parse_ro_product_board("MSM8674")); 69 EXPECT_EQ("Qualcomm MSM8909", 70 parse_ro_product_board("MSM8909")); 71 EXPECT_EQ("Qualcomm MSM8909", 72 parse_ro_product_board("msm8909")); 73 EXPECT_EQ("Qualcomm MSM8916", 74 parse_ro_product_board("MSM8216")); 75 EXPECT_EQ("Qualcomm MSM8916", 76 parse_ro_product_board("MSM8916", 4)); 77 EXPECT_EQ("Qualcomm MSM8916", 78 parse_ro_product_board("msm8916", 4)); 79 EXPECT_EQ("Qualcomm MSM8917", 80 parse_ro_product_board("MSM8917")); 81 EXPECT_EQ("Qualcomm MSM8917", 82 parse_ro_product_board("msm8937", 4)); 83 EXPECT_EQ("Qualcomm MSM8917", 84 parse_ro_product_board("msm8937_32", 4)); 85 EXPECT_EQ("Qualcomm MSM8926", 86 parse_ro_product_board("MSM8926")); 87 EXPECT_EQ("Qualcomm MSM8928", 88 parse_ro_product_board("MSM8928")); 89 EXPECT_EQ("Qualcomm MSM8929", 90 parse_ro_product_board("MSM8929")); 91 EXPECT_EQ("Qualcomm MSM8929", 92 parse_ro_product_board("msm8929")); 93 EXPECT_EQ("Qualcomm MSM8937", 94 parse_ro_product_board("MSM8937", 8)); 95 EXPECT_EQ("Qualcomm MSM8937", 96 parse_ro_product_board("msm8937", 8)); 97 EXPECT_EQ("Qualcomm MSM8937", 98 parse_ro_product_board("msm8937_32", 8)); 99 EXPECT_EQ("Qualcomm MSM8939", 100 parse_ro_product_board("MSM8916", 8)); 101 EXPECT_EQ("Qualcomm MSM8939", 102 parse_ro_product_board("MSM8939")); 103 EXPECT_EQ("Qualcomm MSM8939", 104 parse_ro_product_board("msm8916", 8)); 105 EXPECT_EQ("Qualcomm MSM8939", 106 parse_ro_product_board("msm8939")); 107 EXPECT_EQ("Qualcomm MSM8939", 108 parse_ro_product_board("msm8939_64")); 109 EXPECT_EQ("Qualcomm MSM8940", 110 parse_ro_product_board("MSM8940")); 111 EXPECT_EQ("Qualcomm MSM8952", 112 parse_ro_product_board("MSM8952")); 113 EXPECT_EQ("Qualcomm MSM8952", 114 parse_ro_product_board("msm8952")); 115 EXPECT_EQ("Qualcomm MSM8953", 116 parse_ro_product_board("msm8953")); 117 EXPECT_EQ("Qualcomm MSM8960", 118 parse_ro_product_board("MSM8960", 2)); 119 EXPECT_EQ("Qualcomm MSM8974", 120 parse_ro_product_board("MSM8974")); 121 EXPECT_EQ("Qualcomm MSM8974", 122 parse_ro_product_board("msm8974")); 123 EXPECT_EQ("Qualcomm MSM8976", 124 parse_ro_product_board("MSM8976")); 125 EXPECT_EQ("Qualcomm MSM8992", 126 parse_ro_product_board("MSM8992")); 127 EXPECT_EQ("Qualcomm MSM8992", 128 parse_ro_product_board("msm8992")); 129 EXPECT_EQ("Qualcomm MSM8994", 130 parse_ro_product_board("MSM8994")); 131 EXPECT_EQ("Qualcomm MSM8994", 132 parse_ro_product_board("msm8994")); 133 EXPECT_EQ("Qualcomm MSM8996", 134 parse_ro_product_board("msm8996", 4)); 135 EXPECT_EQ("Qualcomm MSM8998", 136 parse_ro_product_board("msm8998")); 137 } 138 139 TEST(RO_PRODUCT_BOARD, qualcomm_apq) { 140 EXPECT_EQ("Qualcomm APQ8064", 141 parse_ro_product_board("APQ8064")); 142 EXPECT_EQ("Qualcomm APQ8064A", 143 parse_ro_product_board("APQ8064A")); 144 EXPECT_EQ("Qualcomm APQ8064PRO", 145 parse_ro_product_board("APQ8064Pro")); 146 EXPECT_EQ("Qualcomm APQ8084", 147 parse_ro_product_board("APQ8084")); 148 } 149 150 TEST(RO_PRODUCT_BOARD, qualcomm_special) { 151 EXPECT_EQ("Qualcomm MSM8996PRO-AB", 152 parse_ro_product_board("marlin")); 153 EXPECT_EQ("Qualcomm MSM8996PRO-AB", 154 parse_ro_product_board("sailfish")); 155 } 156 157 TEST(RO_PRODUCT_BOARD, mediatek_mt) { 158 EXPECT_EQ("MediaTek MT5861", 159 parse_ro_product_board("mt5861")); 160 EXPECT_EQ("MediaTek MT5882", 161 parse_ro_product_board("mt5882")); 162 EXPECT_EQ("MediaTek MT6572", 163 parse_ro_product_board("mt6572")); 164 EXPECT_EQ("MediaTek MT6572M", 165 parse_ro_product_board("MT6572M")); 166 EXPECT_EQ("MediaTek MT6575", 167 parse_ro_product_board("MTK6575")); 168 EXPECT_EQ("MediaTek MT6575", 169 parse_ro_product_board("mt6575")); 170 EXPECT_EQ("MediaTek MT6577", 171 parse_ro_product_board("MTK6577")); 172 EXPECT_EQ("MediaTek MT6577", 173 parse_ro_product_board("mt6577")); 174 EXPECT_EQ("MediaTek MT6580", 175 parse_ro_product_board("MT6580")); 176 EXPECT_EQ("MediaTek MT6580", 177 parse_ro_product_board("mt6580")); 178 EXPECT_EQ("MediaTek MT6580A", 179 parse_ro_product_board("MT6580A")); 180 EXPECT_EQ("MediaTek MT6580M", 181 parse_ro_product_board("MT6580M")); 182 EXPECT_EQ("MediaTek MT6582", 183 parse_ro_product_board("MT6582")); 184 EXPECT_EQ("MediaTek MT6582", 185 parse_ro_product_board("mt6582")); 186 EXPECT_EQ("MediaTek MT6582M", 187 parse_ro_product_board("MTK6582M")); 188 EXPECT_EQ("MediaTek MT6582V", 189 parse_ro_product_board("MT6582V")); 190 EXPECT_EQ("MediaTek MT6582W", 191 parse_ro_product_board("MT6582W")); 192 EXPECT_EQ("MediaTek MT6589", 193 parse_ro_product_board("MT6589")); 194 EXPECT_EQ("MediaTek MT6589T", 195 parse_ro_product_board("MT6589T")); 196 EXPECT_EQ("MediaTek MT6592", 197 parse_ro_product_board("MT6592")); 198 EXPECT_EQ("MediaTek MT6592", 199 parse_ro_product_board("mt6592")); 200 EXPECT_EQ("MediaTek MT6592M", 201 parse_ro_product_board("MT6592M")); 202 EXPECT_EQ("MediaTek MT6595", 203 parse_ro_product_board("MT6595")); 204 EXPECT_EQ("MediaTek MT6732", 205 parse_ro_product_board("MT6732")); 206 EXPECT_EQ("MediaTek MT6735", 207 parse_ro_product_board("MT6735")); 208 EXPECT_EQ("MediaTek MT6735", 209 parse_ro_product_board("mt6735")); 210 EXPECT_EQ("MediaTek MT6735M", 211 parse_ro_product_board("MT6735M")); 212 EXPECT_EQ("MediaTek MT6735M", 213 parse_ro_product_board("mt6735m")); 214 EXPECT_EQ("MediaTek MT6735P", 215 parse_ro_product_board("MT6735P")); 216 EXPECT_EQ("MediaTek MT6735V", 217 parse_ro_product_board("MT6735V")); 218 EXPECT_EQ("MediaTek MT6737", 219 parse_ro_product_board("MT6737")); 220 EXPECT_EQ("MediaTek MT6737M", 221 parse_ro_product_board("mt6737m")); 222 EXPECT_EQ("MediaTek MT6737T", 223 parse_ro_product_board("MT6737T")); 224 EXPECT_EQ("MediaTek MT6750", 225 parse_ro_product_board("MT6750")); 226 EXPECT_EQ("MediaTek MT6750", 227 parse_ro_product_board("mt6750")); 228 EXPECT_EQ("MediaTek MT6752", 229 parse_ro_product_board("MT6752", 8)); 230 EXPECT_EQ("MediaTek MT6753", 231 parse_ro_product_board("MT6753")); 232 EXPECT_EQ("MediaTek MT6753", 233 parse_ro_product_board("mt6753")); 234 EXPECT_EQ("MediaTek MT6755", 235 parse_ro_product_board("mt6755")); 236 EXPECT_EQ("MediaTek MT6755M", 237 parse_ro_product_board("MT6755M")); 238 EXPECT_EQ("MediaTek MT6757", 239 parse_ro_product_board("MT6757")); 240 EXPECT_EQ("MediaTek MT6795", 241 parse_ro_product_board("mt6795")); 242 EXPECT_EQ("MediaTek MT6797", 243 parse_ro_product_board("MT6797")); 244 EXPECT_EQ("MediaTek MT8127", 245 parse_ro_product_board("mt8127")); 246 EXPECT_EQ("MediaTek MT8151", 247 parse_ro_product_board("mt8151")); 248 EXPECT_EQ("MediaTek MT8163", 249 parse_ro_product_board("mt8163")); 250 EXPECT_EQ("MediaTek MT8312", 251 parse_ro_product_board("MT8312")); 252 EXPECT_EQ("MediaTek MT8321", 253 parse_ro_product_board("MT8321")); 254 EXPECT_EQ("MediaTek MT8382", 255 parse_ro_product_board("MT8382")); 256 EXPECT_EQ("MediaTek MT8382V", 257 parse_ro_product_board("MT8382V")); 258 EXPECT_EQ("MediaTek MT8389", 259 parse_ro_product_board("MT8389")); 260 EXPECT_EQ("MediaTek MT8735M", 261 parse_ro_product_board("MT8735m")); 262 EXPECT_EQ("MediaTek MT8735P", 263 parse_ro_product_board("MT8735P")); 264 EXPECT_EQ("MediaTek MT8783", 265 parse_ro_product_board("MT8783")); 266 } 267 268 TEST(RO_PRODUCT_BOARD, samsung_universal) { 269 EXPECT_EQ("Samsung Exynos 3470", 270 parse_ro_product_board("universal3470")); 271 EXPECT_EQ("Samsung Exynos 3475", 272 parse_ro_product_board("universal3475")); 273 EXPECT_EQ("Samsung Exynos 4415", 274 parse_ro_product_board("universal4415")); 275 EXPECT_EQ("Samsung Exynos 5260", 276 parse_ro_product_board("universal5260")); 277 EXPECT_EQ("Samsung Exynos 5410", 278 parse_ro_product_board("universal5410")); 279 EXPECT_EQ("Samsung Exynos 5420", 280 parse_ro_product_board("universal5420", 4)); 281 EXPECT_EQ("Samsung Exynos 5422", 282 parse_ro_product_board("universal5422")); 283 EXPECT_EQ("Samsung Exynos 5430", 284 parse_ro_product_board("universal5430")); 285 EXPECT_EQ("Samsung Exynos 5433", 286 parse_ro_product_board("universal5433")); 287 EXPECT_EQ("Samsung Exynos 7420", 288 parse_ro_product_board("universal7420")); 289 EXPECT_EQ("Samsung Exynos 7570", 290 parse_ro_product_board("universal7570")); 291 EXPECT_EQ("Samsung Exynos 7578", 292 parse_ro_product_board("universal7580", 4)); 293 EXPECT_EQ("Samsung Exynos 7580", 294 parse_ro_product_board("universal7580", 8)); 295 EXPECT_EQ("Samsung Exynos 7870", 296 parse_ro_product_board("universal7870")); 297 EXPECT_EQ("Samsung Exynos 7880", 298 parse_ro_product_board("universal7880")); 299 EXPECT_EQ("Samsung Exynos 8890", 300 parse_ro_product_board("universal8890")); 301 EXPECT_EQ("Samsung Exynos 8895", 302 parse_ro_product_board("universal8895")); 303 } 304 305 #if CPUINFO_ARCH_ARM 306 TEST(RO_PRODUCT_BOARD, samsung_smdk) { 307 EXPECT_EQ("Samsung Exynos 4212", 308 parse_ro_product_board("smdk4x12", 2)); 309 EXPECT_EQ("Samsung Exynos 4412", 310 parse_ro_product_board("smdk4x12", 4)); 311 } 312 #endif 313 314 TEST(RO_PRODUCT_BOARD, hisilicon_huawei) { 315 EXPECT_EQ("HiSilicon Kirin 659", 316 parse_ro_product_board("BAC")); 317 EXPECT_EQ("HiSilicon Kirin 950", 318 parse_ro_product_board("FRD")); 319 EXPECT_EQ("HiSilicon Kirin 950", 320 parse_ro_product_board("FRD-L09")); 321 EXPECT_EQ("HiSilicon Kirin 950", 322 parse_ro_product_board("NXT")); 323 EXPECT_EQ("HiSilicon Kirin 950", 324 parse_ro_product_board("NXT-AL10")); 325 EXPECT_EQ("HiSilicon Kirin 950", 326 parse_ro_product_board("NXT-L09")); 327 EXPECT_EQ("HiSilicon Kirin 950", 328 parse_ro_product_board("NXT-L29")); 329 EXPECT_EQ("HiSilicon Kirin 955", 330 parse_ro_product_board("EVA")); 331 EXPECT_EQ("HiSilicon Kirin 955", 332 parse_ro_product_board("EVA-AL10")); 333 EXPECT_EQ("HiSilicon Kirin 955", 334 parse_ro_product_board("EVA-L09")); 335 EXPECT_EQ("HiSilicon Kirin 955", 336 parse_ro_product_board("EVA-L19")); 337 EXPECT_EQ("HiSilicon Kirin 955", 338 parse_ro_product_board("VIE-L09")); 339 EXPECT_EQ("HiSilicon Kirin 955", 340 parse_ro_product_board("VIE-L29")); 341 EXPECT_EQ("HiSilicon Kirin 960", 342 parse_ro_product_board("DUK")); 343 EXPECT_EQ("HiSilicon Kirin 960", 344 parse_ro_product_board("LON")); 345 EXPECT_EQ("HiSilicon Kirin 960", 346 parse_ro_product_board("MHA")); 347 EXPECT_EQ("HiSilicon Kirin 960", 348 parse_ro_product_board("STF")); 349 EXPECT_EQ("HiSilicon Kirin 960", 350 parse_ro_product_board("VKY")); 351 EXPECT_EQ("HiSilicon Kirin 960", 352 parse_ro_product_board("VTR")); 353 } 354 355 TEST(RO_PRODUCT_BOARD, hisilicon_special) { 356 EXPECT_EQ("HiSilicon Kirin 620", 357 parse_ro_product_board("hi6210sft")); 358 EXPECT_EQ("HiSilicon Kirin 650", 359 parse_ro_product_board("hi6250")); 360 #if CPUINFO_ARCH_ARM 361 EXPECT_EQ("HiSilicon Kirin 920", 362 parse_ro_product_board("hi3630")); 363 #endif /* CPUINFO_ARCH_ARM */ 364 EXPECT_EQ("HiSilicon Kirin 930", 365 parse_ro_product_board("hi3635")); 366 EXPECT_EQ("HiSilicon Kirin 950", 367 parse_ro_product_board("hi3650")); 368 EXPECT_EQ("HiSilicon Kirin 960", 369 parse_ro_product_board("hi3660")); 370 EXPECT_EQ("HiSilicon Kirin 950", 371 parse_ro_product_board("BEETHOVEN")); 372 } 373 374 #if CPUINFO_ARCH_ARM 375 TEST(RO_PRODUCT_BOARD, broadcom) { 376 EXPECT_EQ("Broadcom BCM28155", 377 parse_ro_product_board("capri", 2, 1200000)); 378 EXPECT_EQ("Broadcom BCM28155", 379 parse_ro_product_board("capri", 2, 1300000)); 380 EXPECT_EQ("Broadcom BCM28155", 381 parse_ro_product_board("capri", 2, 1399999)); 382 EXPECT_EQ("Broadcom BCM28155", 383 parse_ro_product_board("capri", 2, 1399999)); 384 EXPECT_EQ("Broadcom BCM23550", 385 parse_ro_product_board("java", 4, 1200000)); 386 EXPECT_EQ("Broadcom BCM23550", 387 parse_ro_product_board("java", 4, 1300000)); 388 EXPECT_EQ("Broadcom BCM21654", 389 parse_ro_product_board("rhea", 1, 849999)); 390 EXPECT_EQ("Broadcom BCM21654G", 391 parse_ro_product_board("rhea", 1, 999999)); 392 EXPECT_EQ("Broadcom BCM21663", 393 parse_ro_product_board("hawaii", 1, 999999)); 394 EXPECT_EQ("Broadcom BCM21664", 395 parse_ro_product_board("hawaii", 2, 999999)); 396 EXPECT_EQ("Broadcom BCM21664T", 397 parse_ro_product_board("hawaii", 2, 1200000)); 398 } 399 400 TEST(RO_PRODUCT_BOARD, leadcore_lc) { 401 EXPECT_EQ("Leadcore LC1810", 402 parse_ro_product_board("lc1810")); 403 } 404 405 TEST(RO_PRODUCT_BOARD, marvell_pxa) { 406 EXPECT_EQ("Marvell PXA1088", 407 parse_ro_product_board("PXA1088")); 408 EXPECT_EQ("Marvell PXA986", 409 parse_ro_product_board("PXA986")); 410 EXPECT_EQ("Marvell PXA988", 411 parse_ro_product_board("PXA988")); 412 } 413 414 TEST(RO_PRODUCT_BOARD, nvidia) { 415 EXPECT_EQ("Nvidia Tegra SL460N", 416 parse_ro_product_board("g2mv")); 417 EXPECT_EQ("Nvidia Tegra T132", 418 parse_ro_product_board("flounder")); 419 EXPECT_EQ("Nvidia Tegra T210", 420 parse_ro_product_board("dragon")); 421 EXPECT_EQ("Nvidia Tegra T30L", 422 parse_ro_product_board("grouper")); 423 } 424 425 TEST(RO_PRODUCT_BOARD, renesas) { 426 EXPECT_EQ("Renesas MP5232", 427 parse_ro_product_board("mp523x")); 428 } 429 430 TEST(RO_PRODUCT_BOARD, rockchip) { 431 EXPECT_EQ("Rockchip RK3066", 432 parse_ro_product_board("T7H")); 433 EXPECT_EQ("Rockchip RK3168", 434 parse_ro_product_board("hws7701u")); 435 EXPECT_EQ("Rockchip RK3188", 436 parse_ro_product_board("K00F")); 437 } 438 #endif 439 440 TEST(RO_PRODUCT_BOARD, spreadtrum) { 441 EXPECT_EQ("Spreadtrum SC6815AS", 442 parse_ro_product_board("SC6815AS")); 443 EXPECT_EQ("Spreadtrum SC7715", 444 parse_ro_product_board("SC7715")); 445 EXPECT_EQ("Spreadtrum SC7715A", 446 parse_ro_product_board("SC7715A")); 447 EXPECT_EQ("Spreadtrum SC7715T", 448 parse_ro_product_board("SC7715T")); 449 EXPECT_EQ("Spreadtrum SC7727S", 450 parse_ro_product_board("SC7727S")); 451 EXPECT_EQ("Spreadtrum SC7727S", 452 parse_ro_product_board("sc7727s")); 453 EXPECT_EQ("Spreadtrum SC7727SE", 454 parse_ro_product_board("SC7727SE")); 455 EXPECT_EQ("Spreadtrum SC7730S", 456 parse_ro_product_board("sc7730s")); 457 EXPECT_EQ("Spreadtrum SC7730SE", 458 parse_ro_product_board("SC7730SE")); 459 EXPECT_EQ("Spreadtrum SC7730SW", 460 parse_ro_product_board("SC7730SW")); 461 EXPECT_EQ("Spreadtrum SC7731", 462 parse_ro_product_board("SC7731")); 463 EXPECT_EQ("Spreadtrum SC7731C", 464 parse_ro_product_board("SC7731C")); 465 EXPECT_EQ("Spreadtrum SC7731G", 466 parse_ro_product_board("SC7731G")); 467 EXPECT_EQ("Spreadtrum SC7735S", 468 parse_ro_product_board("sc7735s")); 469 EXPECT_EQ("Spreadtrum SC9830A", 470 parse_ro_product_board("SC9830A")); 471 EXPECT_EQ("Spreadtrum SC9830I", 472 parse_ro_product_board("SC9830I")); 473 } 474 475 #if CPUINFO_ARCH_ARM 476 TEST(RO_PRODUCT_BOARD, texas_instruments) { 477 EXPECT_EQ("Texas Instruments OMAP4460", 478 parse_ro_product_board("tuna")); 479 } 480 #endif /* CPUINFO_ARCH_ARM */ 481