17fe2f639SDominik Brodowski #if defined(__i386__) || defined(__x86_64__) 27fe2f639SDominik Brodowski 37fe2f639SDominik Brodowski #include "helpers/helpers.h" 47fe2f639SDominik Brodowski 52cd005caSDominik Brodowski int cpufreq_has_boost_support(unsigned int cpu, int *support, int *active, 62cd005caSDominik Brodowski int *states) 77fe2f639SDominik Brodowski { 87fe2f639SDominik Brodowski struct cpupower_cpu_info cpu_info; 97fe2f639SDominik Brodowski int ret; 107fe2f639SDominik Brodowski 117fe2f639SDominik Brodowski *support = *active = *states = 0; 127fe2f639SDominik Brodowski 137fe2f639SDominik Brodowski ret = get_cpu_info(0, &cpu_info); 147fe2f639SDominik Brodowski if (ret) 157fe2f639SDominik Brodowski return ret; 167fe2f639SDominik Brodowski 177fe2f639SDominik Brodowski if (cpupower_cpu_info.caps & CPUPOWER_CAP_AMD_CBP) { 187fe2f639SDominik Brodowski *support = 1; 197fe2f639SDominik Brodowski amd_pci_get_num_boost_states(active, states); 207fe2f639SDominik Brodowski if (ret <= 0) 217fe2f639SDominik Brodowski return ret; 227fe2f639SDominik Brodowski *support = 1; 237fe2f639SDominik Brodowski } else if (cpupower_cpu_info.vendor == X86_VENDOR_INTEL) { 247fe2f639SDominik Brodowski ret = msr_intel_has_boost_support(cpu); 257fe2f639SDominik Brodowski if (ret <= 0) 267fe2f639SDominik Brodowski return ret; 277fe2f639SDominik Brodowski *support = ret; 287fe2f639SDominik Brodowski ret = msr_intel_boost_is_active(cpu); 297fe2f639SDominik Brodowski if (ret <= 0) 307fe2f639SDominik Brodowski return ret; 317fe2f639SDominik Brodowski *active = ret; 327fe2f639SDominik Brodowski } 337fe2f639SDominik Brodowski return 0; 347fe2f639SDominik Brodowski } 357fe2f639SDominik Brodowski #endif /* #if defined(__i386__) || defined(__x86_64__) */ 36