Blame view

include/linux/opp.h 2.74 KB
e1f60b292   Nishanth Menon   PM: Introduce lib...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
  /*
   * Generic OPP Interface
   *
   * Copyright (C) 2009-2010 Texas Instruments Incorporated.
   *	Nishanth Menon
   *	Romit Dasgupta
   *	Kevin Hilman
   *
   * This program is free software; you can redistribute it and/or modify
   * it under the terms of the GNU General Public License version 2 as
   * published by the Free Software Foundation.
   */
  
  #ifndef __LINUX_OPP_H__
  #define __LINUX_OPP_H__
  
  #include <linux/err.h>
  #include <linux/cpufreq.h>
03ca370fb   MyungJoo Ham   PM / OPP: Add OPP...
19
  #include <linux/notifier.h>
e1f60b292   Nishanth Menon   PM: Introduce lib...
20
21
  
  struct opp;
03ca370fb   MyungJoo Ham   PM / OPP: Add OPP...
22
23
24
  enum opp_event {
  	OPP_EVENT_ADD, OPP_EVENT_ENABLE, OPP_EVENT_DISABLE,
  };
e1f60b292   Nishanth Menon   PM: Introduce lib...
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
  #if defined(CONFIG_PM_OPP)
  
  unsigned long opp_get_voltage(struct opp *opp);
  
  unsigned long opp_get_freq(struct opp *opp);
  
  int opp_get_opp_count(struct device *dev);
  
  struct opp *opp_find_freq_exact(struct device *dev, unsigned long freq,
  				bool available);
  
  struct opp *opp_find_freq_floor(struct device *dev, unsigned long *freq);
  
  struct opp *opp_find_freq_ceil(struct device *dev, unsigned long *freq);
  
  int opp_add(struct device *dev, unsigned long freq, unsigned long u_volt);
  
  int opp_enable(struct device *dev, unsigned long freq);
  
  int opp_disable(struct device *dev, unsigned long freq);
03ca370fb   MyungJoo Ham   PM / OPP: Add OPP...
45
  struct srcu_notifier_head *opp_get_notifier(struct device *dev);
e1f60b292   Nishanth Menon   PM: Introduce lib...
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
  #else
  static inline unsigned long opp_get_voltage(struct opp *opp)
  {
  	return 0;
  }
  
  static inline unsigned long opp_get_freq(struct opp *opp)
  {
  	return 0;
  }
  
  static inline int opp_get_opp_count(struct device *dev)
  {
  	return 0;
  }
  
  static inline struct opp *opp_find_freq_exact(struct device *dev,
  					unsigned long freq, bool available)
  {
  	return ERR_PTR(-EINVAL);
  }
  
  static inline struct opp *opp_find_freq_floor(struct device *dev,
  					unsigned long *freq)
  {
  	return ERR_PTR(-EINVAL);
  }
  
  static inline struct opp *opp_find_freq_ceil(struct device *dev,
  					unsigned long *freq)
  {
  	return ERR_PTR(-EINVAL);
  }
  
  static inline int opp_add(struct device *dev, unsigned long freq,
  					unsigned long u_volt)
  {
  	return -EINVAL;
  }
  
  static inline int opp_enable(struct device *dev, unsigned long freq)
  {
  	return 0;
  }
  
  static inline int opp_disable(struct device *dev, unsigned long freq)
  {
  	return 0;
  }
03ca370fb   MyungJoo Ham   PM / OPP: Add OPP...
95

a96d69d1b   Tony Lindgren   PM / OPP: Fix bui...
96
  static inline struct srcu_notifier_head *opp_get_notifier(struct device *dev)
03ca370fb   MyungJoo Ham   PM / OPP: Add OPP...
97
98
99
  {
  	return ERR_PTR(-EINVAL);
  }
a96d69d1b   Tony Lindgren   PM / OPP: Fix bui...
100
  #endif		/* CONFIG_PM_OPP */
e1f60b292   Nishanth Menon   PM: Introduce lib...
101
102
103
104
  
  #if defined(CONFIG_CPU_FREQ) && defined(CONFIG_PM_OPP)
  int opp_init_cpufreq_table(struct device *dev,
  			    struct cpufreq_frequency_table **table);
99f381d35   Nishanth Menon   PM / OPP: Introdu...
105
106
  void opp_free_cpufreq_table(struct device *dev,
  				struct cpufreq_frequency_table **table);
e1f60b292   Nishanth Menon   PM: Introduce lib...
107
108
109
110
111
112
  #else
  static inline int opp_init_cpufreq_table(struct device *dev,
  			    struct cpufreq_frequency_table **table)
  {
  	return -EINVAL;
  }
99f381d35   Nishanth Menon   PM / OPP: Introdu...
113
114
115
116
117
118
  
  static inline
  void opp_free_cpufreq_table(struct device *dev,
  				struct cpufreq_frequency_table **table)
  {
  }
e1f60b292   Nishanth Menon   PM: Introduce lib...
119
120
121
  #endif		/* CONFIG_CPU_FREQ */
  
  #endif		/* __LINUX_OPP_H__ */