at v3.5 2.8 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 51#else 52static inline unsigned long opp_get_voltage(struct opp *opp) 53{ 54 return 0; 55} 56 57static inline unsigned long opp_get_freq(struct opp *opp) 58{ 59 return 0; 60} 61 62static inline int opp_get_opp_count(struct device *dev) 63{ 64 return 0; 65} 66 67static inline struct opp *opp_find_freq_exact(struct device *dev, 68 unsigned long freq, bool available) 69{ 70 return ERR_PTR(-EINVAL); 71} 72 73static inline struct opp *opp_find_freq_floor(struct device *dev, 74 unsigned long *freq) 75{ 76 return ERR_PTR(-EINVAL); 77} 78 79static inline struct opp *opp_find_freq_ceil(struct device *dev, 80 unsigned long *freq) 81{ 82 return ERR_PTR(-EINVAL); 83} 84 85static inline int opp_add(struct device *dev, unsigned long freq, 86 unsigned long u_volt) 87{ 88 return -EINVAL; 89} 90 91static inline int opp_enable(struct device *dev, unsigned long freq) 92{ 93 return 0; 94} 95 96static inline int opp_disable(struct device *dev, unsigned long freq) 97{ 98 return 0; 99} 100 101static inline struct srcu_notifier_head *opp_get_notifier(struct device *dev) 102{ 103 return ERR_PTR(-EINVAL); 104} 105#endif /* CONFIG_PM_OPP */ 106 107#if defined(CONFIG_CPU_FREQ) && defined(CONFIG_PM_OPP) 108int opp_init_cpufreq_table(struct device *dev, 109 struct cpufreq_frequency_table **table); 110void opp_free_cpufreq_table(struct device *dev, 111 struct cpufreq_frequency_table **table); 112#else 113static inline int opp_init_cpufreq_table(struct device *dev, 114 struct cpufreq_frequency_table **table) 115{ 116 return -EINVAL; 117} 118 119static inline 120void opp_free_cpufreq_table(struct device *dev, 121 struct cpufreq_frequency_table **table) 122{ 123} 124#endif /* CONFIG_CPU_FREQ */ 125 126#endif /* __LINUX_OPP_H__ */