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