diff options
Diffstat (limited to 'drivers/cpufreq/acpi-cpufreq.c')
| -rw-r--r-- | drivers/cpufreq/acpi-cpufreq.c | 5 | 
1 files changed, 5 insertions, 0 deletions
| diff --git a/drivers/cpufreq/acpi-cpufreq.c b/drivers/cpufreq/acpi-cpufreq.c index b61f4ec43e06..d62fd374d5c7 100644 --- a/drivers/cpufreq/acpi-cpufreq.c +++ b/drivers/cpufreq/acpi-cpufreq.c @@ -61,6 +61,7 @@ enum {  #define INTEL_MSR_RANGE		(0xffff)  #define AMD_MSR_RANGE		(0x7) +#define HYGON_MSR_RANGE		(0x7)  #define MSR_K7_HWCR_CPB_DIS	(1ULL << 25) @@ -95,6 +96,7 @@ static bool boost_state(unsigned int cpu)  		rdmsr_on_cpu(cpu, MSR_IA32_MISC_ENABLE, &lo, &hi);  		msr = lo | ((u64)hi << 32);  		return !(msr & MSR_IA32_MISC_ENABLE_TURBO_DISABLE); +	case X86_VENDOR_HYGON:  	case X86_VENDOR_AMD:  		rdmsr_on_cpu(cpu, MSR_K7_HWCR, &lo, &hi);  		msr = lo | ((u64)hi << 32); @@ -113,6 +115,7 @@ static int boost_set_msr(bool enable)  		msr_addr = MSR_IA32_MISC_ENABLE;  		msr_mask = MSR_IA32_MISC_ENABLE_TURBO_DISABLE;  		break; +	case X86_VENDOR_HYGON:  	case X86_VENDOR_AMD:  		msr_addr = MSR_K7_HWCR;  		msr_mask = MSR_K7_HWCR_CPB_DIS; @@ -225,6 +228,8 @@ static unsigned extract_msr(struct cpufreq_policy *policy, u32 msr)  	if (boot_cpu_data.x86_vendor == X86_VENDOR_AMD)  		msr &= AMD_MSR_RANGE; +	else if (boot_cpu_data.x86_vendor == X86_VENDOR_HYGON) +		msr &= HYGON_MSR_RANGE;  	else  		msr &= INTEL_MSR_RANGE; |