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(
18 std::string platform, uint32_t cores=1, uint32_t max_cpu_freq_max=0)
19 {
20 char platform_buffer[CPUINFO_BUILD_PROP_VALUE_MAX];
21 strncpy(platform_buffer, platform.c_str(), CPUINFO_BUILD_PROP_VALUE_MAX);
22 char chipset_name[CPUINFO_ARM_CHIPSET_NAME_MAX];
23 cpuinfo_arm_android_parse_ro_board_platform(
24 platform_buffer, cores, max_cpu_freq_max, chipset_name);
25 return std::string(chipset_name, strnlen(chipset_name, CPUINFO_ARM_CHIPSET_NAME_MAX));
26 }
27
TEST(RO_BOARD_PLATFORM,qualcomm_msm)28 TEST(RO_BOARD_PLATFORM, qualcomm_msm) {
29 EXPECT_EQ("Qualcomm APQ8064",
30 parse_ro_board_platform("msm8960", 4));
31 EXPECT_EQ("Qualcomm MSM7627A",
32 parse_ro_board_platform("msm7627a"));
33 EXPECT_EQ("Qualcomm MSM8084",
34 parse_ro_board_platform("msm8084"));
35 EXPECT_EQ("Qualcomm MSM8226",
36 parse_ro_board_platform("msm8226"));
37 #if CPUINFO_ARCH_ARM
38 EXPECT_EQ("Qualcomm MSM8610",
39 parse_ro_board_platform("msm8610", 2));
40 EXPECT_EQ("Qualcomm MSM8612",
41 parse_ro_board_platform("msm8610", 4));
42 #endif /* CPUINFO_ARCH_ARM */
43 EXPECT_EQ("Qualcomm MSM8612",
44 parse_ro_board_platform("MSM8612"));
45 EXPECT_EQ("Qualcomm MSM8660",
46 parse_ro_board_platform("msm8660"));
47 EXPECT_EQ("Qualcomm MSM8909",
48 parse_ro_board_platform("msm8909"));
49 EXPECT_EQ("Qualcomm MSM8916",
50 parse_ro_board_platform("msm8916", 4));
51 EXPECT_EQ("Qualcomm MSM8917",
52 parse_ro_board_platform("msm8937", 4));
53 EXPECT_EQ("Qualcomm MSM8937",
54 parse_ro_board_platform("msm8937", 8));
55 EXPECT_EQ("Qualcomm MSM8939",
56 parse_ro_board_platform("msm8916", 8));
57 EXPECT_EQ("Qualcomm MSM8952",
58 parse_ro_board_platform("msm8952"));
59 EXPECT_EQ("Qualcomm MSM8953",
60 parse_ro_board_platform("msm8953"));
61 EXPECT_EQ("Qualcomm MSM8960",
62 parse_ro_board_platform("msm8960", 2));
63 EXPECT_EQ("Qualcomm MSM8974",
64 parse_ro_board_platform("msm8974"));
65 EXPECT_EQ("Qualcomm MSM8992",
66 parse_ro_board_platform("msm8992"));
67 EXPECT_EQ("Qualcomm MSM8994",
68 parse_ro_board_platform("msm8994"));
69 EXPECT_EQ("Qualcomm MSM8996",
70 parse_ro_board_platform("msm8996", 4));
71 EXPECT_EQ("Qualcomm MSM8998",
72 parse_ro_board_platform("msm8998"));
73 }
74
TEST(RO_BOARD_PLATFORM,qualcomm_apq)75 TEST(RO_BOARD_PLATFORM, qualcomm_apq) {
76 EXPECT_EQ("Qualcomm APQ8084",
77 parse_ro_board_platform("apq8084"));
78 }
79
TEST(RO_BOARD_PLATFORM,mediatek_mt)80 TEST(RO_BOARD_PLATFORM, mediatek_mt) {
81 EXPECT_EQ("MediaTek MT5861",
82 parse_ro_board_platform("mt5861"));
83 EXPECT_EQ("MediaTek MT5882",
84 parse_ro_board_platform("mt5882"));
85 EXPECT_EQ("MediaTek MT6570",
86 parse_ro_board_platform("mt6570"));
87 EXPECT_EQ("MediaTek MT6572",
88 parse_ro_board_platform("mt6572"));
89 EXPECT_EQ("MediaTek MT6572A",
90 parse_ro_board_platform("MT6572A"));
91 EXPECT_EQ("MediaTek MT6575",
92 parse_ro_board_platform("mt6575"));
93 EXPECT_EQ("MediaTek MT6577",
94 parse_ro_board_platform("MT6577"));
95 EXPECT_EQ("MediaTek MT6577",
96 parse_ro_board_platform("mt6577"));
97 EXPECT_EQ("MediaTek MT6580",
98 parse_ro_board_platform("mt6580"));
99 EXPECT_EQ("MediaTek MT6582",
100 parse_ro_board_platform("MTK6582"));
101 EXPECT_EQ("MediaTek MT6582",
102 parse_ro_board_platform("mt6582"));
103 EXPECT_EQ("MediaTek MT6582M",
104 parse_ro_board_platform("MTK6582M"));
105 EXPECT_EQ("MediaTek MT6589",
106 parse_ro_board_platform("MT6589"));
107 EXPECT_EQ("MediaTek MT6589",
108 parse_ro_board_platform("MTK6589"));
109 EXPECT_EQ("MediaTek MT6592",
110 parse_ro_board_platform("mt6592"));
111 EXPECT_EQ("MediaTek MT6592T",
112 parse_ro_board_platform("MTK6592T"));
113 EXPECT_EQ("MediaTek MT6595",
114 parse_ro_board_platform("mt6595"));
115 EXPECT_EQ("MediaTek MT6732",
116 parse_ro_board_platform("mt6752", 4));
117 EXPECT_EQ("MediaTek MT6735",
118 parse_ro_board_platform("mt6735"));
119 EXPECT_EQ("MediaTek MT6735M",
120 parse_ro_board_platform("mt6735m"));
121 EXPECT_EQ("MediaTek MT6737",
122 parse_ro_board_platform("mt6737"));
123 EXPECT_EQ("MediaTek MT6737M",
124 parse_ro_board_platform("mt6737m"));
125 EXPECT_EQ("MediaTek MT6737T",
126 parse_ro_board_platform("mt6737t"));
127 EXPECT_EQ("MediaTek MT6750",
128 parse_ro_board_platform("mt6750"));
129 EXPECT_EQ("MediaTek MT6752",
130 parse_ro_board_platform("mt6752", 8));
131 EXPECT_EQ("MediaTek MT6753",
132 parse_ro_board_platform("mt6753"));
133 EXPECT_EQ("MediaTek MT6755",
134 parse_ro_board_platform("mt6755"));
135 EXPECT_EQ("MediaTek MT6757",
136 parse_ro_board_platform("mt6757"));
137 EXPECT_EQ("MediaTek MT6795",
138 parse_ro_board_platform("mt6795"));
139 EXPECT_EQ("MediaTek MT6797",
140 parse_ro_board_platform("mt6797"));
141 EXPECT_EQ("MediaTek MT8111",
142 parse_ro_board_platform("MT8111"));
143 EXPECT_EQ("MediaTek MT8127",
144 parse_ro_board_platform("MT8127"));
145 EXPECT_EQ("MediaTek MT8127",
146 parse_ro_board_platform("mt8127"));
147 EXPECT_EQ("MediaTek MT8135",
148 parse_ro_board_platform("mt8135"));
149 EXPECT_EQ("MediaTek MT8151",
150 parse_ro_board_platform("mt8151"));
151 EXPECT_EQ("MediaTek MT8163",
152 parse_ro_board_platform("mt8163"));
153 EXPECT_EQ("MediaTek MT8167",
154 parse_ro_board_platform("mt8167"));
155 EXPECT_EQ("MediaTek MT8173",
156 parse_ro_board_platform("mt8173"));
157 EXPECT_EQ("MediaTek MT8312",
158 parse_ro_board_platform("MT8312"));
159 EXPECT_EQ("MediaTek MT8382",
160 parse_ro_board_platform("MT8382"));
161 EXPECT_EQ("MediaTek MT8382V",
162 parse_ro_board_platform("MT8382V"));
163 EXPECT_EQ("MediaTek MT8392",
164 parse_ro_board_platform("MT8392"));
165 }
166
TEST(RO_BOARD_PLATFORM,samsung)167 TEST(RO_BOARD_PLATFORM, samsung) {
168 EXPECT_EQ("Samsung Exynos 4412",
169 parse_ro_board_platform("exynos4412"));
170 }
171
TEST(RO_BOARD_PLATFORM,hisilicon)172 TEST(RO_BOARD_PLATFORM, hisilicon) {
173 #if CPUINFO_ARCH_ARM
174 EXPECT_EQ("HiSilicon K3V2",
175 parse_ro_board_platform("k3v200"));
176 EXPECT_EQ("HiSilicon K3V2",
177 parse_ro_board_platform("k3v2oem1"));
178 #endif
179 EXPECT_EQ("HiSilicon Kirin 620",
180 parse_ro_board_platform("hi6210sft"));
181 EXPECT_EQ("HiSilicon Kirin 650",
182 parse_ro_board_platform("hi6250"));
183 #if CPUINFO_ARCH_ARM
184 EXPECT_EQ("HiSilicon Kirin 910T",
185 parse_ro_board_platform("hi6620oem"));
186 EXPECT_EQ("HiSilicon Kirin 920",
187 parse_ro_board_platform("hi3630"));
188 #endif
189 EXPECT_EQ("HiSilicon Kirin 930",
190 parse_ro_board_platform("hi3635"));
191 EXPECT_EQ("HiSilicon Kirin 950",
192 parse_ro_board_platform("hi3650"));
193 EXPECT_EQ("HiSilicon Kirin 960",
194 parse_ro_board_platform("hi3660"));
195 EXPECT_EQ("HiSilicon Kirin 970",
196 parse_ro_board_platform("kirin970"));
197 }
198
TEST(RO_BOARD_PLATFORM,amlogic)199 TEST(RO_BOARD_PLATFORM, amlogic) {
200 #if CPUINFO_ARCH_ARM
201 EXPECT_EQ("Amlogic AML8726-M",
202 parse_ro_board_platform("meson3"));
203 EXPECT_EQ("Amlogic AML8726-MX",
204 parse_ro_board_platform("meson6"));
205 EXPECT_EQ("Amlogic S805",
206 parse_ro_board_platform("meson8"));
207 #endif /* CPUINFO_ARCH_ARM */
208 EXPECT_EQ("Amlogic S905",
209 parse_ro_board_platform("gxbaby"));
210 EXPECT_EQ("Amlogic S905X",
211 parse_ro_board_platform("gxl"));
212 EXPECT_EQ("Amlogic S912",
213 parse_ro_board_platform("gxm"));
214 }
215
216 #if CPUINFO_ARCH_ARM
TEST(RO_BOARD_PLATFORM,broadcom)217 TEST(RO_BOARD_PLATFORM, broadcom) {
218 EXPECT_EQ("Broadcom BCM21654",
219 parse_ro_board_platform("rhea", 1, 849999));
220 EXPECT_EQ("Broadcom BCM21654G",
221 parse_ro_board_platform("rhea", 1, 999999));
222 EXPECT_EQ("Broadcom BCM21663",
223 parse_ro_board_platform("hawaii", 1, 999999));
224 EXPECT_EQ("Broadcom BCM21664",
225 parse_ro_board_platform("hawaii", 2, 999999));
226 EXPECT_EQ("Broadcom BCM21664T",
227 parse_ro_board_platform("hawaii", 2, 1200000));
228 EXPECT_EQ("Broadcom BCM23550",
229 parse_ro_board_platform("java", 4, 1200000));
230 EXPECT_EQ("Broadcom BCM28155",
231 parse_ro_board_platform("capri", 2, 1200000));
232 EXPECT_EQ("Broadcom BCM28155",
233 parse_ro_board_platform("capri", 2, 1399999));
234 }
235
TEST(RO_BOARD_PLATFORM,leadcore)236 TEST(RO_BOARD_PLATFORM, leadcore) {
237 EXPECT_EQ("Leadcore LC1860",
238 parse_ro_board_platform("lc1860"));
239 }
240
TEST(RO_BOARD_PLATFORM,novathor)241 TEST(RO_BOARD_PLATFORM, novathor) {
242 EXPECT_EQ("NovaThor U8500",
243 parse_ro_board_platform("montblanc"));
244 }
245 #endif /* CPUINFO_ARCH_ARM */
246
TEST(RO_BOARD_PLATFORM,nvidia)247 TEST(RO_BOARD_PLATFORM, nvidia) {
248 #if CPUINFO_ARCH_ARM
249 EXPECT_EQ("Nvidia Tegra T114",
250 parse_ro_board_platform("tegra4"));
251 #endif /* CPUINFO_ARCH_ARM */
252 EXPECT_EQ("Nvidia Tegra T132",
253 parse_ro_board_platform("tegra132"));
254 EXPECT_EQ("Nvidia Tegra T210",
255 parse_ro_board_platform("tegra210_dragon"));
256 }
257
TEST(RO_BOARD_PLATFORM,pinecone)258 TEST(RO_BOARD_PLATFORM, pinecone) {
259 EXPECT_EQ("Pinecone Surge S1",
260 parse_ro_board_platform("song"));
261 }
262
TEST(RO_BOARD_PLATFORM,rockchip_rk)263 TEST(RO_BOARD_PLATFORM, rockchip_rk) {
264 EXPECT_EQ("Rockchip RK2928",
265 parse_ro_board_platform("rk2928"));
266 EXPECT_EQ("Rockchip RK3026",
267 parse_ro_board_platform("rk3026"));
268 EXPECT_EQ("Rockchip RK3066",
269 parse_ro_board_platform("rk3066"));
270 EXPECT_EQ("Rockchip RK3188",
271 parse_ro_board_platform("rk3188"));
272 EXPECT_EQ("Rockchip RK3228",
273 parse_ro_board_platform("rk3228"));
274 #if CPUINFO_ARCH_ARM
275 EXPECT_EQ("Rockchip RK3229",
276 parse_ro_board_platform("rk322x"));
277 #endif /* CPUINFO_ARCH_ARM */
278 EXPECT_EQ("Rockchip RK3288",
279 parse_ro_board_platform("rk3288", 4));
280 EXPECT_EQ("Rockchip RK3399",
281 parse_ro_board_platform("rk3288", 6));
282 EXPECT_EQ("Rockchip RK3328",
283 parse_ro_board_platform("rk3328"));
284 EXPECT_EQ("Rockchip RK3368",
285 parse_ro_board_platform("rk3368"));
286 EXPECT_EQ("Rockchip RK3399",
287 parse_ro_board_platform("rk3399"));
288 }
289
TEST(RO_BOARD_PLATFORM,spreadtrum_sc)290 TEST(RO_BOARD_PLATFORM, spreadtrum_sc) {
291 EXPECT_EQ("Spreadtrum SC6820I",
292 parse_ro_board_platform("sc6820i"));
293 EXPECT_EQ("Spreadtrum SC7731",
294 parse_ro_board_platform("SC7731"));
295 EXPECT_EQ("Spreadtrum SC7731",
296 parse_ro_board_platform("sc7731"));
297 EXPECT_EQ("Spreadtrum SC7731G",
298 parse_ro_board_platform("sc7731g"));
299 EXPECT_EQ("Spreadtrum SC8810",
300 parse_ro_board_platform("sc8810"));
301 EXPECT_EQ("Spreadtrum SC8825",
302 parse_ro_board_platform("sc8825"));
303 EXPECT_EQ("Spreadtrum SC8830",
304 parse_ro_board_platform("sc8830"));
305 }
306
307 #if CPUINFO_ARCH_ARM
TEST(RO_BOARD_PLATFORM,texas_instruments_omap)308 TEST(RO_BOARD_PLATFORM, texas_instruments_omap) {
309 EXPECT_EQ("Texas Instruments OMAP4430",
310 parse_ro_board_platform("omap4", 2, 1008000));
311 }
312 #endif /* CPUINFO_ARCH_ARM */
313