forked from mirrors/linux
		
	 6ae0092ca7
			
		
	
	
		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>
		
			
				
	
	
		
			19 lines
		
	
	
	
		
			466 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			19 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__ */
 |