arm: tegra: power: Tegra Thermal refactoring
[linux-3.10.git] / arch / arm / mach-tegra / include / mach / thermal.h
1 /*
2  * arch/arm/mach-tegra/thermal.h
3  *
4  * Copyright (C) 2010-2011 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 __MACH_THERMAL_H
18 #define __MACH_THERMAL_H
19
20 /* All units in millicelsius */
21 struct tegra_thermal_data {
22         long temp_throttle;
23         long temp_shutdown;
24         long temp_offset;
25         long edp_offset;
26 #ifndef CONFIG_TEGRA_THERMAL_SYSFS
27         long hysteresis_throttle;
28 #endif
29         long hysteresis_edp;
30 };
31
32 struct tegra_thermal_device {
33         void *data;
34         long offset;
35         int (*get_temp) (void *, long *);
36         int (*set_limits) (void *, long, long);
37         int (*set_alert)(void *, void (*)(void *), void *);
38         int (*set_shutdown_temp)(void *, long);
39 };
40
41 #ifndef CONFIG_ARCH_TEGRA_2x_SOC
42 int tegra_thermal_init(struct tegra_thermal_data *data);
43 int tegra_thermal_set_device(struct tegra_thermal_device *device);
44 int tegra_thermal_exit(void);
45 #else
46 static inline int tegra_thermal_init(struct tegra_thermal_data *data)
47 { return 0; }
48 static inline int tegra_thermal_set_device(struct tegra_thermal_device *dev)
49 { return 0; }
50 static inline int tegra_thermal_exit(void)
51 { return 0; }
52 #endif
53
54 #endif  /* __MACH_THERMAL_H */