diff options
| author | Lifeng Zheng <[email protected]> | 2025-04-11 09:38:48 +0000 |
|---|---|---|
| committer | Rafael J. Wysocki <[email protected]> | 2025-04-30 20:01:30 +0000 |
| commit | e3d7935a6c6138da51626d2b956a079dd0e6671b (patch) | |
| tree | eb0b71b163178c8510491be59e8a6d26f491e53e /drivers/acpi/cppc_acpi.c | |
| parent | ACPI: CPPC: Simplify PCC shared memory region handling (diff) | |
| download | kernel-e3d7935a6c6138da51626d2b956a079dd0e6671b.tar.gz kernel-e3d7935a6c6138da51626d2b956a079dd0e6671b.zip | |
ACPI: CPPC: Add IS_OPTIONAL_CPC_REG macro to judge if a cpc_reg is optional
In ACPI 6.5, s8.4.6.1 _CPC (Continuous Performance Control), whether
each of the per-cpu cpc_regs[] is mandatory or optional is defined.
Since the CPC_SUPPORTED() check is only for optional _CPC fields,
another macro to check if the field is optional is needed.
Reviewed-by: Pierre Gondois <[email protected]>
Signed-off-by: Lifeng Zheng <[email protected]>
Reviewed-by: Mario Limonciello <[email protected]>
Link: https://patch.msgid.link/[email protected]
Signed-off-by: Rafael J. Wysocki <[email protected]>
Diffstat (limited to 'drivers/acpi/cppc_acpi.c')
| -rw-r--r-- | drivers/acpi/cppc_acpi.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/drivers/acpi/cppc_acpi.c b/drivers/acpi/cppc_acpi.c index d972157a79b6..34df03755699 100644 --- a/drivers/acpi/cppc_acpi.c +++ b/drivers/acpi/cppc_acpi.c @@ -128,6 +128,20 @@ static DEFINE_PER_CPU(struct cpc_desc *, cpc_desc_ptr); #define CPC_SUPPORTED(cpc) ((cpc)->type == ACPI_TYPE_INTEGER ? \ !!(cpc)->cpc_entry.int_value : \ !IS_NULL_REG(&(cpc)->cpc_entry.reg)) + +/* + * Each bit indicates the optionality of the register in per-cpu + * cpc_regs[] with the corresponding index. 0 means mandatory and 1 + * means optional. + */ +#define REG_OPTIONAL (0x1FC7D0) + +/* + * Use the index of the register in per-cpu cpc_regs[] to check if + * it's an optional one. + */ +#define IS_OPTIONAL_CPC_REG(reg_idx) (REG_OPTIONAL & (1U << (reg_idx))) + /* * Arbitrary Retries in case the remote processor is slow to respond * to PCC commands. Keeping it high enough to cover emulators where |
