1 #include <string.h> 2 3 #include <arm/api.h> 4 #include <arm/linux/api.h> 5 #include <arm/android/api.h> 6 7 8 void cpuinfo_arm_android_parse_chipset_properties( 9 const char proc_cpuinfo_hardware[CPUINFO_HARDWARE_VALUE_MAX], 10 const char ro_product_board[CPUINFO_BUILD_PROP_VALUE_MAX], 11 const char ro_board_platform[CPUINFO_BUILD_PROP_VALUE_MAX], 12 const char ro_mediatek_platform[CPUINFO_BUILD_PROP_VALUE_MAX], 13 const char ro_arch[CPUINFO_BUILD_PROP_VALUE_MAX], 14 const char ro_chipname[CPUINFO_BUILD_PROP_VALUE_MAX], 15 uint32_t cores, 16 uint32_t max_cpu_freq_max, 17 char chipset_name[CPUINFO_ARM_CHIPSET_NAME_MAX]) 18 { 19 struct cpuinfo_android_properties properties; 20 strncpy(properties.proc_cpuinfo_hardware, proc_cpuinfo_hardware, CPUINFO_HARDWARE_VALUE_MAX); 21 strncpy(properties.ro_product_board, ro_product_board, CPUINFO_BUILD_PROP_VALUE_MAX); 22 strncpy(properties.ro_board_platform, ro_board_platform, CPUINFO_BUILD_PROP_VALUE_MAX); 23 strncpy(properties.ro_mediatek_platform, ro_mediatek_platform, CPUINFO_BUILD_PROP_VALUE_MAX); 24 strncpy(properties.ro_arch, ro_arch, CPUINFO_BUILD_PROP_VALUE_MAX); 25 strncpy(properties.ro_chipname, ro_chipname, CPUINFO_BUILD_PROP_VALUE_MAX); 26 27 struct cpuinfo_arm_chipset chipset = 28 cpuinfo_arm_android_decode_chipset(&properties, cores, max_cpu_freq_max); 29 if (chipset.series == cpuinfo_arm_chipset_series_unknown) { 30 chipset_name[0] = 0; 31 } else { 32 cpuinfo_arm_chipset_to_string(&chipset, chipset_name); 33 } 34 } 35 36 void cpuinfo_arm_android_parse_proc_cpuinfo_hardware( 37 const char hardware[CPUINFO_HARDWARE_VALUE_MAX], uint32_t cores, uint32_t max_cpu_freq_max, bool is_tegra, 38 char chipset_name[CPUINFO_ARM_CHIPSET_NAME_MAX]) 39 { 40 struct cpuinfo_arm_chipset chipset = 41 cpuinfo_arm_linux_decode_chipset_from_proc_cpuinfo_hardware(hardware, cores, max_cpu_freq_max, is_tegra); 42 if (chipset.series == cpuinfo_arm_chipset_series_unknown) { 43 chipset_name[0] = 0; 44 } else { 45 cpuinfo_arm_fixup_chipset(&chipset, cores, max_cpu_freq_max); 46 cpuinfo_arm_chipset_to_string(&chipset, chipset_name); 47 } 48 } 49 50 void cpuinfo_arm_android_parse_ro_product_board( 51 const char board[CPUINFO_BUILD_PROP_VALUE_MAX], uint32_t cores, uint32_t max_cpu_freq_max, 52 char chipset_name[CPUINFO_ARM_CHIPSET_NAME_MAX]) 53 { 54 struct cpuinfo_arm_chipset chipset = 55 cpuinfo_arm_android_decode_chipset_from_ro_product_board(board, cores, max_cpu_freq_max); 56 if (chipset.series == cpuinfo_arm_chipset_series_unknown) { 57 chipset_name[0] = 0; 58 } else { 59 cpuinfo_arm_fixup_chipset(&chipset, cores, max_cpu_freq_max); 60 cpuinfo_arm_chipset_to_string(&chipset, chipset_name); 61 } 62 } 63 64 void cpuinfo_arm_android_parse_ro_board_platform( 65 const char platform[CPUINFO_BUILD_PROP_VALUE_MAX], uint32_t cores, uint32_t max_cpu_freq_max, 66 char chipset_name[CPUINFO_ARM_CHIPSET_NAME_MAX]) 67 { 68 struct cpuinfo_arm_chipset chipset = 69 cpuinfo_arm_android_decode_chipset_from_ro_board_platform(platform, cores, max_cpu_freq_max); 70 if (chipset.series == cpuinfo_arm_chipset_series_unknown) { 71 chipset_name[0] = 0; 72 } else { 73 cpuinfo_arm_fixup_chipset(&chipset, cores, max_cpu_freq_max); 74 cpuinfo_arm_chipset_to_string(&chipset, chipset_name); 75 } 76 } 77 78 void cpuinfo_arm_android_parse_ro_mediatek_platform( 79 const char platform[CPUINFO_BUILD_PROP_VALUE_MAX], uint32_t cores, uint32_t max_cpu_freq_max, 80 char chipset_name[CPUINFO_ARM_CHIPSET_NAME_MAX]) 81 { 82 struct cpuinfo_arm_chipset chipset = cpuinfo_arm_android_decode_chipset_from_ro_mediatek_platform(platform); 83 if (chipset.series == cpuinfo_arm_chipset_series_unknown) { 84 chipset_name[0] = 0; 85 } else { 86 cpuinfo_arm_fixup_chipset(&chipset, cores, max_cpu_freq_max); 87 cpuinfo_arm_chipset_to_string(&chipset, chipset_name); 88 } 89 } 90 91 void cpuinfo_arm_android_parse_ro_arch( 92 const char arch[CPUINFO_BUILD_PROP_VALUE_MAX], uint32_t cores, uint32_t max_cpu_freq_max, 93 char chipset_name[CPUINFO_ARM_CHIPSET_NAME_MAX]) 94 { 95 struct cpuinfo_arm_chipset chipset = cpuinfo_arm_android_decode_chipset_from_ro_arch(arch); 96 if (chipset.series == cpuinfo_arm_chipset_series_unknown) { 97 chipset_name[0] = 0; 98 } else { 99 cpuinfo_arm_fixup_chipset(&chipset, cores, max_cpu_freq_max); 100 cpuinfo_arm_chipset_to_string(&chipset, chipset_name); 101 } 102 } 103 104 void cpuinfo_arm_android_parse_ro_chipname( 105 const char chipname[CPUINFO_BUILD_PROP_VALUE_MAX], uint32_t cores, uint32_t max_cpu_freq_max, 106 char chipset_name[CPUINFO_ARM_CHIPSET_NAME_MAX]) 107 { 108 struct cpuinfo_arm_chipset chipset = cpuinfo_arm_android_decode_chipset_from_ro_chipname(chipname); 109 if (chipset.series == cpuinfo_arm_chipset_series_unknown) { 110 chipset_name[0] = 0; 111 } else { 112 cpuinfo_arm_fixup_chipset(&chipset, cores, max_cpu_freq_max); 113 cpuinfo_arm_chipset_to_string(&chipset, chipset_name); 114 } 115 } 116