Revert "ecryptfs: forbid opening files without mmap handler"
[linux-2.6-block.git] / include / linux / pm_opp.h
CommitLineData
e1f60b29
NM
1/*
2 * Generic OPP Interface
3 *
4 * Copyright (C) 2009-2010 Texas Instruments Incorporated.
5 * Nishanth Menon
6 * Romit Dasgupta
7 * Kevin Hilman
8 *
9 * This program is free software; you can redistribute it and/or modify
10 * it under the terms of the GNU General Public License version 2 as
11 * published by the Free Software Foundation.
12 */
13
14#ifndef __LINUX_OPP_H__
15#define __LINUX_OPP_H__
16
17#include <linux/err.h>
03ca370f 18#include <linux/notifier.h>
e1f60b29 19
47d43ba7 20struct dev_pm_opp;
313162d0 21struct device;
e1f60b29 22
47d43ba7 23enum dev_pm_opp_event {
129eec55 24 OPP_EVENT_ADD, OPP_EVENT_REMOVE, OPP_EVENT_ENABLE, OPP_EVENT_DISABLE,
03ca370f
MH
25};
26
e1f60b29
NM
27#if defined(CONFIG_PM_OPP)
28
47d43ba7 29unsigned long dev_pm_opp_get_voltage(struct dev_pm_opp *opp);
e1f60b29 30
47d43ba7 31unsigned long dev_pm_opp_get_freq(struct dev_pm_opp *opp);
e1f60b29 32
19445b25
BZ
33bool dev_pm_opp_is_turbo(struct dev_pm_opp *opp);
34
5d4879cd 35int dev_pm_opp_get_opp_count(struct device *dev);
3ca9bb33 36unsigned long dev_pm_opp_get_max_clock_latency(struct device *dev);
655c9df9 37unsigned long dev_pm_opp_get_max_volt_latency(struct device *dev);
21743447 38unsigned long dev_pm_opp_get_max_transition_latency(struct device *dev);
4eafbd15 39struct dev_pm_opp *dev_pm_opp_get_suspend_opp(struct device *dev);
e1f60b29 40
47d43ba7
NM
41struct dev_pm_opp *dev_pm_opp_find_freq_exact(struct device *dev,
42 unsigned long freq,
43 bool available);
e1f60b29 44
47d43ba7
NM
45struct dev_pm_opp *dev_pm_opp_find_freq_floor(struct device *dev,
46 unsigned long *freq);
e1f60b29 47
47d43ba7
NM
48struct dev_pm_opp *dev_pm_opp_find_freq_ceil(struct device *dev,
49 unsigned long *freq);
e1f60b29 50
5d4879cd
NM
51int dev_pm_opp_add(struct device *dev, unsigned long freq,
52 unsigned long u_volt);
129eec55 53void dev_pm_opp_remove(struct device *dev, unsigned long freq);
e1f60b29 54
5d4879cd 55int dev_pm_opp_enable(struct device *dev, unsigned long freq);
e1f60b29 56
5d4879cd 57int dev_pm_opp_disable(struct device *dev, unsigned long freq);
e1f60b29 58
5d4879cd 59struct srcu_notifier_head *dev_pm_opp_get_notifier(struct device *dev);
7de36b0a
VK
60int dev_pm_opp_set_supported_hw(struct device *dev, const u32 *versions,
61 unsigned int count);
62void dev_pm_opp_put_supported_hw(struct device *dev);
01fb4d3c
VK
63int dev_pm_opp_set_prop_name(struct device *dev, const char *name);
64void dev_pm_opp_put_prop_name(struct device *dev);
9f8ea969
VK
65int dev_pm_opp_set_regulator(struct device *dev, const char *name);
66void dev_pm_opp_put_regulator(struct device *dev);
6a0712f6 67int dev_pm_opp_set_rate(struct device *dev, unsigned long target_freq);
ddbb74bc
AB
68int dev_pm_opp_set_sharing_cpus(struct device *cpu_dev, const struct cpumask *cpumask);
69int dev_pm_opp_get_sharing_cpus(struct device *cpu_dev, struct cpumask *cpumask);
411466c5
SH
70void dev_pm_opp_remove_table(struct device *dev);
71void dev_pm_opp_cpumask_remove_table(const struct cpumask *cpumask);
e1f60b29 72#else
47d43ba7 73static inline unsigned long dev_pm_opp_get_voltage(struct dev_pm_opp *opp)
e1f60b29
NM
74{
75 return 0;
76}
77
47d43ba7 78static inline unsigned long dev_pm_opp_get_freq(struct dev_pm_opp *opp)
e1f60b29
NM
79{
80 return 0;
81}
82
19445b25
BZ
83static inline bool dev_pm_opp_is_turbo(struct dev_pm_opp *opp)
84{
85 return false;
86}
87
5d4879cd 88static inline int dev_pm_opp_get_opp_count(struct device *dev)
e1f60b29
NM
89{
90 return 0;
91}
92
3ca9bb33
VK
93static inline unsigned long dev_pm_opp_get_max_clock_latency(struct device *dev)
94{
95 return 0;
96}
97
655c9df9
VK
98static inline unsigned long dev_pm_opp_get_max_volt_latency(struct device *dev)
99{
100 return 0;
101}
102
21743447
VK
103static inline unsigned long dev_pm_opp_get_max_transition_latency(struct device *dev)
104{
105 return 0;
106}
107
4eafbd15
BZ
108static inline struct dev_pm_opp *dev_pm_opp_get_suspend_opp(struct device *dev)
109{
110 return NULL;
111}
112
47d43ba7 113static inline struct dev_pm_opp *dev_pm_opp_find_freq_exact(struct device *dev,
e1f60b29
NM
114 unsigned long freq, bool available)
115{
d708b384 116 return ERR_PTR(-ENOTSUPP);
e1f60b29
NM
117}
118
47d43ba7 119static inline struct dev_pm_opp *dev_pm_opp_find_freq_floor(struct device *dev,
e1f60b29
NM
120 unsigned long *freq)
121{
d708b384 122 return ERR_PTR(-ENOTSUPP);
e1f60b29
NM
123}
124
47d43ba7 125static inline struct dev_pm_opp *dev_pm_opp_find_freq_ceil(struct device *dev,
e1f60b29
NM
126 unsigned long *freq)
127{
d708b384 128 return ERR_PTR(-ENOTSUPP);
e1f60b29
NM
129}
130
5d4879cd 131static inline int dev_pm_opp_add(struct device *dev, unsigned long freq,
e1f60b29
NM
132 unsigned long u_volt)
133{
d708b384 134 return -ENOTSUPP;
e1f60b29
NM
135}
136
129eec55
VK
137static inline void dev_pm_opp_remove(struct device *dev, unsigned long freq)
138{
139}
140
5d4879cd 141static inline int dev_pm_opp_enable(struct device *dev, unsigned long freq)
e1f60b29
NM
142{
143 return 0;
144}
145
5d4879cd 146static inline int dev_pm_opp_disable(struct device *dev, unsigned long freq)
e1f60b29
NM
147{
148 return 0;
149}
03ca370f 150
5d4879cd
NM
151static inline struct srcu_notifier_head *dev_pm_opp_get_notifier(
152 struct device *dev)
03ca370f 153{
d708b384 154 return ERR_PTR(-ENOTSUPP);
03ca370f 155}
7de36b0a
VK
156
157static inline int dev_pm_opp_set_supported_hw(struct device *dev,
158 const u32 *versions,
159 unsigned int count)
160{
d708b384 161 return -ENOTSUPP;
7de36b0a
VK
162}
163
164static inline void dev_pm_opp_put_supported_hw(struct device *dev) {}
165
01fb4d3c
VK
166static inline int dev_pm_opp_set_prop_name(struct device *dev, const char *name)
167{
d708b384 168 return -ENOTSUPP;
01fb4d3c
VK
169}
170
171static inline void dev_pm_opp_put_prop_name(struct device *dev) {}
172
9f8ea969
VK
173static inline int dev_pm_opp_set_regulator(struct device *dev, const char *name)
174{
d708b384 175 return -ENOTSUPP;
9f8ea969
VK
176}
177
178static inline void dev_pm_opp_put_regulator(struct device *dev) {}
179
6a0712f6
VK
180static inline int dev_pm_opp_set_rate(struct device *dev, unsigned long target_freq)
181{
d708b384 182 return -ENOTSUPP;
6a0712f6
VK
183}
184
ddbb74bc 185static inline int dev_pm_opp_set_sharing_cpus(struct device *cpu_dev, const struct cpumask *cpumask)
642aa8ce 186{
d708b384 187 return -ENOTSUPP;
642aa8ce
VK
188}
189
ddbb74bc 190static inline int dev_pm_opp_get_sharing_cpus(struct device *cpu_dev, struct cpumask *cpumask)
6f707daa
VK
191{
192 return -EINVAL;
193}
194
411466c5
SH
195static inline void dev_pm_opp_remove_table(struct device *dev)
196{
197}
198
199static inline void dev_pm_opp_cpumask_remove_table(const struct cpumask *cpumask)
200{
201}
202
a96d69d1 203#endif /* CONFIG_PM_OPP */
e1f60b29 204
d6561bb2 205#if defined(CONFIG_PM_OPP) && defined(CONFIG_OF)
8f8d37b2
VK
206int dev_pm_opp_of_add_table(struct device *dev);
207void dev_pm_opp_of_remove_table(struct device *dev);
ddbb74bc
AB
208int dev_pm_opp_of_cpumask_add_table(const struct cpumask *cpumask);
209void dev_pm_opp_of_cpumask_remove_table(const struct cpumask *cpumask);
210int dev_pm_opp_of_get_sharing_cpus(struct device *cpu_dev, struct cpumask *cpumask);
d6561bb2 211#else
8f8d37b2 212static inline int dev_pm_opp_of_add_table(struct device *dev)
d6561bb2 213{
d708b384 214 return -ENOTSUPP;
d6561bb2 215}
129eec55 216
8f8d37b2 217static inline void dev_pm_opp_of_remove_table(struct device *dev)
129eec55
VK
218{
219}
8d4d4e98 220
ddbb74bc 221static inline int dev_pm_opp_of_cpumask_add_table(const struct cpumask *cpumask)
8d4d4e98 222{
d708b384 223 return -ENOTSUPP;
8d4d4e98
VK
224}
225
ddbb74bc 226static inline void dev_pm_opp_of_cpumask_remove_table(const struct cpumask *cpumask)
8d4d4e98
VK
227{
228}
229
ddbb74bc 230static inline int dev_pm_opp_of_get_sharing_cpus(struct device *cpu_dev, struct cpumask *cpumask)
8d4d4e98 231{
d708b384 232 return -ENOTSUPP;
8d4d4e98 233}
d6561bb2
SG
234#endif
235
e1f60b29 236#endif /* __LINUX_OPP_H__ */