ARM: tegra12: set CPU rate to 2.2GHz for sku 0x87
[linux-3.10.git] / arch / arm / mach-tegra / tegra_simon.h
1 /*
2  * arch/arm/mach-tegra/tegra_simon.h
3  *
4  * Copyright (c) 2013, NVIDIA CORPORATION. All rights reserved.
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_TEGRA_SIMON_H_
18 #define _MACH_TEGRA_SIMON_H_
19
20 enum tegra_simon_domain {
21         TEGRA_SIMON_DOMAIN_NONE = 0,
22         TEGRA_SIMON_DOMAIN_CPU,
23         TEGRA_SIMON_DOMAIN_GPU,
24         TEGRA_SIMON_DOMAIN_CORE,
25
26         TEGRA_SIMON_DOMAIN_NUM,
27 };
28
29 #define TEGRA_SIMON_GRADING_INTERVAL_SEC        5000000
30
31 struct tegra_simon_grader {
32         enum tegra_simon_domain         domain;
33         const char                      *domain_name;
34         ktime_t                         last_grading;
35         int                             grade;
36         int                             grading_mv_limit;
37         unsigned long                   garding_rate_limit;
38         struct work_struct              grade_update_work;
39         struct notifier_block           grading_condition_nb;
40         struct thermal_zone_device      *tzd;
41
42         int (*grade_simon_domain) (int domain, int mv, int temperature);
43 };
44
45 #ifdef CONFIG_TEGRA_USE_SIMON
46 int tegra_register_simon_notifier(struct notifier_block *nb);
47 void tegra_unregister_simon_notifier(struct notifier_block *nb);
48 #else
49 static inline int tegra_register_simon_notifier(struct notifier_block *nb)
50 { return -ENOSYS; }
51 static inline void tegra_unregister_simon_notifier(struct notifier_block *nb)
52 { }
53 #endif
54
55 #endif /* _MACH_TEGRA_SIMON_H_ */