at v3.11 3.0 kB view raw
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> 18#include <linux/cpufreq.h> 19#include <linux/notifier.h> 20 21struct opp; 22struct device; 23 24enum opp_event { 25 OPP_EVENT_ADD, OPP_EVENT_ENABLE, OPP_EVENT_DISABLE, 26}; 27 28#if defined(CONFIG_PM_OPP) 29 30unsigned long opp_get_voltage(struct opp *opp); 31 32unsigned long opp_get_freq(struct opp *opp); 33 34int opp_get_opp_count(struct device *dev); 35 36struct opp *opp_find_freq_exact(struct device *dev, unsigned long freq, 37 bool available); 38 39struct opp *opp_find_freq_floor(struct device *dev, unsigned long *freq); 40 41struct opp *opp_find_freq_ceil(struct device *dev, unsigned long *freq); 42 43int opp_add(struct device *dev, unsigned long freq, unsigned long u_volt); 44 45int opp_enable(struct device *dev, unsigned long freq); 46 47int opp_disable(struct device *dev, unsigned long freq); 48 49struct srcu_notifier_head *opp_get_notifier(struct device *dev); 50#else 51static inline unsigned long opp_get_voltage(struct opp *opp) 52{ 53 return 0; 54} 55 56static inline unsigned long opp_get_freq(struct opp *opp) 57{ 58 return 0; 59} 60 61static inline int opp_get_opp_count(struct device *dev) 62{ 63 return 0; 64} 65 66static inline struct opp *opp_find_freq_exact(struct device *dev, 67 unsigned long freq, bool available) 68{ 69 return ERR_PTR(-EINVAL); 70} 71 72static inline struct opp *opp_find_freq_floor(struct device *dev, 73 unsigned long *freq) 74{ 75 return ERR_PTR(-EINVAL); 76} 77 78static inline struct opp *opp_find_freq_ceil(struct device *dev, 79 unsigned long *freq) 80{ 81 return ERR_PTR(-EINVAL); 82} 83 84static inline int opp_add(struct device *dev, unsigned long freq, 85 unsigned long u_volt) 86{ 87 return -EINVAL; 88} 89 90static inline int opp_enable(struct device *dev, unsigned long freq) 91{ 92 return 0; 93} 94 95static inline int opp_disable(struct device *dev, unsigned long freq) 96{ 97 return 0; 98} 99 100static inline struct srcu_notifier_head *opp_get_notifier(struct device *dev) 101{ 102 return ERR_PTR(-EINVAL); 103} 104#endif /* CONFIG_PM_OPP */ 105 106#if defined(CONFIG_PM_OPP) && defined(CONFIG_OF) 107int of_init_opp_table(struct device *dev); 108#else 109static inline int of_init_opp_table(struct device *dev) 110{ 111 return -EINVAL; 112} 113#endif 114 115#if defined(CONFIG_CPU_FREQ) && defined(CONFIG_PM_OPP) 116int opp_init_cpufreq_table(struct device *dev, 117 struct cpufreq_frequency_table **table); 118void opp_free_cpufreq_table(struct device *dev, 119 struct cpufreq_frequency_table **table); 120#else 121static inline int opp_init_cpufreq_table(struct device *dev, 122 struct cpufreq_frequency_table **table) 123{ 124 return -EINVAL; 125} 126 127static inline 128void opp_free_cpufreq_table(struct device *dev, 129 struct cpufreq_frequency_table **table) 130{ 131} 132#endif /* CONFIG_CPU_FREQ */ 133 134#endif /* __LINUX_OPP_H__ */