1 #pragma once 2 3 /* List of known and supported Windows on Arm SoCs/chips. */ 4 enum woa_chip_name { 5 woa_chip_name_microsoft_sq_1 = 0, 6 woa_chip_name_microsoft_sq_2 = 1, 7 woa_chip_name_unknown = 2, 8 woa_chip_name_last = woa_chip_name_unknown 9 }; 10 11 /* Topology information hard-coded by SoC/chip name */ 12 struct core_info_by_chip_name { 13 enum cpuinfo_uarch uarch; 14 uint64_t frequency; /* Hz */ 15 }; 16 17 /* SoC/chip info that's currently not readable by logical system information, 18 * but can be read from registry. 19 */ 20 struct woa_chip_info { 21 char* chip_name_string; 22 enum woa_chip_name chip_name; 23 struct core_info_by_chip_name uarchs[woa_chip_name_last]; 24 }; 25 26 bool get_core_uarch_for_efficiency( 27 enum woa_chip_name chip, BYTE EfficiencyClass, 28 enum cpuinfo_uarch* uarch, uint64_t* frequency); 29 30 bool cpu_info_init_by_logical_sys_info( 31 const struct woa_chip_info *chip_info, 32 enum cpuinfo_vendor vendor); 33