blob: 59b1e251b315635e299b5d4c926737b41e84ee56 [file] [log] [blame]
/* SPDX-License-Identifier: GPL-2.0-only */
#ifndef _DRIVERS_INTEL_DPTF_CHIP_H_
#define _DRIVERS_INTEL_DPTF_CHIP_H_
#include <acpi/acpigen_dptf.h>
#include <timer.h>
#define DPTF_PASSIVE(src, tgt, tmp, prd) \
{.source = DPTF_##src, .target = DPTF_##tgt, .temp = (tmp), .period = (prd)}
#define DPTF_CRITICAL(src, tmp, typ) \
{.source = DPTF_##src, .temp = (tmp), .type = DPTF_CRITICAL_##typ}
#define TEMP_PCT(t, p) {.temp = (t), .fan_pct = (p)}
/* Total number of OEM variables */
#define DPTF_OEM_VARIABLE_COUNT 6
struct drivers_intel_dptf_config {
struct {
struct dptf_active_policy active[DPTF_MAX_ACTIVE_POLICIES];
struct dptf_critical_policy critical[DPTF_MAX_CRITICAL_POLICIES];
struct dptf_passive_policy passive[DPTF_MAX_PASSIVE_POLICIES];
} policies;
struct {
struct dptf_charger_perf charger_perf[DPTF_MAX_CHARGER_PERF_STATES];
struct dptf_fan_perf fan_perf[DPTF_MAX_FAN_PERF_STATES];
struct dptf_power_limits power_limits;
} controls;
/* Note that all values in this struct are optional */
struct {
struct {
/* True means _FSL is percentages, False means _FSL is Control values */
bool fine_grained_control;
/*
* Recommended minimum step size in percentage points to adjust fan
* speed when utilizing fine-grained control (1-9)
*/
uint8_t step_size;
/*
* True means the platform will issue a Notify (0x80) to the fan device
* if a a low fan speed is detected
*/
bool low_speed_notify;
} fan;
struct {
/*
* The amount of hysteresis implemented in circuitry or in the platform
* EC's firmware implementation (using the GTSH object)
*/
uint8_t hysteresis;
/* Name applied to TSR (using the _STR object) */
const char *desc;
} tsr[DPTF_MAX_TSR];
} options;
/* OEM variables */
struct {
uint32_t oem_variables[DPTF_OEM_VARIABLE_COUNT];
} oem_data;
};
#endif /* _DRIVERS_INTEL_DPTF_CHIP_H_ */