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
parse_ro_chipname(std::string chipname,uint32_t cores=1,uint32_t max_cpu_freq_max=0)17 inline std::string parse_ro_chipname(std::string chipname, uint32_t cores = 1, uint32_t max_cpu_freq_max = 0) {
18 char chipname_buffer[CPUINFO_BUILD_PROP_VALUE_MAX];
19 strncpy(chipname_buffer, chipname.c_str(), CPUINFO_BUILD_PROP_VALUE_MAX);
20 char chipset_name[CPUINFO_ARM_CHIPSET_NAME_MAX];
21 cpuinfo_arm_android_parse_ro_chipname(chipname_buffer, cores, max_cpu_freq_max, chipset_name);
22 return std::string(chipset_name, strnlen(chipset_name, CPUINFO_ARM_CHIPSET_NAME_MAX));
23 }
24
TEST(RO_CHIPNAME,qualcomm_msm)25 TEST(RO_CHIPNAME, qualcomm_msm) {
26 EXPECT_EQ("Qualcomm MSM7630", parse_ro_chipname("MSM7630_SURF"));
27 EXPECT_EQ("Qualcomm MSM8210", parse_ro_chipname("MSM8210"));
28 EXPECT_EQ("Qualcomm MSM8226", parse_ro_chipname("MSM8226"));
29 EXPECT_EQ("Qualcomm MSM8228", parse_ro_chipname("MSM8228"));
30 EXPECT_EQ("Qualcomm MSM8230AB", parse_ro_chipname("MSM8230AB"));
31 EXPECT_EQ("Qualcomm MSM8230VV", parse_ro_chipname("MSM8230VV"));
32 EXPECT_EQ("Qualcomm MSM8239", parse_ro_chipname("MSM8239"));
33 EXPECT_EQ("Qualcomm MSM8260A", parse_ro_chipname("MSM8260A"));
34 EXPECT_EQ("Qualcomm MSM8274", parse_ro_chipname("MSM8274"));
35 EXPECT_EQ("Qualcomm MSM8610", parse_ro_chipname("MSM8610", 2));
36 EXPECT_EQ("Qualcomm MSM8626", parse_ro_chipname("MSM8626"));
37 EXPECT_EQ("Qualcomm MSM8660", parse_ro_chipname("MSM8660_SURF"));
38 EXPECT_EQ("Qualcomm MSM8674", parse_ro_chipname("MSM8674"));
39 EXPECT_EQ("Qualcomm MSM8674PRO", parse_ro_chipname("MSM8674PRO"));
40 EXPECT_EQ("Qualcomm MSM8916", parse_ro_chipname("MSM8216"));
41 EXPECT_EQ("Qualcomm MSM8916", parse_ro_chipname("MSM8916", 4));
42 EXPECT_EQ("Qualcomm MSM8916", parse_ro_chipname("msm8916", 4));
43 EXPECT_EQ("Qualcomm MSM8917", parse_ro_chipname("MSM8937", 4));
44 EXPECT_EQ("Qualcomm MSM8926", parse_ro_chipname("MSM8926"));
45 EXPECT_EQ("Qualcomm MSM8928", parse_ro_chipname("MSM8928"));
46 EXPECT_EQ("Qualcomm MSM8929", parse_ro_chipname("MSM8929"));
47 EXPECT_EQ("Qualcomm MSM8930", parse_ro_chipname("MSM8930"));
48 EXPECT_EQ("Qualcomm MSM8930AB", parse_ro_chipname("MSM8930AB"));
49 EXPECT_EQ("Qualcomm MSM8930VV", parse_ro_chipname("MSM8930VV"));
50 EXPECT_EQ("Qualcomm MSM8939", parse_ro_chipname("MSM8939"));
51 EXPECT_EQ("Qualcomm MSM8952", parse_ro_chipname("MSM8952"));
52 EXPECT_EQ("Qualcomm MSM8953", parse_ro_chipname("MSM8953"));
53 EXPECT_EQ("Qualcomm MSM8960", parse_ro_chipname("MSM8960", 2));
54 EXPECT_EQ("Qualcomm MSM8974", parse_ro_chipname("MSM8974"));
55 EXPECT_EQ("Qualcomm MSM8974PRO", parse_ro_chipname("MSM8974PRO"));
56 EXPECT_EQ("Qualcomm MSM8976", parse_ro_chipname("MSM8976"));
57 EXPECT_EQ("Qualcomm MSM8996", parse_ro_chipname("MSM8996", 4));
58 EXPECT_EQ("Qualcomm MSM8998", parse_ro_chipname("MSM8998"));
59 }
60
TEST(RO_CHIPNAME,qualcomm_apq)61 TEST(RO_CHIPNAME, qualcomm_apq) {
62 EXPECT_EQ("Qualcomm APQ8016", parse_ro_chipname("APQ8016"));
63 EXPECT_EQ("Qualcomm APQ8026", parse_ro_chipname("APQ8026"));
64 EXPECT_EQ("Qualcomm APQ8064", parse_ro_chipname("apq8064"));
65 EXPECT_EQ("Qualcomm APQ8074", parse_ro_chipname("APQ8074"));
66 EXPECT_EQ("Qualcomm APQ8076", parse_ro_chipname("APQ8076"));
67 EXPECT_EQ("Qualcomm APQ8084", parse_ro_chipname("APQ8084"));
68 }
69
TEST(RO_CHIPNAME,mediatek_mt)70 TEST(RO_CHIPNAME, mediatek_mt) {
71 EXPECT_EQ("MediaTek MT6737T", parse_ro_chipname("MT6737T"));
72 EXPECT_EQ("MediaTek MT6757", parse_ro_chipname("MT6757"));
73 }
74
TEST(RO_CHIPNAME,samsung_exynos)75 TEST(RO_CHIPNAME, samsung_exynos) {
76 EXPECT_EQ("Samsung Exynos 3470", parse_ro_chipname("exynos3470"));
77 EXPECT_EQ("Samsung Exynos 3475", parse_ro_chipname("exynos3475"));
78 EXPECT_EQ("Samsung Exynos 4415", parse_ro_chipname("exynos4415"));
79 EXPECT_EQ("Samsung Exynos 5260", parse_ro_chipname("exynos5260"));
80 EXPECT_EQ("Samsung Exynos 5410", parse_ro_chipname("exynos5410"));
81 EXPECT_EQ("Samsung Exynos 5420", parse_ro_chipname("exynos5420", 4));
82 EXPECT_EQ("Samsung Exynos 5422", parse_ro_chipname("exynos5422"));
83 EXPECT_EQ("Samsung Exynos 5430", parse_ro_chipname("exynos5430"));
84 EXPECT_EQ("Samsung Exynos 5433", parse_ro_chipname("exynos5433"));
85 EXPECT_EQ("Samsung Exynos 7420", parse_ro_chipname("exynos7420"));
86 EXPECT_EQ("Samsung Exynos 7570", parse_ro_chipname("exynos7570"));
87 EXPECT_EQ("Samsung Exynos 7578", parse_ro_chipname("exynos7580", 4));
88 EXPECT_EQ("Samsung Exynos 7580", parse_ro_chipname("exynos7580", 8));
89 EXPECT_EQ("Samsung Exynos 7870", parse_ro_chipname("exynos7870"));
90 EXPECT_EQ("Samsung Exynos 7880", parse_ro_chipname("exynos7880"));
91 EXPECT_EQ("Samsung Exynos 8890", parse_ro_chipname("exynos8890"));
92 EXPECT_EQ("Samsung Exynos 8895", parse_ro_chipname("exynos8895"));
93 }
94
95 #if CPUINFO_ARCH_ARM
TEST(RO_CHIPNAME,marvell_pxa)96 TEST(RO_CHIPNAME, marvell_pxa) {
97 EXPECT_EQ("Marvell PXA1088", parse_ro_chipname("PXA1088"));
98 EXPECT_EQ("Marvell PXA986", parse_ro_chipname("PXA986"));
99 }
100
TEST(RO_CHIPNAME,renesas)101 TEST(RO_CHIPNAME, renesas) {
102 EXPECT_EQ("Renesas MP5232", parse_ro_chipname("mp523x"));
103 }
104 #endif /* CPUINFO_ARCH_ARM */
105
TEST(RO_CHIPNAME,spreadtrum)106 TEST(RO_CHIPNAME, spreadtrum) {
107 EXPECT_EQ("Spreadtrum SC6815AS", parse_ro_chipname("SC6815AS"));
108 EXPECT_EQ("Spreadtrum SC7715A", parse_ro_chipname("SC7715A"));
109 EXPECT_EQ("Spreadtrum SC7715T", parse_ro_chipname("SC7715T"));
110 EXPECT_EQ("Spreadtrum SC7727S", parse_ro_chipname("SC7727S"));
111 EXPECT_EQ("Spreadtrum SC7727S", parse_ro_chipname("sc7727s"));
112 EXPECT_EQ("Spreadtrum SC7727SE", parse_ro_chipname("SC7727SE"));
113 EXPECT_EQ("Spreadtrum SC7730S", parse_ro_chipname("sc7730s"));
114 EXPECT_EQ("Spreadtrum SC7730SE", parse_ro_chipname("SC7730SE"));
115 EXPECT_EQ("Spreadtrum SC7730SW", parse_ro_chipname("SC7730SW"));
116 EXPECT_EQ("Spreadtrum SC7735S", parse_ro_chipname("sc7735s"));
117 EXPECT_EQ("Spreadtrum SC9830I", parse_ro_chipname("SC9830I"));
118 }
119