blob: 5792e4c9618456b3db167551640d74c20d7661a7 [file] [log] [blame]
/* SPDX-License-Identifier: GPL-2.0-only */
#ifndef __DRIVERS_ACPI_THERMAL_ZONE_H__
#define __DRIVERS_ACPI_THERMAL_ZONE_H__
#include <types.h>
/*
* All temperature units are in Celsius.
* All time units are in seconds.
*/
struct drivers_acpi_thermal_zone_config {
/* Description of the thermal zone */
const char *description;
/*
* Device that will provide the temperature reading
*
* This device must have an ACPI method named `TMP` that accepts the
* sensor ID as the first argument. It must then return an Integer containing the
* sensor's temperature in deci-Kelvin.
*/
DEVTREE_CONST struct device *temperature_controller;
/* Used to identify the temperature sensor */
unsigned int sensor_id;
/* The polling period in seconds for this thermal zone. */
unsigned int polling_period;
/* The temperature (_CRT) at which the OS must shutdown the system. */
unsigned int critical_temperature;
/* The temperature (_HOT) at which the OS may choose to hibernate the system */
unsigned int hibernate_temperature;
struct acpi_thermal_zone_passive_config {
/*
* The temperature (_PSV) at which the OS must activate passive cooling (i.e.,
* throttle the CPUs).
*/
unsigned int temperature;
/**
* DeltaP[%] = _TC1 * (Tn - Tn-1) + _TC2 * (Tn - Tt)
* Where:
* Tn = current temperature
* Tt = target temperature (_PSV)
*
* If any of these values are 0, then one of the following defaults will be
* used: TC1: 2, TC2: 5, TSP: 10
*/
unsigned int time_constant_1;
unsigned int time_constant_2;
unsigned int time_sampling_period;
} passive_config;
/* Place the ThermalZone in the \_TZ scope */
bool use_acpi1_thermal_zone_scope;
};
#endif /* __DRIVERS_ACPI_THERMAL_ZONE_H__ */