#include <linux/idr.h>
#include <linux/device.h>
#include <linux/workqueue.h>
++#include <uapi/linux/thermal.h>
#define THERMAL_TRIPS_NONE -1
#define THERMAL_MAX_TRIPS 12
--#define THERMAL_NAME_LENGTH 20
/* invalid cooling state */
#define THERMAL_CSTATE_INVALID -1UL
#define MILLICELSIUS_TO_DECI_KELVIN_WITH_OFFSET(t, off) (((t) / 100) + (off))
#define MILLICELSIUS_TO_DECI_KELVIN(t) MILLICELSIUS_TO_DECI_KELVIN_WITH_OFFSET(t, 2732)
--/* Adding event notification support elements */
--#define THERMAL_GENL_FAMILY_NAME "thermal_event"
--#define THERMAL_GENL_VERSION 0x01
--#define THERMAL_GENL_MCAST_GROUP_NAME "thermal_mc_grp"
--
/* Default Thermal Governor */
#if defined(CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE)
#define DEFAULT_THERMAL_GOVERNOR "step_wise"
THERMAL_TREND_DROP_FULL, /* apply lowest cooling action */
};
--/* Events supported by Thermal Netlink */
--enum events {
-- THERMAL_AUX0,
-- THERMAL_AUX1,
-- THERMAL_CRITICAL,
-- THERMAL_DEV_FAULT,
--};
--
--/* attributes of thermal_genl_family */
--enum {
-- THERMAL_GENL_ATTR_UNSPEC,
-- THERMAL_GENL_ATTR_EVENT,
-- __THERMAL_GENL_ATTR_MAX,
--};
--#define THERMAL_GENL_ATTR_MAX (__THERMAL_GENL_ATTR_MAX - 1)
--
--/* commands supported by the thermal_genl_family */
--enum {
-- THERMAL_GENL_CMD_UNSPEC,
-- THERMAL_GENL_CMD_EVENT,
-- __THERMAL_GENL_CMD_MAX,
--};
--#define THERMAL_GENL_CMD_MAX (__THERMAL_GENL_CMD_MAX - 1)
--
struct thermal_zone_device_ops {
int (*bind) (struct thermal_zone_device *,
struct thermal_cooling_device *);
enum events event;
};
+ +/**
+ + * struct thermal_zone_of_device_ops - scallbacks for handling DT based zones
+ + *
+ + * Mandatory:
+ + * @get_temp: a pointer to a function that reads the sensor temperature.
+ + *
+ + * Optional:
+ + * @get_trend: a pointer to a function that reads the sensor temperature trend.
+ + * @set_emul_temp: a pointer to a function that sets sensor emulated
+ + * temperature.
+ + */
+ +struct thermal_zone_of_device_ops {
+ + int (*get_temp)(void *, long *);
+ + int (*get_trend)(void *, long *);
+ + int (*set_emul_temp)(void *, unsigned long);
+ +};
+ +
+ +/**
+ + * struct thermal_trip - representation of a point in temperature domain
+ + * @np: pointer to struct device_node that this trip point was created from
+ + * @temperature: temperature value in miliCelsius
+ + * @hysteresis: relative hysteresis in miliCelsius
+ + * @type: trip point type
+ + */
+ +
+ +struct thermal_trip {
+ + struct device_node *np;
+ + unsigned long int temperature;
+ + unsigned long int hysteresis;
+ + enum thermal_trip_type type;
+ +};
+ +
/* Function declarations */
#ifdef CONFIG_THERMAL_OF
struct thermal_zone_device *
- -thermal_zone_of_sensor_register(struct device *dev, int id,
- - void *data, int (*get_temp)(void *, long *),
- - int (*get_trend)(void *, long *));
+ +thermal_zone_of_sensor_register(struct device *dev, int id, void *data,
+ + const struct thermal_zone_of_device_ops *ops);
void thermal_zone_of_sensor_unregister(struct device *dev,
struct thermal_zone_device *tz);
#else
static inline struct thermal_zone_device *
- -thermal_zone_of_sensor_register(struct device *dev, int id,
- - void *data, int (*get_temp)(void *, long *),
- - int (*get_trend)(void *, long *))
+ +thermal_zone_of_sensor_register(struct device *dev, int id, void *data,
+ + const struct thermal_zone_of_device_ops *ops)
{
return NULL;
}