drivers: misc: therm_est: add get_trend using dT/dt
[linux-2.6.git] / include / linux / therm_est.h
1 /*
2  * include/linux/therm_est.h
3  *
4  * Copyright (c) 2010-2012, NVIDIA Corporation.
5  *
6  * This software is licensed under the terms of the GNU General Public
7  * License version 2, as published by the Free Software Foundation, and
8  * may be copied, distributed, and modified under those terms.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  * GNU General Public License for more details.
14  *
15  */
16
17 #ifndef _LINUX_THERM_EST_H
18 #define _LINUX_THERM_EST_H
19
20 #include <linux/workqueue.h>
21 #define HIST_LEN (20)
22
23 #define MAX_ACTIVE_STATES 10
24
25 struct therm_est_subdevice {
26         void *dev_data;
27         int (*get_temp)(void *, long *);
28         long coeffs[HIST_LEN];
29         long hist[HIST_LEN];
30 };
31
32 struct therm_est_data {
33         /* trip point info : there's only 1 trip point */
34         char *cdev_type; /* cooling device for this trip */
35         long trip_temp;
36
37         /* zone parameters */
38         long toffset;
39         long polling_period;
40         int passive_delay;
41         int ndevs;
42         int tc1;
43         int tc2;
44         struct therm_est_subdevice devs[];
45 };
46
47 struct therm_fan_est_subdevice {
48         void *dev_data;
49         int (*get_temp)(void *, long *);
50         long coeffs[HIST_LEN];
51         long hist[HIST_LEN];
52 };
53
54 struct therm_fan_est_data {
55         long toffset;
56         long polling_period;
57         int ndevs;
58         int active_trip_temps[MAX_ACTIVE_STATES];
59         struct therm_fan_est_subdevice devs[];
60 };
61 #endif /* _LINUX_THERM_EST_H */