ARM: tegra12: set CPU rate to 2.2GHz for sku 0x87
[linux-3.10.git] / arch / arm / mach-tegra / tegra_core_sysfs_limits.h
1 /*
2  * arch/arm/mach-tegra/tegra_core_sysfs_limits.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_CORE_SYSFS_LIMITS_H_
18 #define _MACH_TEGRA_CORE_SYSFS_LIMITS_H_
19
20 struct core_dvfs_cap_table {
21         const char *cap_name;
22         struct clk *cap_clk;
23         unsigned long freqs[MAX_DVFS_FREQS];
24 };
25
26 struct core_bus_limit_table {
27         const char *limit_clk_name;
28         struct clk *limit_clk;
29         struct kobj_attribute refcnt_attr;
30         struct kobj_attribute level_attr;
31         int refcnt;
32         unsigned long level;
33         struct notifier_block qos_nb;
34         int pm_qos_class;
35         bool applied;
36         int (*update)(struct core_bus_limit_table *bus_limit,
37                       unsigned long qos_limit_level);
38
39 };
40
41 struct core_bus_rates_table {
42         const char *bus_clk_name;
43         struct clk *bus_clk;
44         struct kobj_attribute rate_attr;
45         struct kobj_attribute available_rates_attr;
46         unsigned long available_rates[MAX_DVFS_FREQS];
47 };
48
49 int tegra_init_core_cap(struct core_dvfs_cap_table *table, int table_size,
50         const int *millivolts, int millivolts_num, struct kobject *cap_kobj);
51 int tegra_init_shared_bus_cap(struct core_bus_limit_table *table,
52         int table_size, struct kobject *cap_kobj);
53 int tegra_init_shared_bus_floor(struct core_bus_limit_table *table,
54         int table_size, struct kobject *floor_kobj);
55 int tegra_init_sysfs_shared_bus_rate(struct core_bus_rates_table *table,
56         int table_size, struct kobject *floor_kobj);
57
58 #ifdef CONFIG_DEBUG_FS
59 int tegra_core_cap_debug_init(void);
60 #else
61 static inline int tegra_core_cap_debug_init(void)
62 { return 0; }
63 #endif
64
65 #endif /* _MACH_TEGRA_CORE_SYSFS_LIMITS_H_ */