-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branches 'acpi-pm', 'acpi-properties', 'acpi-misc' and 'acpi-x86'
Merge ACPI power management changes, ACPI device properties handling changes, x86-specific ACPI changes and miscellaneous ACPI changes for 5.18-rc1: - Add power management debug messages related to suspend-to-idle in two places (Rafael Wysocki). - Fix __acpi_node_get_property_reference() return value and clean up that function (Andy Shevchenko, Sakari Ailus). - Fix return value of the __setup handler in the ACPI PM timer clock source driver (Randy Dunlap). - Clean up double words in two comments (Tom Rix). - Add "skip i2c clients" quirks for Lenovo Yoga Tablet 1050F/L and Nextbook Ares 8 (Hans de Goede). - Clean up frequency invariance handling on x86 in the ACPI CPPC library (Huang Rui). - Work around broken XSDT on the Advantech DAC-BJ01 board (Mark Cilissen). * acpi-pm: ACPI: EC / PM: Print additional debug message in acpi_ec_dispatch_gpe() ACPI: PM: Print additional debug message in acpi_s2idle_wake() * acpi-properties: ACPI: property: Get rid of redundant 'else' ACPI: properties: Consistently return -ENOENT if there are no more references * acpi-misc: clocksource: acpi_pm: fix return value of __setup handler ACPI: clean up double words in two comments * acpi-x86: ACPI / x86: Work around broken XSDT on Advantech DAC-BJ01 board x86/ACPI: CPPC: Move init_freq_invariance_cppc() into x86 CPPC x86: Expose init_freq_invariance() to topology header x86/ACPI: CPPC: Move AMD maximum frequency ratio setting function into x86 CPPC x86/ACPI: CPPC: Rename cppc_msr.c to cppc.c ACPI / x86: Add skip i2c clients quirk for Lenovo Yoga Tablet 1050F/L ACPI / x86: Add skip i2c clients quirk for Nextbook Ares 8
- Loading branch information
Showing
13 changed files
with
191 additions
and
139 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,103 @@ | ||
// SPDX-License-Identifier: GPL-2.0-only | ||
/* | ||
* cppc.c: CPPC Interface for x86 | ||
* Copyright (c) 2016, Intel Corporation. | ||
*/ | ||
|
||
#include <acpi/cppc_acpi.h> | ||
#include <asm/msr.h> | ||
#include <asm/processor.h> | ||
#include <asm/topology.h> | ||
|
||
/* Refer to drivers/acpi/cppc_acpi.c for the description of functions */ | ||
|
||
bool cpc_ffh_supported(void) | ||
{ | ||
return true; | ||
} | ||
|
||
int cpc_read_ffh(int cpunum, struct cpc_reg *reg, u64 *val) | ||
{ | ||
int err; | ||
|
||
err = rdmsrl_safe_on_cpu(cpunum, reg->address, val); | ||
if (!err) { | ||
u64 mask = GENMASK_ULL(reg->bit_offset + reg->bit_width - 1, | ||
reg->bit_offset); | ||
|
||
*val &= mask; | ||
*val >>= reg->bit_offset; | ||
} | ||
return err; | ||
} | ||
|
||
int cpc_write_ffh(int cpunum, struct cpc_reg *reg, u64 val) | ||
{ | ||
u64 rd_val; | ||
int err; | ||
|
||
err = rdmsrl_safe_on_cpu(cpunum, reg->address, &rd_val); | ||
if (!err) { | ||
u64 mask = GENMASK_ULL(reg->bit_offset + reg->bit_width - 1, | ||
reg->bit_offset); | ||
|
||
val <<= reg->bit_offset; | ||
val &= mask; | ||
rd_val &= ~mask; | ||
rd_val |= val; | ||
err = wrmsrl_safe_on_cpu(cpunum, reg->address, rd_val); | ||
} | ||
return err; | ||
} | ||
|
||
bool amd_set_max_freq_ratio(u64 *ratio) | ||
{ | ||
struct cppc_perf_caps perf_caps; | ||
u64 highest_perf, nominal_perf; | ||
u64 perf_ratio; | ||
int rc; | ||
|
||
if (!ratio) | ||
return false; | ||
|
||
rc = cppc_get_perf_caps(0, &perf_caps); | ||
if (rc) { | ||
pr_debug("Could not retrieve perf counters (%d)\n", rc); | ||
return false; | ||
} | ||
|
||
highest_perf = amd_get_highest_perf(); | ||
nominal_perf = perf_caps.nominal_perf; | ||
|
||
if (!highest_perf || !nominal_perf) { | ||
pr_debug("Could not retrieve highest or nominal performance\n"); | ||
return false; | ||
} | ||
|
||
perf_ratio = div_u64(highest_perf * SCHED_CAPACITY_SCALE, nominal_perf); | ||
/* midpoint between max_boost and max_P */ | ||
perf_ratio = (perf_ratio + SCHED_CAPACITY_SCALE) >> 1; | ||
if (!perf_ratio) { | ||
pr_debug("Non-zero highest/nominal perf values led to a 0 ratio\n"); | ||
return false; | ||
} | ||
|
||
*ratio = perf_ratio; | ||
arch_set_max_freq_ratio(false); | ||
|
||
return true; | ||
} | ||
|
||
static DEFINE_MUTEX(freq_invariance_lock); | ||
|
||
void init_freq_invariance_cppc(void) | ||
{ | ||
static bool secondary; | ||
|
||
mutex_lock(&freq_invariance_lock); | ||
|
||
init_freq_invariance(secondary, true); | ||
secondary = true; | ||
|
||
mutex_unlock(&freq_invariance_lock); | ||
} |
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.