1 // SPDX-License-Identifier: GPL-2.0
2 #if defined(__i386__) || defined(__x86_64__)
4 #include "helpers/helpers.h"
6 #define MSR_AMD_HWCR 0xc0010015
8 int cpufreq_has_boost_support(unsigned int cpu
, int *support
, int *active
,
11 struct cpupower_cpu_info cpu_info
;
13 unsigned long long val
;
15 *support
= *active
= *states
= 0;
17 ret
= get_cpu_info(&cpu_info
);
21 if (cpupower_cpu_info
.caps
& CPUPOWER_CAP_AMD_CBP
) {
24 /* AMD Family 0x17 does not utilize PCI D18F4 like prior
25 * families and has no fixed discrete boost states but
26 * has Hardware determined variable increments instead.
29 if (cpu_info
.family
== 0x17 || cpu_info
.family
== 0x18) {
30 if (!read_msr(cpu
, MSR_AMD_HWCR
, &val
)) {
31 if (!(val
& CPUPOWER_AMD_CPBDIS
))
35 ret
= amd_pci_get_num_boost_states(active
, states
);
39 } else if (cpupower_cpu_info
.caps
& CPUPOWER_CAP_INTEL_IDA
)
40 *support
= *active
= 1;
43 #endif /* #if defined(__i386__) || defined(__x86_64__) */