arm: tegra: power: Device agnostic thermal driver
[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 struct tegra_thermal_ops {
21         int (*get_temp) (void *, long *);
22         int (*set_limits) (void *, long, long);
23 };
24
25 struct tegra_thermal {
26         void *data;
27         struct tegra_thermal_ops *ops;
28 #ifdef CONFIG_TEGRA_THERMAL_SYSFS
29         struct thermal_zone_device *thz;
30 #endif
31 };
32
33 #ifndef CONFIG_ARCH_TEGRA_2x_SOC
34 int tegra_thermal_init(void);
35 int tegra_thermal_exit(void);
36
37 struct tegra_thermal
38         *tegra_thermal_register(void *data, struct tegra_thermal_ops *ops);
39 int tegra_thermal_unregister(struct tegra_thermal *thermal);
40 int tegra_thermal_alert(struct tegra_thermal *thermal);
41 #else
42 static inline int tegra_thermal_init(void)
43 { return 0; }
44 static inline int tegra_thermal_exit(void)
45 { return 0; }
46 static inline struct tegra_thermal
47         *tegra_thermal_register(void *data, struct tegra_thermal_ops *ops)
48 { return NULL; }
49 static inline int tegra_thermal_unregister(struct tegra_thermal *thermal)
50 { return 0; }
51 static inline int tegra_thermal_alert(struct tegra_thermal *thermal)
52 { return 0; }
53 #endif
54
55 #define CELSIUS_TO_MILLICELSIUS(x) ((x)*1000)
56 #define MILLICELSIUS_TO_CELSIUS(x) ((x)/1000)
57
58
59
60 #endif  /* __MACH_THERMAL_H */