#include #include #include #include #define CPUINFO_BUILD_PROP_VALUE_MAX 92 #define CPUINFO_ARM_CHIPSET_NAME_MAX 48 extern "C" void cpuinfo_arm_android_parse_ro_product_board( const char board[CPUINFO_BUILD_PROP_VALUE_MAX], uint32_t cores, uint32_t max_cpu_freq_max, char chipset_name[CPUINFO_ARM_CHIPSET_NAME_MAX]); inline std::string parse_ro_product_board( std::string board, uint32_t cores=1, uint32_t max_cpu_freq_max=0) { char board_buffer[CPUINFO_BUILD_PROP_VALUE_MAX]; strncpy(board_buffer, board.c_str(), CPUINFO_BUILD_PROP_VALUE_MAX); char chipset_name[CPUINFO_ARM_CHIPSET_NAME_MAX]; cpuinfo_arm_android_parse_ro_product_board( board_buffer, cores, max_cpu_freq_max, chipset_name); return std::string(chipset_name, strnlen(chipset_name, CPUINFO_ARM_CHIPSET_NAME_MAX)); } TEST(RO_PRODUCT_BOARD, qualcomm_msm) { EXPECT_EQ("Qualcomm APQ8064", parse_ro_product_board("MSM8960", 4)); EXPECT_EQ("Qualcomm MSM7630", parse_ro_product_board("MSM7630_SURF")); EXPECT_EQ("Qualcomm MSM8209", parse_ro_product_board("MSM8209")); EXPECT_EQ("Qualcomm MSM8210", parse_ro_product_board("MSM8210")); EXPECT_EQ("Qualcomm MSM8212", parse_ro_product_board("MSM8212")); EXPECT_EQ("Qualcomm MSM8225", parse_ro_product_board("MSM8225")); EXPECT_EQ("Qualcomm MSM8226", parse_ro_product_board("MSM8226")); EXPECT_EQ("Qualcomm MSM8227", parse_ro_product_board("MSM8227")); EXPECT_EQ("Qualcomm MSM8228", parse_ro_product_board("MSM8228")); EXPECT_EQ("Qualcomm MSM8230", parse_ro_product_board("MSM8230")); EXPECT_EQ("Qualcomm MSM8260A", parse_ro_product_board("MSM8260A")); EXPECT_EQ("Qualcomm MSM8274", parse_ro_product_board("MSM8274")); #if CPUINFO_ARCH_ARM EXPECT_EQ("Qualcomm MSM8610", parse_ro_product_board("MSM8610", 2)); EXPECT_EQ("Qualcomm MSM8612", parse_ro_product_board("MSM8610", 4)); #endif /* CPUINFO_ARCH_ARM */ EXPECT_EQ("Qualcomm MSM8612", parse_ro_product_board("MSM8612")); EXPECT_EQ("Qualcomm MSM8625", parse_ro_product_board("MSM8625")); EXPECT_EQ("Qualcomm MSM8626", parse_ro_product_board("MSM8626")); EXPECT_EQ("Qualcomm MSM8660", parse_ro_product_board("MSM8660_SURF")); EXPECT_EQ("Qualcomm MSM8674", parse_ro_product_board("MSM8674")); EXPECT_EQ("Qualcomm MSM8909", parse_ro_product_board("MSM8909")); EXPECT_EQ("Qualcomm MSM8909", parse_ro_product_board("msm8909")); EXPECT_EQ("Qualcomm MSM8916", parse_ro_product_board("MSM8216")); EXPECT_EQ("Qualcomm MSM8916", parse_ro_product_board("MSM8916", 4)); EXPECT_EQ("Qualcomm MSM8916", parse_ro_product_board("msm8916", 4)); EXPECT_EQ("Qualcomm MSM8917", parse_ro_product_board("MSM8917")); EXPECT_EQ("Qualcomm MSM8917", parse_ro_product_board("msm8937", 4)); EXPECT_EQ("Qualcomm MSM8917", parse_ro_product_board("msm8937_32", 4)); EXPECT_EQ("Qualcomm MSM8926", parse_ro_product_board("MSM8926")); EXPECT_EQ("Qualcomm MSM8928", parse_ro_product_board("MSM8928")); EXPECT_EQ("Qualcomm MSM8929", parse_ro_product_board("MSM8929")); EXPECT_EQ("Qualcomm MSM8929", parse_ro_product_board("msm8929")); EXPECT_EQ("Qualcomm MSM8937", parse_ro_product_board("MSM8937", 8)); EXPECT_EQ("Qualcomm MSM8937", parse_ro_product_board("msm8937", 8)); EXPECT_EQ("Qualcomm MSM8937", parse_ro_product_board("msm8937_32", 8)); EXPECT_EQ("Qualcomm MSM8939", parse_ro_product_board("MSM8916", 8)); EXPECT_EQ("Qualcomm MSM8939", parse_ro_product_board("MSM8939")); EXPECT_EQ("Qualcomm MSM8939", parse_ro_product_board("msm8916", 8)); EXPECT_EQ("Qualcomm MSM8939", parse_ro_product_board("msm8939")); EXPECT_EQ("Qualcomm MSM8939", parse_ro_product_board("msm8939_64")); EXPECT_EQ("Qualcomm MSM8940", parse_ro_product_board("MSM8940")); EXPECT_EQ("Qualcomm MSM8952", parse_ro_product_board("MSM8952")); EXPECT_EQ("Qualcomm MSM8952", parse_ro_product_board("msm8952")); EXPECT_EQ("Qualcomm MSM8953", parse_ro_product_board("msm8953")); EXPECT_EQ("Qualcomm MSM8960", parse_ro_product_board("MSM8960", 2)); EXPECT_EQ("Qualcomm MSM8974", parse_ro_product_board("MSM8974")); EXPECT_EQ("Qualcomm MSM8974", parse_ro_product_board("msm8974")); EXPECT_EQ("Qualcomm MSM8976", parse_ro_product_board("MSM8976")); EXPECT_EQ("Qualcomm MSM8992", parse_ro_product_board("MSM8992")); EXPECT_EQ("Qualcomm MSM8992", parse_ro_product_board("msm8992")); EXPECT_EQ("Qualcomm MSM8994", parse_ro_product_board("MSM8994")); EXPECT_EQ("Qualcomm MSM8994", parse_ro_product_board("msm8994")); EXPECT_EQ("Qualcomm MSM8996", parse_ro_product_board("msm8996", 4)); EXPECT_EQ("Qualcomm MSM8998", parse_ro_product_board("msm8998")); } TEST(RO_PRODUCT_BOARD, qualcomm_apq) { EXPECT_EQ("Qualcomm APQ8064", parse_ro_product_board("APQ8064")); EXPECT_EQ("Qualcomm APQ8064A", parse_ro_product_board("APQ8064A")); EXPECT_EQ("Qualcomm APQ8064PRO", parse_ro_product_board("APQ8064Pro")); EXPECT_EQ("Qualcomm APQ8084", parse_ro_product_board("APQ8084")); } TEST(RO_PRODUCT_BOARD, qualcomm_special) { EXPECT_EQ("Qualcomm MSM8996PRO-AB", parse_ro_product_board("marlin")); EXPECT_EQ("Qualcomm MSM8996PRO-AB", parse_ro_product_board("sailfish")); } TEST(RO_PRODUCT_BOARD, mediatek_mt) { EXPECT_EQ("MediaTek MT5861", parse_ro_product_board("mt5861")); EXPECT_EQ("MediaTek MT5882", parse_ro_product_board("mt5882")); EXPECT_EQ("MediaTek MT6572", parse_ro_product_board("mt6572")); EXPECT_EQ("MediaTek MT6572M", parse_ro_product_board("MT6572M")); EXPECT_EQ("MediaTek MT6575", parse_ro_product_board("MTK6575")); EXPECT_EQ("MediaTek MT6575", parse_ro_product_board("mt6575")); EXPECT_EQ("MediaTek MT6577", parse_ro_product_board("MTK6577")); EXPECT_EQ("MediaTek MT6577", parse_ro_product_board("mt6577")); EXPECT_EQ("MediaTek MT6580", parse_ro_product_board("MT6580")); EXPECT_EQ("MediaTek MT6580", parse_ro_product_board("mt6580")); EXPECT_EQ("MediaTek MT6580A", parse_ro_product_board("MT6580A")); EXPECT_EQ("MediaTek MT6580M", parse_ro_product_board("MT6580M")); EXPECT_EQ("MediaTek MT6582", parse_ro_product_board("MT6582")); EXPECT_EQ("MediaTek MT6582", parse_ro_product_board("mt6582")); EXPECT_EQ("MediaTek MT6582M", parse_ro_product_board("MTK6582M")); EXPECT_EQ("MediaTek MT6582V", parse_ro_product_board("MT6582V")); EXPECT_EQ("MediaTek MT6582W", parse_ro_product_board("MT6582W")); EXPECT_EQ("MediaTek MT6589", parse_ro_product_board("MT6589")); EXPECT_EQ("MediaTek MT6589T", parse_ro_product_board("MT6589T")); EXPECT_EQ("MediaTek MT6592", parse_ro_product_board("MT6592")); EXPECT_EQ("MediaTek MT6592", parse_ro_product_board("mt6592")); EXPECT_EQ("MediaTek MT6592M", parse_ro_product_board("MT6592M")); EXPECT_EQ("MediaTek MT6595", parse_ro_product_board("MT6595")); EXPECT_EQ("MediaTek MT6732", parse_ro_product_board("MT6732")); EXPECT_EQ("MediaTek MT6735", parse_ro_product_board("MT6735")); EXPECT_EQ("MediaTek MT6735", parse_ro_product_board("mt6735")); EXPECT_EQ("MediaTek MT6735M", parse_ro_product_board("MT6735M")); EXPECT_EQ("MediaTek MT6735M", parse_ro_product_board("mt6735m")); EXPECT_EQ("MediaTek MT6735P", parse_ro_product_board("MT6735P")); EXPECT_EQ("MediaTek MT6735V", parse_ro_product_board("MT6735V")); EXPECT_EQ("MediaTek MT6737", parse_ro_product_board("MT6737")); EXPECT_EQ("MediaTek MT6737M", parse_ro_product_board("mt6737m")); EXPECT_EQ("MediaTek MT6737T", parse_ro_product_board("MT6737T")); EXPECT_EQ("MediaTek MT6750", parse_ro_product_board("MT6750")); EXPECT_EQ("MediaTek MT6750", parse_ro_product_board("mt6750")); EXPECT_EQ("MediaTek MT6752", parse_ro_product_board("MT6752", 8)); EXPECT_EQ("MediaTek MT6753", parse_ro_product_board("MT6753")); EXPECT_EQ("MediaTek MT6753", parse_ro_product_board("mt6753")); EXPECT_EQ("MediaTek MT6755", parse_ro_product_board("mt6755")); EXPECT_EQ("MediaTek MT6755M", parse_ro_product_board("MT6755M")); EXPECT_EQ("MediaTek MT6757", parse_ro_product_board("MT6757")); EXPECT_EQ("MediaTek MT6795", parse_ro_product_board("mt6795")); EXPECT_EQ("MediaTek MT6797", parse_ro_product_board("MT6797")); EXPECT_EQ("MediaTek MT8127", parse_ro_product_board("mt8127")); EXPECT_EQ("MediaTek MT8151", parse_ro_product_board("mt8151")); EXPECT_EQ("MediaTek MT8163", parse_ro_product_board("mt8163")); EXPECT_EQ("MediaTek MT8312", parse_ro_product_board("MT8312")); EXPECT_EQ("MediaTek MT8321", parse_ro_product_board("MT8321")); EXPECT_EQ("MediaTek MT8382", parse_ro_product_board("MT8382")); EXPECT_EQ("MediaTek MT8382V", parse_ro_product_board("MT8382V")); EXPECT_EQ("MediaTek MT8389", parse_ro_product_board("MT8389")); EXPECT_EQ("MediaTek MT8735M", parse_ro_product_board("MT8735m")); EXPECT_EQ("MediaTek MT8735P", parse_ro_product_board("MT8735P")); EXPECT_EQ("MediaTek MT8783", parse_ro_product_board("MT8783")); } TEST(RO_PRODUCT_BOARD, samsung_universal) { EXPECT_EQ("Samsung Exynos 3470", parse_ro_product_board("universal3470")); EXPECT_EQ("Samsung Exynos 3475", parse_ro_product_board("universal3475")); EXPECT_EQ("Samsung Exynos 4415", parse_ro_product_board("universal4415")); EXPECT_EQ("Samsung Exynos 5260", parse_ro_product_board("universal5260")); EXPECT_EQ("Samsung Exynos 5410", parse_ro_product_board("universal5410")); EXPECT_EQ("Samsung Exynos 5420", parse_ro_product_board("universal5420", 4)); EXPECT_EQ("Samsung Exynos 5422", parse_ro_product_board("universal5422")); EXPECT_EQ("Samsung Exynos 5430", parse_ro_product_board("universal5430")); EXPECT_EQ("Samsung Exynos 5433", parse_ro_product_board("universal5433")); EXPECT_EQ("Samsung Exynos 7420", parse_ro_product_board("universal7420")); EXPECT_EQ("Samsung Exynos 7570", parse_ro_product_board("universal7570")); EXPECT_EQ("Samsung Exynos 7578", parse_ro_product_board("universal7580", 4)); EXPECT_EQ("Samsung Exynos 7580", parse_ro_product_board("universal7580", 8)); EXPECT_EQ("Samsung Exynos 7870", parse_ro_product_board("universal7870")); EXPECT_EQ("Samsung Exynos 7880", parse_ro_product_board("universal7880")); EXPECT_EQ("Samsung Exynos 8890", parse_ro_product_board("universal8890")); EXPECT_EQ("Samsung Exynos 8895", parse_ro_product_board("universal8895")); } #if CPUINFO_ARCH_ARM TEST(RO_PRODUCT_BOARD, samsung_smdk) { EXPECT_EQ("Samsung Exynos 4212", parse_ro_product_board("smdk4x12", 2)); EXPECT_EQ("Samsung Exynos 4412", parse_ro_product_board("smdk4x12", 4)); } #endif TEST(RO_PRODUCT_BOARD, hisilicon_huawei) { EXPECT_EQ("HiSilicon Kirin 659", parse_ro_product_board("BAC")); EXPECT_EQ("HiSilicon Kirin 950", parse_ro_product_board("FRD")); EXPECT_EQ("HiSilicon Kirin 950", parse_ro_product_board("FRD-L09")); EXPECT_EQ("HiSilicon Kirin 950", parse_ro_product_board("NXT")); EXPECT_EQ("HiSilicon Kirin 950", parse_ro_product_board("NXT-AL10")); EXPECT_EQ("HiSilicon Kirin 950", parse_ro_product_board("NXT-L09")); EXPECT_EQ("HiSilicon Kirin 950", parse_ro_product_board("NXT-L29")); EXPECT_EQ("HiSilicon Kirin 955", parse_ro_product_board("EVA")); EXPECT_EQ("HiSilicon Kirin 955", parse_ro_product_board("EVA-AL10")); EXPECT_EQ("HiSilicon Kirin 955", parse_ro_product_board("EVA-L09")); EXPECT_EQ("HiSilicon Kirin 955", parse_ro_product_board("EVA-L19")); EXPECT_EQ("HiSilicon Kirin 955", parse_ro_product_board("VIE-L09")); EXPECT_EQ("HiSilicon Kirin 955", parse_ro_product_board("VIE-L29")); EXPECT_EQ("HiSilicon Kirin 960", parse_ro_product_board("DUK")); EXPECT_EQ("HiSilicon Kirin 960", parse_ro_product_board("LON")); EXPECT_EQ("HiSilicon Kirin 960", parse_ro_product_board("MHA")); EXPECT_EQ("HiSilicon Kirin 960", parse_ro_product_board("STF")); EXPECT_EQ("HiSilicon Kirin 960", parse_ro_product_board("VKY")); EXPECT_EQ("HiSilicon Kirin 960", parse_ro_product_board("VTR")); } TEST(RO_PRODUCT_BOARD, hisilicon_special) { EXPECT_EQ("HiSilicon Kirin 620", parse_ro_product_board("hi6210sft")); EXPECT_EQ("HiSilicon Kirin 650", parse_ro_product_board("hi6250")); #if CPUINFO_ARCH_ARM EXPECT_EQ("HiSilicon Kirin 920", parse_ro_product_board("hi3630")); #endif /* CPUINFO_ARCH_ARM */ EXPECT_EQ("HiSilicon Kirin 930", parse_ro_product_board("hi3635")); EXPECT_EQ("HiSilicon Kirin 950", parse_ro_product_board("hi3650")); EXPECT_EQ("HiSilicon Kirin 960", parse_ro_product_board("hi3660")); EXPECT_EQ("HiSilicon Kirin 950", parse_ro_product_board("BEETHOVEN")); } #if CPUINFO_ARCH_ARM TEST(RO_PRODUCT_BOARD, broadcom) { EXPECT_EQ("Broadcom BCM28155", parse_ro_product_board("capri", 2, 1200000)); EXPECT_EQ("Broadcom BCM28155", parse_ro_product_board("capri", 2, 1300000)); EXPECT_EQ("Broadcom BCM28155", parse_ro_product_board("capri", 2, 1399999)); EXPECT_EQ("Broadcom BCM28155", parse_ro_product_board("capri", 2, 1399999)); EXPECT_EQ("Broadcom BCM23550", parse_ro_product_board("java", 4, 1200000)); EXPECT_EQ("Broadcom BCM23550", parse_ro_product_board("java", 4, 1300000)); EXPECT_EQ("Broadcom BCM21654", parse_ro_product_board("rhea", 1, 849999)); EXPECT_EQ("Broadcom BCM21654G", parse_ro_product_board("rhea", 1, 999999)); EXPECT_EQ("Broadcom BCM21663", parse_ro_product_board("hawaii", 1, 999999)); EXPECT_EQ("Broadcom BCM21664", parse_ro_product_board("hawaii", 2, 999999)); EXPECT_EQ("Broadcom BCM21664T", parse_ro_product_board("hawaii", 2, 1200000)); } TEST(RO_PRODUCT_BOARD, leadcore_lc) { EXPECT_EQ("Leadcore LC1810", parse_ro_product_board("lc1810")); } TEST(RO_PRODUCT_BOARD, marvell_pxa) { EXPECT_EQ("Marvell PXA1088", parse_ro_product_board("PXA1088")); EXPECT_EQ("Marvell PXA986", parse_ro_product_board("PXA986")); EXPECT_EQ("Marvell PXA988", parse_ro_product_board("PXA988")); } TEST(RO_PRODUCT_BOARD, nvidia) { EXPECT_EQ("Nvidia Tegra SL460N", parse_ro_product_board("g2mv")); EXPECT_EQ("Nvidia Tegra T132", parse_ro_product_board("flounder")); EXPECT_EQ("Nvidia Tegra T210", parse_ro_product_board("dragon")); EXPECT_EQ("Nvidia Tegra T30L", parse_ro_product_board("grouper")); } TEST(RO_PRODUCT_BOARD, renesas) { EXPECT_EQ("Renesas MP5232", parse_ro_product_board("mp523x")); } TEST(RO_PRODUCT_BOARD, rockchip) { EXPECT_EQ("Rockchip RK3066", parse_ro_product_board("T7H")); EXPECT_EQ("Rockchip RK3168", parse_ro_product_board("hws7701u")); EXPECT_EQ("Rockchip RK3188", parse_ro_product_board("K00F")); } #endif TEST(RO_PRODUCT_BOARD, spreadtrum) { EXPECT_EQ("Spreadtrum SC6815AS", parse_ro_product_board("SC6815AS")); EXPECT_EQ("Spreadtrum SC7715", parse_ro_product_board("SC7715")); EXPECT_EQ("Spreadtrum SC7715A", parse_ro_product_board("SC7715A")); EXPECT_EQ("Spreadtrum SC7715T", parse_ro_product_board("SC7715T")); EXPECT_EQ("Spreadtrum SC7727S", parse_ro_product_board("SC7727S")); EXPECT_EQ("Spreadtrum SC7727S", parse_ro_product_board("sc7727s")); EXPECT_EQ("Spreadtrum SC7727SE", parse_ro_product_board("SC7727SE")); EXPECT_EQ("Spreadtrum SC7730S", parse_ro_product_board("sc7730s")); EXPECT_EQ("Spreadtrum SC7730SE", parse_ro_product_board("SC7730SE")); EXPECT_EQ("Spreadtrum SC7730SW", parse_ro_product_board("SC7730SW")); EXPECT_EQ("Spreadtrum SC7731", parse_ro_product_board("SC7731")); EXPECT_EQ("Spreadtrum SC7731C", parse_ro_product_board("SC7731C")); EXPECT_EQ("Spreadtrum SC7731G", parse_ro_product_board("SC7731G")); EXPECT_EQ("Spreadtrum SC7735S", parse_ro_product_board("sc7735s")); EXPECT_EQ("Spreadtrum SC9830A", parse_ro_product_board("SC9830A")); EXPECT_EQ("Spreadtrum SC9830I", parse_ro_product_board("SC9830I")); } #if CPUINFO_ARCH_ARM TEST(RO_PRODUCT_BOARD, texas_instruments) { EXPECT_EQ("Texas Instruments OMAP4460", parse_ro_product_board("tuna")); } #endif /* CPUINFO_ARCH_ARM */