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_board_platform(
12 const char platform[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_board_platform(std::string platform,uint32_t cores=1,uint32_t max_cpu_freq_max=0)17 inline std::string parse_ro_board_platform(std::string platform, uint32_t cores = 1, uint32_t max_cpu_freq_max = 0) {
18 char platform_buffer[CPUINFO_BUILD_PROP_VALUE_MAX];
19 strncpy(platform_buffer, platform.c_str(), CPUINFO_BUILD_PROP_VALUE_MAX);
20 char chipset_name[CPUINFO_ARM_CHIPSET_NAME_MAX];
21 cpuinfo_arm_android_parse_ro_board_platform(platform_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_BOARD_PLATFORM,qualcomm_msm)25 TEST(RO_BOARD_PLATFORM, qualcomm_msm) {
26 EXPECT_EQ("Qualcomm APQ8064", parse_ro_board_platform("msm8960", 4));
27 EXPECT_EQ("Qualcomm MSM7627A", parse_ro_board_platform("msm7627a"));
28 EXPECT_EQ("Qualcomm MSM8084", parse_ro_board_platform("msm8084"));
29 EXPECT_EQ("Qualcomm MSM8226", parse_ro_board_platform("msm8226"));
30 #if CPUINFO_ARCH_ARM
31 EXPECT_EQ("Qualcomm MSM8610", parse_ro_board_platform("msm8610", 2));
32 EXPECT_EQ("Qualcomm MSM8612", parse_ro_board_platform("msm8610", 4));
33 #endif /* CPUINFO_ARCH_ARM */
34 EXPECT_EQ("Qualcomm MSM8612", parse_ro_board_platform("MSM8612"));
35 EXPECT_EQ("Qualcomm MSM8660", parse_ro_board_platform("msm8660"));
36 EXPECT_EQ("Qualcomm MSM8909", parse_ro_board_platform("msm8909"));
37 EXPECT_EQ("Qualcomm MSM8916", parse_ro_board_platform("msm8916", 4));
38 EXPECT_EQ("Qualcomm MSM8917", parse_ro_board_platform("msm8937", 4));
39 EXPECT_EQ("Qualcomm MSM8937", parse_ro_board_platform("msm8937", 8));
40 EXPECT_EQ("Qualcomm MSM8939", parse_ro_board_platform("msm8916", 8));
41 EXPECT_EQ("Qualcomm MSM8952", parse_ro_board_platform("msm8952"));
42 EXPECT_EQ("Qualcomm MSM8953", parse_ro_board_platform("msm8953"));
43 EXPECT_EQ("Qualcomm MSM8960", parse_ro_board_platform("msm8960", 2));
44 EXPECT_EQ("Qualcomm MSM8974", parse_ro_board_platform("msm8974"));
45 EXPECT_EQ("Qualcomm MSM8992", parse_ro_board_platform("msm8992"));
46 EXPECT_EQ("Qualcomm MSM8994", parse_ro_board_platform("msm8994"));
47 EXPECT_EQ("Qualcomm MSM8996", parse_ro_board_platform("msm8996", 4));
48 EXPECT_EQ("Qualcomm MSM8998", parse_ro_board_platform("msm8998"));
49 }
50
TEST(RO_BOARD_PLATFORM,qualcomm_apq)51 TEST(RO_BOARD_PLATFORM, qualcomm_apq) {
52 EXPECT_EQ("Qualcomm APQ8084", parse_ro_board_platform("apq8084"));
53 }
54
TEST(RO_BOARD_PLATFORM,mediatek_mt)55 TEST(RO_BOARD_PLATFORM, mediatek_mt) {
56 EXPECT_EQ("MediaTek MT5861", parse_ro_board_platform("mt5861"));
57 EXPECT_EQ("MediaTek MT5882", parse_ro_board_platform("mt5882"));
58 EXPECT_EQ("MediaTek MT6570", parse_ro_board_platform("mt6570"));
59 EXPECT_EQ("MediaTek MT6572", parse_ro_board_platform("mt6572"));
60 EXPECT_EQ("MediaTek MT6572A", parse_ro_board_platform("MT6572A"));
61 EXPECT_EQ("MediaTek MT6575", parse_ro_board_platform("mt6575"));
62 EXPECT_EQ("MediaTek MT6577", parse_ro_board_platform("MT6577"));
63 EXPECT_EQ("MediaTek MT6577", parse_ro_board_platform("mt6577"));
64 EXPECT_EQ("MediaTek MT6580", parse_ro_board_platform("mt6580"));
65 EXPECT_EQ("MediaTek MT6582", parse_ro_board_platform("MTK6582"));
66 EXPECT_EQ("MediaTek MT6582", parse_ro_board_platform("mt6582"));
67 EXPECT_EQ("MediaTek MT6582M", parse_ro_board_platform("MTK6582M"));
68 EXPECT_EQ("MediaTek MT6589", parse_ro_board_platform("MT6589"));
69 EXPECT_EQ("MediaTek MT6589", parse_ro_board_platform("MTK6589"));
70 EXPECT_EQ("MediaTek MT6592", parse_ro_board_platform("mt6592"));
71 EXPECT_EQ("MediaTek MT6592T", parse_ro_board_platform("MTK6592T"));
72 EXPECT_EQ("MediaTek MT6595", parse_ro_board_platform("mt6595"));
73 EXPECT_EQ("MediaTek MT6732", parse_ro_board_platform("mt6752", 4));
74 EXPECT_EQ("MediaTek MT6735", parse_ro_board_platform("mt6735"));
75 EXPECT_EQ("MediaTek MT6735M", parse_ro_board_platform("mt6735m"));
76 EXPECT_EQ("MediaTek MT6737", parse_ro_board_platform("mt6737"));
77 EXPECT_EQ("MediaTek MT6737M", parse_ro_board_platform("mt6737m"));
78 EXPECT_EQ("MediaTek MT6737T", parse_ro_board_platform("mt6737t"));
79 EXPECT_EQ("MediaTek MT6750", parse_ro_board_platform("mt6750"));
80 EXPECT_EQ("MediaTek MT6752", parse_ro_board_platform("mt6752", 8));
81 EXPECT_EQ("MediaTek MT6753", parse_ro_board_platform("mt6753"));
82 EXPECT_EQ("MediaTek MT6755", parse_ro_board_platform("mt6755"));
83 EXPECT_EQ("MediaTek MT6757", parse_ro_board_platform("mt6757"));
84 EXPECT_EQ("MediaTek MT6795", parse_ro_board_platform("mt6795"));
85 EXPECT_EQ("MediaTek MT6797", parse_ro_board_platform("mt6797"));
86 EXPECT_EQ("MediaTek MT8111", parse_ro_board_platform("MT8111"));
87 EXPECT_EQ("MediaTek MT8127", parse_ro_board_platform("MT8127"));
88 EXPECT_EQ("MediaTek MT8127", parse_ro_board_platform("mt8127"));
89 EXPECT_EQ("MediaTek MT8135", parse_ro_board_platform("mt8135"));
90 EXPECT_EQ("MediaTek MT8151", parse_ro_board_platform("mt8151"));
91 EXPECT_EQ("MediaTek MT8163", parse_ro_board_platform("mt8163"));
92 EXPECT_EQ("MediaTek MT8167", parse_ro_board_platform("mt8167"));
93 EXPECT_EQ("MediaTek MT8173", parse_ro_board_platform("mt8173"));
94 EXPECT_EQ("MediaTek MT8312", parse_ro_board_platform("MT8312"));
95 EXPECT_EQ("MediaTek MT8382", parse_ro_board_platform("MT8382"));
96 EXPECT_EQ("MediaTek MT8382V", parse_ro_board_platform("MT8382V"));
97 EXPECT_EQ("MediaTek MT8392", parse_ro_board_platform("MT8392"));
98 }
99
TEST(RO_BOARD_PLATFORM,samsung)100 TEST(RO_BOARD_PLATFORM, samsung) {
101 EXPECT_EQ("Samsung Exynos 4412", parse_ro_board_platform("exynos4412"));
102 }
103
TEST(RO_BOARD_PLATFORM,hisilicon)104 TEST(RO_BOARD_PLATFORM, hisilicon) {
105 #if CPUINFO_ARCH_ARM
106 EXPECT_EQ("HiSilicon K3V2", parse_ro_board_platform("k3v200"));
107 EXPECT_EQ("HiSilicon K3V2", parse_ro_board_platform("k3v2oem1"));
108 #endif
109 EXPECT_EQ("HiSilicon Kirin 620", parse_ro_board_platform("hi6210sft"));
110 EXPECT_EQ("HiSilicon Kirin 650", parse_ro_board_platform("hi6250"));
111 #if CPUINFO_ARCH_ARM
112 EXPECT_EQ("HiSilicon Kirin 910T", parse_ro_board_platform("hi6620oem"));
113 EXPECT_EQ("HiSilicon Kirin 920", parse_ro_board_platform("hi3630"));
114 #endif
115 EXPECT_EQ("HiSilicon Kirin 930", parse_ro_board_platform("hi3635"));
116 EXPECT_EQ("HiSilicon Kirin 950", parse_ro_board_platform("hi3650"));
117 EXPECT_EQ("HiSilicon Kirin 960", parse_ro_board_platform("hi3660"));
118 EXPECT_EQ("HiSilicon Kirin 970", parse_ro_board_platform("kirin970"));
119 }
120
TEST(RO_BOARD_PLATFORM,amlogic)121 TEST(RO_BOARD_PLATFORM, amlogic) {
122 #if CPUINFO_ARCH_ARM
123 EXPECT_EQ("Amlogic AML8726-M", parse_ro_board_platform("meson3"));
124 EXPECT_EQ("Amlogic AML8726-MX", parse_ro_board_platform("meson6"));
125 EXPECT_EQ("Amlogic S805", parse_ro_board_platform("meson8"));
126 #endif /* CPUINFO_ARCH_ARM */
127 EXPECT_EQ("Amlogic S905", parse_ro_board_platform("gxbaby"));
128 EXPECT_EQ("Amlogic S905X", parse_ro_board_platform("gxl"));
129 EXPECT_EQ("Amlogic S912", parse_ro_board_platform("gxm"));
130 }
131
132 #if CPUINFO_ARCH_ARM
TEST(RO_BOARD_PLATFORM,broadcom)133 TEST(RO_BOARD_PLATFORM, broadcom) {
134 EXPECT_EQ("Broadcom BCM21654", parse_ro_board_platform("rhea", 1, 849999));
135 EXPECT_EQ("Broadcom BCM21654G", parse_ro_board_platform("rhea", 1, 999999));
136 EXPECT_EQ("Broadcom BCM21663", parse_ro_board_platform("hawaii", 1, 999999));
137 EXPECT_EQ("Broadcom BCM21664", parse_ro_board_platform("hawaii", 2, 999999));
138 EXPECT_EQ("Broadcom BCM21664T", parse_ro_board_platform("hawaii", 2, 1200000));
139 EXPECT_EQ("Broadcom BCM23550", parse_ro_board_platform("java", 4, 1200000));
140 EXPECT_EQ("Broadcom BCM28155", parse_ro_board_platform("capri", 2, 1200000));
141 EXPECT_EQ("Broadcom BCM28155", parse_ro_board_platform("capri", 2, 1399999));
142 }
143
TEST(RO_BOARD_PLATFORM,leadcore)144 TEST(RO_BOARD_PLATFORM, leadcore) {
145 EXPECT_EQ("Leadcore LC1860", parse_ro_board_platform("lc1860"));
146 }
147
TEST(RO_BOARD_PLATFORM,novathor)148 TEST(RO_BOARD_PLATFORM, novathor) {
149 EXPECT_EQ("NovaThor U8500", parse_ro_board_platform("montblanc"));
150 }
151 #endif /* CPUINFO_ARCH_ARM */
152
TEST(RO_BOARD_PLATFORM,nvidia)153 TEST(RO_BOARD_PLATFORM, nvidia) {
154 #if CPUINFO_ARCH_ARM
155 EXPECT_EQ("Nvidia Tegra T114", parse_ro_board_platform("tegra4"));
156 #endif /* CPUINFO_ARCH_ARM */
157 EXPECT_EQ("Nvidia Tegra T132", parse_ro_board_platform("tegra132"));
158 EXPECT_EQ("Nvidia Tegra T210", parse_ro_board_platform("tegra210_dragon"));
159 }
160
TEST(RO_BOARD_PLATFORM,pinecone)161 TEST(RO_BOARD_PLATFORM, pinecone) {
162 EXPECT_EQ("Pinecone Surge S1", parse_ro_board_platform("song"));
163 }
164
TEST(RO_BOARD_PLATFORM,rockchip_rk)165 TEST(RO_BOARD_PLATFORM, rockchip_rk) {
166 EXPECT_EQ("Rockchip RK2928", parse_ro_board_platform("rk2928"));
167 EXPECT_EQ("Rockchip RK3026", parse_ro_board_platform("rk3026"));
168 EXPECT_EQ("Rockchip RK3066", parse_ro_board_platform("rk3066"));
169 EXPECT_EQ("Rockchip RK3188", parse_ro_board_platform("rk3188"));
170 EXPECT_EQ("Rockchip RK3228", parse_ro_board_platform("rk3228"));
171 #if CPUINFO_ARCH_ARM
172 EXPECT_EQ("Rockchip RK3229", parse_ro_board_platform("rk322x"));
173 #endif /* CPUINFO_ARCH_ARM */
174 EXPECT_EQ("Rockchip RK3288", parse_ro_board_platform("rk3288", 4));
175 EXPECT_EQ("Rockchip RK3399", parse_ro_board_platform("rk3288", 6));
176 EXPECT_EQ("Rockchip RK3328", parse_ro_board_platform("rk3328"));
177 EXPECT_EQ("Rockchip RK3368", parse_ro_board_platform("rk3368"));
178 EXPECT_EQ("Rockchip RK3399", parse_ro_board_platform("rk3399"));
179 }
180
TEST(RO_BOARD_PLATFORM,spreadtrum_sc)181 TEST(RO_BOARD_PLATFORM, spreadtrum_sc) {
182 EXPECT_EQ("Spreadtrum SC6820I", parse_ro_board_platform("sc6820i"));
183 EXPECT_EQ("Spreadtrum SC7731", parse_ro_board_platform("SC7731"));
184 EXPECT_EQ("Spreadtrum SC7731", parse_ro_board_platform("sc7731"));
185 EXPECT_EQ("Spreadtrum SC7731G", parse_ro_board_platform("sc7731g"));
186 EXPECT_EQ("Spreadtrum SC8810", parse_ro_board_platform("sc8810"));
187 EXPECT_EQ("Spreadtrum SC8825", parse_ro_board_platform("sc8825"));
188 EXPECT_EQ("Spreadtrum SC8830", parse_ro_board_platform("sc8830"));
189 }
190
191 #if CPUINFO_ARCH_ARM
TEST(RO_BOARD_PLATFORM,texas_instruments_omap)192 TEST(RO_BOARD_PLATFORM, texas_instruments_omap) {
193 EXPECT_EQ("Texas Instruments OMAP4430", parse_ro_board_platform("omap4", 2, 1008000));
194 }
195 #endif /* CPUINFO_ARCH_ARM */
196