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
parse_ro_product_board(std::string board,uint32_t cores=1,uint32_t max_cpu_freq_max=0)17 inline std::string parse_ro_product_board(std::string board, uint32_t cores = 1, uint32_t max_cpu_freq_max = 0) {
18 char board_buffer[CPUINFO_BUILD_PROP_VALUE_MAX];
19 strncpy(board_buffer, board.c_str(), CPUINFO_BUILD_PROP_VALUE_MAX);
20 char chipset_name[CPUINFO_ARM_CHIPSET_NAME_MAX];
21 cpuinfo_arm_android_parse_ro_product_board(board_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_PRODUCT_BOARD,qualcomm_msm)25 TEST(RO_PRODUCT_BOARD, qualcomm_msm) {
26 EXPECT_EQ("Qualcomm APQ8064", parse_ro_product_board("MSM8960", 4));
27 EXPECT_EQ("Qualcomm MSM7630", parse_ro_product_board("MSM7630_SURF"));
28 EXPECT_EQ("Qualcomm MSM8209", parse_ro_product_board("MSM8209"));
29 EXPECT_EQ("Qualcomm MSM8210", parse_ro_product_board("MSM8210"));
30 EXPECT_EQ("Qualcomm MSM8212", parse_ro_product_board("MSM8212"));
31 EXPECT_EQ("Qualcomm MSM8225", parse_ro_product_board("MSM8225"));
32 EXPECT_EQ("Qualcomm MSM8226", parse_ro_product_board("MSM8226"));
33 EXPECT_EQ("Qualcomm MSM8227", parse_ro_product_board("MSM8227"));
34 EXPECT_EQ("Qualcomm MSM8228", parse_ro_product_board("MSM8228"));
35 EXPECT_EQ("Qualcomm MSM8230", parse_ro_product_board("MSM8230"));
36 EXPECT_EQ("Qualcomm MSM8260A", parse_ro_product_board("MSM8260A"));
37 EXPECT_EQ("Qualcomm MSM8274", parse_ro_product_board("MSM8274"));
38 #if CPUINFO_ARCH_ARM
39 EXPECT_EQ("Qualcomm MSM8610", parse_ro_product_board("MSM8610", 2));
40 EXPECT_EQ("Qualcomm MSM8612", parse_ro_product_board("MSM8610", 4));
41 #endif /* CPUINFO_ARCH_ARM */
42 EXPECT_EQ("Qualcomm MSM8612", parse_ro_product_board("MSM8612"));
43 EXPECT_EQ("Qualcomm MSM8625", parse_ro_product_board("MSM8625"));
44 EXPECT_EQ("Qualcomm MSM8626", parse_ro_product_board("MSM8626"));
45 EXPECT_EQ("Qualcomm MSM8660", parse_ro_product_board("MSM8660_SURF"));
46 EXPECT_EQ("Qualcomm MSM8674", parse_ro_product_board("MSM8674"));
47 EXPECT_EQ("Qualcomm MSM8909", parse_ro_product_board("MSM8909"));
48 EXPECT_EQ("Qualcomm MSM8909", parse_ro_product_board("msm8909"));
49 EXPECT_EQ("Qualcomm MSM8916", parse_ro_product_board("MSM8216"));
50 EXPECT_EQ("Qualcomm MSM8916", parse_ro_product_board("MSM8916", 4));
51 EXPECT_EQ("Qualcomm MSM8916", parse_ro_product_board("msm8916", 4));
52 EXPECT_EQ("Qualcomm MSM8917", parse_ro_product_board("MSM8917"));
53 EXPECT_EQ("Qualcomm MSM8917", parse_ro_product_board("msm8937", 4));
54 EXPECT_EQ("Qualcomm MSM8917", parse_ro_product_board("msm8937_32", 4));
55 EXPECT_EQ("Qualcomm MSM8926", parse_ro_product_board("MSM8926"));
56 EXPECT_EQ("Qualcomm MSM8928", parse_ro_product_board("MSM8928"));
57 EXPECT_EQ("Qualcomm MSM8929", parse_ro_product_board("MSM8929"));
58 EXPECT_EQ("Qualcomm MSM8929", parse_ro_product_board("msm8929"));
59 EXPECT_EQ("Qualcomm MSM8937", parse_ro_product_board("MSM8937", 8));
60 EXPECT_EQ("Qualcomm MSM8937", parse_ro_product_board("msm8937", 8));
61 EXPECT_EQ("Qualcomm MSM8937", parse_ro_product_board("msm8937_32", 8));
62 EXPECT_EQ("Qualcomm MSM8939", parse_ro_product_board("MSM8916", 8));
63 EXPECT_EQ("Qualcomm MSM8939", parse_ro_product_board("MSM8939"));
64 EXPECT_EQ("Qualcomm MSM8939", parse_ro_product_board("msm8916", 8));
65 EXPECT_EQ("Qualcomm MSM8939", parse_ro_product_board("msm8939"));
66 EXPECT_EQ("Qualcomm MSM8939", parse_ro_product_board("msm8939_64"));
67 EXPECT_EQ("Qualcomm MSM8940", parse_ro_product_board("MSM8940"));
68 EXPECT_EQ("Qualcomm MSM8952", parse_ro_product_board("MSM8952"));
69 EXPECT_EQ("Qualcomm MSM8952", parse_ro_product_board("msm8952"));
70 EXPECT_EQ("Qualcomm MSM8953", parse_ro_product_board("msm8953"));
71 EXPECT_EQ("Qualcomm MSM8960", parse_ro_product_board("MSM8960", 2));
72 EXPECT_EQ("Qualcomm MSM8974", parse_ro_product_board("MSM8974"));
73 EXPECT_EQ("Qualcomm MSM8974", parse_ro_product_board("msm8974"));
74 EXPECT_EQ("Qualcomm MSM8976", parse_ro_product_board("MSM8976"));
75 EXPECT_EQ("Qualcomm MSM8992", parse_ro_product_board("MSM8992"));
76 EXPECT_EQ("Qualcomm MSM8992", parse_ro_product_board("msm8992"));
77 EXPECT_EQ("Qualcomm MSM8994", parse_ro_product_board("MSM8994"));
78 EXPECT_EQ("Qualcomm MSM8994", parse_ro_product_board("msm8994"));
79 EXPECT_EQ("Qualcomm MSM8996", parse_ro_product_board("msm8996", 4));
80 EXPECT_EQ("Qualcomm MSM8998", parse_ro_product_board("msm8998"));
81 }
82
TEST(RO_PRODUCT_BOARD,qualcomm_apq)83 TEST(RO_PRODUCT_BOARD, qualcomm_apq) {
84 EXPECT_EQ("Qualcomm APQ8064", parse_ro_product_board("APQ8064"));
85 EXPECT_EQ("Qualcomm APQ8064A", parse_ro_product_board("APQ8064A"));
86 EXPECT_EQ("Qualcomm APQ8064PRO", parse_ro_product_board("APQ8064Pro"));
87 EXPECT_EQ("Qualcomm APQ8084", parse_ro_product_board("APQ8084"));
88 }
89
TEST(RO_PRODUCT_BOARD,qualcomm_special)90 TEST(RO_PRODUCT_BOARD, qualcomm_special) {
91 EXPECT_EQ("Qualcomm MSM8996PRO-AB", parse_ro_product_board("marlin"));
92 EXPECT_EQ("Qualcomm MSM8996PRO-AB", parse_ro_product_board("sailfish"));
93 }
94
TEST(RO_PRODUCT_BOARD,mediatek_mt)95 TEST(RO_PRODUCT_BOARD, mediatek_mt) {
96 EXPECT_EQ("MediaTek MT5861", parse_ro_product_board("mt5861"));
97 EXPECT_EQ("MediaTek MT5882", parse_ro_product_board("mt5882"));
98 EXPECT_EQ("MediaTek MT6572", parse_ro_product_board("mt6572"));
99 EXPECT_EQ("MediaTek MT6572M", parse_ro_product_board("MT6572M"));
100 EXPECT_EQ("MediaTek MT6575", parse_ro_product_board("MTK6575"));
101 EXPECT_EQ("MediaTek MT6575", parse_ro_product_board("mt6575"));
102 EXPECT_EQ("MediaTek MT6577", parse_ro_product_board("MTK6577"));
103 EXPECT_EQ("MediaTek MT6577", parse_ro_product_board("mt6577"));
104 EXPECT_EQ("MediaTek MT6580", parse_ro_product_board("MT6580"));
105 EXPECT_EQ("MediaTek MT6580", parse_ro_product_board("mt6580"));
106 EXPECT_EQ("MediaTek MT6580A", parse_ro_product_board("MT6580A"));
107 EXPECT_EQ("MediaTek MT6580M", parse_ro_product_board("MT6580M"));
108 EXPECT_EQ("MediaTek MT6582", parse_ro_product_board("MT6582"));
109 EXPECT_EQ("MediaTek MT6582", parse_ro_product_board("mt6582"));
110 EXPECT_EQ("MediaTek MT6582M", parse_ro_product_board("MTK6582M"));
111 EXPECT_EQ("MediaTek MT6582V", parse_ro_product_board("MT6582V"));
112 EXPECT_EQ("MediaTek MT6582W", parse_ro_product_board("MT6582W"));
113 EXPECT_EQ("MediaTek MT6589", parse_ro_product_board("MT6589"));
114 EXPECT_EQ("MediaTek MT6589T", parse_ro_product_board("MT6589T"));
115 EXPECT_EQ("MediaTek MT6592", parse_ro_product_board("MT6592"));
116 EXPECT_EQ("MediaTek MT6592", parse_ro_product_board("mt6592"));
117 EXPECT_EQ("MediaTek MT6592M", parse_ro_product_board("MT6592M"));
118 EXPECT_EQ("MediaTek MT6595", parse_ro_product_board("MT6595"));
119 EXPECT_EQ("MediaTek MT6732", parse_ro_product_board("MT6732"));
120 EXPECT_EQ("MediaTek MT6735", parse_ro_product_board("MT6735"));
121 EXPECT_EQ("MediaTek MT6735", parse_ro_product_board("mt6735"));
122 EXPECT_EQ("MediaTek MT6735M", parse_ro_product_board("MT6735M"));
123 EXPECT_EQ("MediaTek MT6735M", parse_ro_product_board("mt6735m"));
124 EXPECT_EQ("MediaTek MT6735P", parse_ro_product_board("MT6735P"));
125 EXPECT_EQ("MediaTek MT6735V", parse_ro_product_board("MT6735V"));
126 EXPECT_EQ("MediaTek MT6737", parse_ro_product_board("MT6737"));
127 EXPECT_EQ("MediaTek MT6737M", parse_ro_product_board("mt6737m"));
128 EXPECT_EQ("MediaTek MT6737T", parse_ro_product_board("MT6737T"));
129 EXPECT_EQ("MediaTek MT6750", parse_ro_product_board("MT6750"));
130 EXPECT_EQ("MediaTek MT6750", parse_ro_product_board("mt6750"));
131 EXPECT_EQ("MediaTek MT6752", parse_ro_product_board("MT6752", 8));
132 EXPECT_EQ("MediaTek MT6753", parse_ro_product_board("MT6753"));
133 EXPECT_EQ("MediaTek MT6753", parse_ro_product_board("mt6753"));
134 EXPECT_EQ("MediaTek MT6755", parse_ro_product_board("mt6755"));
135 EXPECT_EQ("MediaTek MT6755M", parse_ro_product_board("MT6755M"));
136 EXPECT_EQ("MediaTek MT6757", parse_ro_product_board("MT6757"));
137 EXPECT_EQ("MediaTek MT6795", parse_ro_product_board("mt6795"));
138 EXPECT_EQ("MediaTek MT6797", parse_ro_product_board("MT6797"));
139 EXPECT_EQ("MediaTek MT8127", parse_ro_product_board("mt8127"));
140 EXPECT_EQ("MediaTek MT8151", parse_ro_product_board("mt8151"));
141 EXPECT_EQ("MediaTek MT8163", parse_ro_product_board("mt8163"));
142 EXPECT_EQ("MediaTek MT8312", parse_ro_product_board("MT8312"));
143 EXPECT_EQ("MediaTek MT8321", parse_ro_product_board("MT8321"));
144 EXPECT_EQ("MediaTek MT8382", parse_ro_product_board("MT8382"));
145 EXPECT_EQ("MediaTek MT8382V", parse_ro_product_board("MT8382V"));
146 EXPECT_EQ("MediaTek MT8389", parse_ro_product_board("MT8389"));
147 EXPECT_EQ("MediaTek MT8735M", parse_ro_product_board("MT8735m"));
148 EXPECT_EQ("MediaTek MT8735P", parse_ro_product_board("MT8735P"));
149 EXPECT_EQ("MediaTek MT8783", parse_ro_product_board("MT8783"));
150 }
151
TEST(RO_PRODUCT_BOARD,samsung_universal)152 TEST(RO_PRODUCT_BOARD, samsung_universal) {
153 EXPECT_EQ("Samsung Exynos 3470", parse_ro_product_board("universal3470"));
154 EXPECT_EQ("Samsung Exynos 3475", parse_ro_product_board("universal3475"));
155 EXPECT_EQ("Samsung Exynos 4415", parse_ro_product_board("universal4415"));
156 EXPECT_EQ("Samsung Exynos 5260", parse_ro_product_board("universal5260"));
157 EXPECT_EQ("Samsung Exynos 5410", parse_ro_product_board("universal5410"));
158 EXPECT_EQ("Samsung Exynos 5420", parse_ro_product_board("universal5420", 4));
159 EXPECT_EQ("Samsung Exynos 5422", parse_ro_product_board("universal5422"));
160 EXPECT_EQ("Samsung Exynos 5430", parse_ro_product_board("universal5430"));
161 EXPECT_EQ("Samsung Exynos 5433", parse_ro_product_board("universal5433"));
162 EXPECT_EQ("Samsung Exynos 7420", parse_ro_product_board("universal7420"));
163 EXPECT_EQ("Samsung Exynos 7570", parse_ro_product_board("universal7570"));
164 EXPECT_EQ("Samsung Exynos 7578", parse_ro_product_board("universal7580", 4));
165 EXPECT_EQ("Samsung Exynos 7580", parse_ro_product_board("universal7580", 8));
166 EXPECT_EQ("Samsung Exynos 7870", parse_ro_product_board("universal7870"));
167 EXPECT_EQ("Samsung Exynos 7880", parse_ro_product_board("universal7880"));
168 EXPECT_EQ("Samsung Exynos 8890", parse_ro_product_board("universal8890"));
169 EXPECT_EQ("Samsung Exynos 8895", parse_ro_product_board("universal8895"));
170 }
171
172 #if CPUINFO_ARCH_ARM
TEST(RO_PRODUCT_BOARD,samsung_smdk)173 TEST(RO_PRODUCT_BOARD, samsung_smdk) {
174 EXPECT_EQ("Samsung Exynos 4212", parse_ro_product_board("smdk4x12", 2));
175 EXPECT_EQ("Samsung Exynos 4412", parse_ro_product_board("smdk4x12", 4));
176 }
177 #endif
178
TEST(RO_PRODUCT_BOARD,hisilicon_huawei)179 TEST(RO_PRODUCT_BOARD, hisilicon_huawei) {
180 EXPECT_EQ("HiSilicon Kirin 659", parse_ro_product_board("BAC"));
181 EXPECT_EQ("HiSilicon Kirin 950", parse_ro_product_board("FRD"));
182 EXPECT_EQ("HiSilicon Kirin 950", parse_ro_product_board("FRD-L09"));
183 EXPECT_EQ("HiSilicon Kirin 950", parse_ro_product_board("NXT"));
184 EXPECT_EQ("HiSilicon Kirin 950", parse_ro_product_board("NXT-AL10"));
185 EXPECT_EQ("HiSilicon Kirin 950", parse_ro_product_board("NXT-L09"));
186 EXPECT_EQ("HiSilicon Kirin 950", parse_ro_product_board("NXT-L29"));
187 EXPECT_EQ("HiSilicon Kirin 955", parse_ro_product_board("EVA"));
188 EXPECT_EQ("HiSilicon Kirin 955", parse_ro_product_board("EVA-AL10"));
189 EXPECT_EQ("HiSilicon Kirin 955", parse_ro_product_board("EVA-L09"));
190 EXPECT_EQ("HiSilicon Kirin 955", parse_ro_product_board("EVA-L19"));
191 EXPECT_EQ("HiSilicon Kirin 955", parse_ro_product_board("VIE-L09"));
192 EXPECT_EQ("HiSilicon Kirin 955", parse_ro_product_board("VIE-L29"));
193 EXPECT_EQ("HiSilicon Kirin 960", parse_ro_product_board("DUK"));
194 EXPECT_EQ("HiSilicon Kirin 960", parse_ro_product_board("LON"));
195 EXPECT_EQ("HiSilicon Kirin 960", parse_ro_product_board("MHA"));
196 EXPECT_EQ("HiSilicon Kirin 960", parse_ro_product_board("STF"));
197 EXPECT_EQ("HiSilicon Kirin 960", parse_ro_product_board("VKY"));
198 EXPECT_EQ("HiSilicon Kirin 960", parse_ro_product_board("VTR"));
199 }
200
TEST(RO_PRODUCT_BOARD,hisilicon_special)201 TEST(RO_PRODUCT_BOARD, hisilicon_special) {
202 EXPECT_EQ("HiSilicon Kirin 620", parse_ro_product_board("hi6210sft"));
203 EXPECT_EQ("HiSilicon Kirin 650", parse_ro_product_board("hi6250"));
204 #if CPUINFO_ARCH_ARM
205 EXPECT_EQ("HiSilicon Kirin 920", parse_ro_product_board("hi3630"));
206 #endif /* CPUINFO_ARCH_ARM */
207 EXPECT_EQ("HiSilicon Kirin 930", parse_ro_product_board("hi3635"));
208 EXPECT_EQ("HiSilicon Kirin 950", parse_ro_product_board("hi3650"));
209 EXPECT_EQ("HiSilicon Kirin 960", parse_ro_product_board("hi3660"));
210 EXPECT_EQ("HiSilicon Kirin 950", parse_ro_product_board("BEETHOVEN"));
211 }
212
213 #if CPUINFO_ARCH_ARM
TEST(RO_PRODUCT_BOARD,broadcom)214 TEST(RO_PRODUCT_BOARD, broadcom) {
215 EXPECT_EQ("Broadcom BCM28155", parse_ro_product_board("capri", 2, 1200000));
216 EXPECT_EQ("Broadcom BCM28155", parse_ro_product_board("capri", 2, 1300000));
217 EXPECT_EQ("Broadcom BCM28155", parse_ro_product_board("capri", 2, 1399999));
218 EXPECT_EQ("Broadcom BCM28155", parse_ro_product_board("capri", 2, 1399999));
219 EXPECT_EQ("Broadcom BCM23550", parse_ro_product_board("java", 4, 1200000));
220 EXPECT_EQ("Broadcom BCM23550", parse_ro_product_board("java", 4, 1300000));
221 EXPECT_EQ("Broadcom BCM21654", parse_ro_product_board("rhea", 1, 849999));
222 EXPECT_EQ("Broadcom BCM21654G", parse_ro_product_board("rhea", 1, 999999));
223 EXPECT_EQ("Broadcom BCM21663", parse_ro_product_board("hawaii", 1, 999999));
224 EXPECT_EQ("Broadcom BCM21664", parse_ro_product_board("hawaii", 2, 999999));
225 EXPECT_EQ("Broadcom BCM21664T", parse_ro_product_board("hawaii", 2, 1200000));
226 }
227
TEST(RO_PRODUCT_BOARD,leadcore_lc)228 TEST(RO_PRODUCT_BOARD, leadcore_lc) {
229 EXPECT_EQ("Leadcore LC1810", parse_ro_product_board("lc1810"));
230 }
231
TEST(RO_PRODUCT_BOARD,marvell_pxa)232 TEST(RO_PRODUCT_BOARD, marvell_pxa) {
233 EXPECT_EQ("Marvell PXA1088", parse_ro_product_board("PXA1088"));
234 EXPECT_EQ("Marvell PXA986", parse_ro_product_board("PXA986"));
235 EXPECT_EQ("Marvell PXA988", parse_ro_product_board("PXA988"));
236 }
237
TEST(RO_PRODUCT_BOARD,nvidia)238 TEST(RO_PRODUCT_BOARD, nvidia) {
239 EXPECT_EQ("Nvidia Tegra SL460N", parse_ro_product_board("g2mv"));
240 EXPECT_EQ("Nvidia Tegra T132", parse_ro_product_board("flounder"));
241 EXPECT_EQ("Nvidia Tegra T210", parse_ro_product_board("dragon"));
242 EXPECT_EQ("Nvidia Tegra T30L", parse_ro_product_board("grouper"));
243 }
244
TEST(RO_PRODUCT_BOARD,renesas)245 TEST(RO_PRODUCT_BOARD, renesas) {
246 EXPECT_EQ("Renesas MP5232", parse_ro_product_board("mp523x"));
247 }
248
TEST(RO_PRODUCT_BOARD,rockchip)249 TEST(RO_PRODUCT_BOARD, rockchip) {
250 EXPECT_EQ("Rockchip RK3066", parse_ro_product_board("T7H"));
251 EXPECT_EQ("Rockchip RK3168", parse_ro_product_board("hws7701u"));
252 EXPECT_EQ("Rockchip RK3188", parse_ro_product_board("K00F"));
253 }
254 #endif
255
TEST(RO_PRODUCT_BOARD,spreadtrum)256 TEST(RO_PRODUCT_BOARD, spreadtrum) {
257 EXPECT_EQ("Spreadtrum SC6815AS", parse_ro_product_board("SC6815AS"));
258 EXPECT_EQ("Spreadtrum SC7715", parse_ro_product_board("SC7715"));
259 EXPECT_EQ("Spreadtrum SC7715A", parse_ro_product_board("SC7715A"));
260 EXPECT_EQ("Spreadtrum SC7715T", parse_ro_product_board("SC7715T"));
261 EXPECT_EQ("Spreadtrum SC7727S", parse_ro_product_board("SC7727S"));
262 EXPECT_EQ("Spreadtrum SC7727S", parse_ro_product_board("sc7727s"));
263 EXPECT_EQ("Spreadtrum SC7727SE", parse_ro_product_board("SC7727SE"));
264 EXPECT_EQ("Spreadtrum SC7730S", parse_ro_product_board("sc7730s"));
265 EXPECT_EQ("Spreadtrum SC7730SE", parse_ro_product_board("SC7730SE"));
266 EXPECT_EQ("Spreadtrum SC7730SW", parse_ro_product_board("SC7730SW"));
267 EXPECT_EQ("Spreadtrum SC7731", parse_ro_product_board("SC7731"));
268 EXPECT_EQ("Spreadtrum SC7731C", parse_ro_product_board("SC7731C"));
269 EXPECT_EQ("Spreadtrum SC7731G", parse_ro_product_board("SC7731G"));
270 EXPECT_EQ("Spreadtrum SC7735S", parse_ro_product_board("sc7735s"));
271 EXPECT_EQ("Spreadtrum SC9830A", parse_ro_product_board("SC9830A"));
272 EXPECT_EQ("Spreadtrum SC9830I", parse_ro_product_board("SC9830I"));
273 }
274
275 #if CPUINFO_ARCH_ARM
TEST(RO_PRODUCT_BOARD,texas_instruments)276 TEST(RO_PRODUCT_BOARD, texas_instruments) {
277 EXPECT_EQ("Texas Instruments OMAP4460", parse_ro_product_board("tuna"));
278 }
279 #endif /* CPUINFO_ARCH_ARM */
280