mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-12-28 16:56:26 +00:00
6ae0092ca7
The register MSR_TEMPERATURE_TARGET is not architectural. Its fields may be defined differently for each processor model. TCC_OFFSET is an example of such case. Despite being specified as architectural, the registers IA32_[PACKAGE]_ THERM_STATUS have become model-specific: in recent processors, the digital temperature readout uses bits [23:16] whereas the Intel Software Developer's manual specifies bits [22:16]. Create an array of processor models and their bitmasks for TCC_OFFSET and the digital temperature readout fields. Do not include recent processors. Instead, use the bitmasks of these recent processors as default. Use these model-specific bitmasks when reading TCC_OFFSET or the temperature sensors. Initialize a model-specific data structure during subsys_initcall() to have it ready when thermal drivers are loaded. Expose the new interface intel_tcc_get_offset_mask(). The intel_tcc_cooling driver will use it. Reviewed-by: Zhang Rui <rui.zhang@intel.com> Signed-off-by: Ricardo Neri <ricardo.neri-calderon@linux.intel.com> Link: https://patch.msgid.link/20240614211606.5896-2-ricardo.neri-calderon@linux.intel.com Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
20 lines
466 B
C
20 lines
466 B
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
/*
|
|
* header for Intel TCC (thermal control circuitry) library
|
|
*
|
|
* Copyright (C) 2022 Intel Corporation.
|
|
*/
|
|
|
|
#ifndef __INTEL_TCC_H__
|
|
#define __INTEL_TCC_H__
|
|
|
|
#include <linux/types.h>
|
|
|
|
int intel_tcc_get_tjmax(int cpu);
|
|
int intel_tcc_get_offset(int cpu);
|
|
int intel_tcc_set_offset(int cpu, int offset);
|
|
int intel_tcc_get_temp(int cpu, int *temp, bool pkg);
|
|
u32 intel_tcc_get_offset_mask(void);
|
|
|
|
#endif /* __INTEL_TCC_H__ */
|