1 // SPDX-License-Identifier: GPL-2.0-only
3 * cppc_msr.c: MSR Interface for CPPC
4 * Copyright (c) 2016, Intel Corporation.
7 #include <acpi/cppc_acpi.h>
10 /* Refer to drivers/acpi/cppc_acpi.c for the description of functions */
12 bool cpc_ffh_supported(void)
17 int cpc_read_ffh(int cpunum, struct cpc_reg *reg, u64 *val)
21 err = rdmsrl_safe_on_cpu(cpunum, reg->address, val);
23 u64 mask = GENMASK_ULL(reg->bit_offset + reg->bit_width - 1,
27 *val >>= reg->bit_offset;
32 int cpc_write_ffh(int cpunum, struct cpc_reg *reg, u64 val)
37 err = rdmsrl_safe_on_cpu(cpunum, reg->address, &rd_val);
39 u64 mask = GENMASK_ULL(reg->bit_offset + reg->bit_width - 1,
42 val <<= reg->bit_offset;
46 err = wrmsrl_safe_on_cpu(cpunum, reg->address, rd_val);