blob: 5f3a1ee9c4c2b035a8c563e8e50e431b65b447fe [file] [log] [blame]
Thomas Gleixnerd2912cb2019-06-04 10:11:33 +02001/* SPDX-License-Identifier: GPL-2.0-only */
Nishanth Menone1f60b22010-10-13 00:13:10 +02002/*
3 * Generic OPP Interface
4 *
5 * Copyright (C) 2009-2010 Texas Instruments Incorporated.
6 * Nishanth Menon
7 * Romit Dasgupta
8 * Kevin Hilman
Nishanth Menone1f60b22010-10-13 00:13:10 +02009 */
10
11#ifndef __LINUX_OPP_H__
12#define __LINUX_OPP_H__
13
14#include <linux/err.h>
MyungJoo Ham03ca3702011-09-30 22:35:12 +020015#include <linux/notifier.h>
Nishanth Menone1f60b22010-10-13 00:13:10 +020016
Viresh Kumar94735582016-12-01 16:28:20 +053017struct clk;
18struct regulator;
Nishanth Menon47d43ba2013-09-19 16:03:51 -050019struct dev_pm_opp;
Paul Gortmaker313162d2012-01-30 11:46:54 -050020struct device;
Stephen Boyd91291d92016-11-30 16:21:25 +053021struct opp_table;
Nishanth Menone1f60b22010-10-13 00:13:10 +020022
Nishanth Menon47d43ba2013-09-19 16:03:51 -050023enum dev_pm_opp_event {
Viresh Kumar129eec52014-11-27 08:54:06 +053024 OPP_EVENT_ADD, OPP_EVENT_REMOVE, OPP_EVENT_ENABLE, OPP_EVENT_DISABLE,
MyungJoo Ham03ca3702011-09-30 22:35:12 +020025};
26
Viresh Kumar0f0fe7e2016-12-01 16:28:17 +053027/**
28 * struct dev_pm_opp_supply - Power supply voltage/current values
29 * @u_volt: Target voltage in microvolts corresponding to this OPP
30 * @u_volt_min: Minimum voltage in microvolts corresponding to this OPP
31 * @u_volt_max: Maximum voltage in microvolts corresponding to this OPP
32 * @u_amp: Maximum current drawn by the device in microamperes
33 *
34 * This structure stores the voltage/current values for a single power supply.
35 */
36struct dev_pm_opp_supply {
37 unsigned long u_volt;
38 unsigned long u_volt_min;
39 unsigned long u_volt_max;
40 unsigned long u_amp;
41};
42
Viresh Kumar94735582016-12-01 16:28:20 +053043/**
44 * struct dev_pm_opp_info - OPP freq/voltage/current values
45 * @rate: Target clk rate in hz
46 * @supplies: Array of voltage/current values for all power supplies
47 *
48 * This structure stores the freq/voltage/current values for a single OPP.
49 */
50struct dev_pm_opp_info {
51 unsigned long rate;
52 struct dev_pm_opp_supply *supplies;
53};
54
55/**
56 * struct dev_pm_set_opp_data - Set OPP data
57 * @old_opp: Old OPP info
58 * @new_opp: New OPP info
59 * @regulators: Array of regulator pointers
60 * @regulator_count: Number of regulators
61 * @clk: Pointer to clk
62 * @dev: Pointer to the struct device
63 *
64 * This structure contains all information required for setting an OPP.
65 */
66struct dev_pm_set_opp_data {
67 struct dev_pm_opp_info old_opp;
68 struct dev_pm_opp_info new_opp;
69
70 struct regulator **regulators;
71 unsigned int regulator_count;
72 struct clk *clk;
73 struct device *dev;
74};
75
Nishanth Menone1f60b22010-10-13 00:13:10 +020076#if defined(CONFIG_PM_OPP)
77
Viresh Kumarf067a982017-01-23 10:11:42 +053078struct opp_table *dev_pm_opp_get_opp_table(struct device *dev);
Viresh Kumareb7c87432018-09-05 16:17:14 +053079struct opp_table *dev_pm_opp_get_opp_table_indexed(struct device *dev, int index);
Viresh Kumarf067a982017-01-23 10:11:42 +053080void dev_pm_opp_put_opp_table(struct opp_table *opp_table);
81
Nishanth Menon47d43ba2013-09-19 16:03:51 -050082unsigned long dev_pm_opp_get_voltage(struct dev_pm_opp *opp);
Nishanth Menone1f60b22010-10-13 00:13:10 +020083
Nishanth Menon47d43ba2013-09-19 16:03:51 -050084unsigned long dev_pm_opp_get_freq(struct dev_pm_opp *opp);
Nishanth Menone1f60b22010-10-13 00:13:10 +020085
Rajendra Nayak5b93ac52019-01-10 09:32:02 +053086unsigned int dev_pm_opp_get_level(struct dev_pm_opp *opp);
87
Bartlomiej Zolnierkiewicz19445b22015-07-09 17:43:35 +020088bool dev_pm_opp_is_turbo(struct dev_pm_opp *opp);
89
Nishanth Menon5d4879c2013-09-19 16:03:50 -050090int dev_pm_opp_get_opp_count(struct device *dev);
Viresh Kumar3ca9bb32015-07-29 16:23:03 +053091unsigned long dev_pm_opp_get_max_clock_latency(struct device *dev);
Viresh Kumar655c9df2016-02-09 10:30:35 +053092unsigned long dev_pm_opp_get_max_volt_latency(struct device *dev);
Viresh Kumar21743442016-02-09 10:30:36 +053093unsigned long dev_pm_opp_get_max_transition_latency(struct device *dev);
Viresh Kumar3aa26a32017-01-02 14:41:02 +053094unsigned long dev_pm_opp_get_suspend_opp_freq(struct device *dev);
Nishanth Menone1f60b22010-10-13 00:13:10 +020095
Nishanth Menon47d43ba2013-09-19 16:03:51 -050096struct dev_pm_opp *dev_pm_opp_find_freq_exact(struct device *dev,
97 unsigned long freq,
98 bool available);
Nishanth Menone1f60b22010-10-13 00:13:10 +020099
Nishanth Menon47d43ba2013-09-19 16:03:51 -0500100struct dev_pm_opp *dev_pm_opp_find_freq_floor(struct device *dev,
101 unsigned long *freq);
Andrew-sh.Cheng2f36bde2019-03-29 14:46:10 +0800102struct dev_pm_opp *dev_pm_opp_find_freq_ceil_by_volt(struct device *dev,
103 unsigned long u_volt);
Nishanth Menone1f60b22010-10-13 00:13:10 +0200104
Nishanth Menon47d43ba2013-09-19 16:03:51 -0500105struct dev_pm_opp *dev_pm_opp_find_freq_ceil(struct device *dev,
106 unsigned long *freq);
Viresh Kumar70347642017-01-23 10:11:46 +0530107void dev_pm_opp_put(struct dev_pm_opp *opp);
Nishanth Menone1f60b22010-10-13 00:13:10 +0200108
Nishanth Menon5d4879c2013-09-19 16:03:50 -0500109int dev_pm_opp_add(struct device *dev, unsigned long freq,
110 unsigned long u_volt);
Viresh Kumar129eec52014-11-27 08:54:06 +0530111void dev_pm_opp_remove(struct device *dev, unsigned long freq);
Viresh Kumar1690d8b2019-01-04 15:14:33 +0530112void dev_pm_opp_remove_all_dynamic(struct device *dev);
Nishanth Menone1f60b22010-10-13 00:13:10 +0200113
Nishanth Menon5d4879c2013-09-19 16:03:50 -0500114int dev_pm_opp_enable(struct device *dev, unsigned long freq);
Nishanth Menone1f60b22010-10-13 00:13:10 +0200115
Nishanth Menon5d4879c2013-09-19 16:03:50 -0500116int dev_pm_opp_disable(struct device *dev, unsigned long freq);
Nishanth Menone1f60b22010-10-13 00:13:10 +0200117
Viresh Kumardc2c9ad2017-01-02 14:41:03 +0530118int dev_pm_opp_register_notifier(struct device *dev, struct notifier_block *nb);
119int dev_pm_opp_unregister_notifier(struct device *dev, struct notifier_block *nb);
120
Viresh Kumarfa301842017-01-23 10:11:43 +0530121struct opp_table *dev_pm_opp_set_supported_hw(struct device *dev, const u32 *versions, unsigned int count);
122void dev_pm_opp_put_supported_hw(struct opp_table *opp_table);
123struct opp_table *dev_pm_opp_set_prop_name(struct device *dev, const char *name);
124void dev_pm_opp_put_prop_name(struct opp_table *opp_table);
Viresh Kumardfbe4672016-12-01 16:28:19 +0530125struct opp_table *dev_pm_opp_set_regulators(struct device *dev, const char * const names[], unsigned int count);
126void dev_pm_opp_put_regulators(struct opp_table *opp_table);
Viresh Kumar829a4e82017-06-21 10:29:13 +0530127struct opp_table *dev_pm_opp_set_clkname(struct device *dev, const char * name);
128void dev_pm_opp_put_clkname(struct opp_table *opp_table);
Viresh Kumarfa301842017-01-23 10:11:43 +0530129struct opp_table *dev_pm_opp_register_set_opp_helper(struct device *dev, int (*set_opp)(struct dev_pm_set_opp_data *data));
Viresh Kumar604a7ae2017-10-05 17:26:21 +0530130void dev_pm_opp_unregister_set_opp_helper(struct opp_table *opp_table);
Viresh Kumar4f018bc2018-06-26 16:29:34 +0530131struct opp_table *dev_pm_opp_set_genpd_virt_dev(struct device *dev, struct device *virt_dev, int index);
132void dev_pm_opp_put_genpd_virt_dev(struct opp_table *opp_table, struct device *virt_dev);
Viresh Kumarc8a59102018-11-02 14:36:42 +0530133int dev_pm_opp_xlate_performance_state(struct opp_table *src_table, struct opp_table *dst_table, unsigned int pstate);
Viresh Kumar6a0712f2016-02-09 10:30:39 +0530134int dev_pm_opp_set_rate(struct device *dev, unsigned long target_freq);
Arnd Bergmannddbb74b2016-04-30 13:33:29 +0200135int dev_pm_opp_set_sharing_cpus(struct device *cpu_dev, const struct cpumask *cpumask);
136int dev_pm_opp_get_sharing_cpus(struct device *cpu_dev, struct cpumask *cpumask);
Sudeep Holla411466c2016-05-03 15:05:04 +0100137void dev_pm_opp_remove_table(struct device *dev);
138void dev_pm_opp_cpumask_remove_table(const struct cpumask *cpumask);
Nishanth Menone1f60b22010-10-13 00:13:10 +0200139#else
Viresh Kumarf067a982017-01-23 10:11:42 +0530140static inline struct opp_table *dev_pm_opp_get_opp_table(struct device *dev)
141{
142 return ERR_PTR(-ENOTSUPP);
143}
144
Viresh Kumareb7c87432018-09-05 16:17:14 +0530145static inline struct opp_table *dev_pm_opp_get_opp_table_indexed(struct device *dev, int index)
146{
147 return ERR_PTR(-ENOTSUPP);
148}
149
Viresh Kumarf067a982017-01-23 10:11:42 +0530150static inline void dev_pm_opp_put_opp_table(struct opp_table *opp_table) {}
151
Nishanth Menon47d43ba2013-09-19 16:03:51 -0500152static inline unsigned long dev_pm_opp_get_voltage(struct dev_pm_opp *opp)
Nishanth Menone1f60b22010-10-13 00:13:10 +0200153{
154 return 0;
155}
156
Nishanth Menon47d43ba2013-09-19 16:03:51 -0500157static inline unsigned long dev_pm_opp_get_freq(struct dev_pm_opp *opp)
Nishanth Menone1f60b22010-10-13 00:13:10 +0200158{
159 return 0;
160}
161
Rajendra Nayak5b93ac52019-01-10 09:32:02 +0530162static inline unsigned int dev_pm_opp_get_level(struct dev_pm_opp *opp)
163{
164 return 0;
165}
166
Bartlomiej Zolnierkiewicz19445b22015-07-09 17:43:35 +0200167static inline bool dev_pm_opp_is_turbo(struct dev_pm_opp *opp)
168{
169 return false;
170}
171
Nishanth Menon5d4879c2013-09-19 16:03:50 -0500172static inline int dev_pm_opp_get_opp_count(struct device *dev)
Nishanth Menone1f60b22010-10-13 00:13:10 +0200173{
174 return 0;
175}
176
Viresh Kumar3ca9bb32015-07-29 16:23:03 +0530177static inline unsigned long dev_pm_opp_get_max_clock_latency(struct device *dev)
178{
179 return 0;
180}
181
Viresh Kumar655c9df2016-02-09 10:30:35 +0530182static inline unsigned long dev_pm_opp_get_max_volt_latency(struct device *dev)
183{
184 return 0;
185}
186
Viresh Kumar21743442016-02-09 10:30:36 +0530187static inline unsigned long dev_pm_opp_get_max_transition_latency(struct device *dev)
188{
189 return 0;
190}
191
Viresh Kumar3aa26a32017-01-02 14:41:02 +0530192static inline unsigned long dev_pm_opp_get_suspend_opp_freq(struct device *dev)
Bartlomiej Zolnierkiewicz4eafbd12015-09-08 18:41:01 +0200193{
Viresh Kumar3aa26a32017-01-02 14:41:02 +0530194 return 0;
Bartlomiej Zolnierkiewicz4eafbd12015-09-08 18:41:01 +0200195}
196
Nishanth Menon47d43ba2013-09-19 16:03:51 -0500197static inline struct dev_pm_opp *dev_pm_opp_find_freq_exact(struct device *dev,
Nishanth Menone1f60b22010-10-13 00:13:10 +0200198 unsigned long freq, bool available)
199{
Viresh Kumard708b3842016-04-27 08:52:21 +0530200 return ERR_PTR(-ENOTSUPP);
Nishanth Menone1f60b22010-10-13 00:13:10 +0200201}
202
Nishanth Menon47d43ba2013-09-19 16:03:51 -0500203static inline struct dev_pm_opp *dev_pm_opp_find_freq_floor(struct device *dev,
Nishanth Menone1f60b22010-10-13 00:13:10 +0200204 unsigned long *freq)
205{
Viresh Kumard708b3842016-04-27 08:52:21 +0530206 return ERR_PTR(-ENOTSUPP);
Nishanth Menone1f60b22010-10-13 00:13:10 +0200207}
208
Andrew-sh.Cheng2f36bde2019-03-29 14:46:10 +0800209static inline struct dev_pm_opp *dev_pm_opp_find_freq_ceil_by_volt(struct device *dev,
210 unsigned long u_volt)
211{
212 return ERR_PTR(-ENOTSUPP);
213}
214
Nishanth Menon47d43ba2013-09-19 16:03:51 -0500215static inline struct dev_pm_opp *dev_pm_opp_find_freq_ceil(struct device *dev,
Nishanth Menone1f60b22010-10-13 00:13:10 +0200216 unsigned long *freq)
217{
Viresh Kumard708b3842016-04-27 08:52:21 +0530218 return ERR_PTR(-ENOTSUPP);
Nishanth Menone1f60b22010-10-13 00:13:10 +0200219}
220
Viresh Kumar70347642017-01-23 10:11:46 +0530221static inline void dev_pm_opp_put(struct dev_pm_opp *opp) {}
222
Nishanth Menon5d4879c2013-09-19 16:03:50 -0500223static inline int dev_pm_opp_add(struct device *dev, unsigned long freq,
Nishanth Menone1f60b22010-10-13 00:13:10 +0200224 unsigned long u_volt)
225{
Viresh Kumard708b3842016-04-27 08:52:21 +0530226 return -ENOTSUPP;
Nishanth Menone1f60b22010-10-13 00:13:10 +0200227}
228
Viresh Kumar129eec52014-11-27 08:54:06 +0530229static inline void dev_pm_opp_remove(struct device *dev, unsigned long freq)
230{
231}
232
Viresh Kumar1690d8b2019-01-04 15:14:33 +0530233static inline void dev_pm_opp_remove_all_dynamic(struct device *dev)
234{
235}
236
Nishanth Menon5d4879c2013-09-19 16:03:50 -0500237static inline int dev_pm_opp_enable(struct device *dev, unsigned long freq)
Nishanth Menone1f60b22010-10-13 00:13:10 +0200238{
239 return 0;
240}
241
Nishanth Menon5d4879c2013-09-19 16:03:50 -0500242static inline int dev_pm_opp_disable(struct device *dev, unsigned long freq)
Nishanth Menone1f60b22010-10-13 00:13:10 +0200243{
244 return 0;
245}
MyungJoo Ham03ca3702011-09-30 22:35:12 +0200246
Viresh Kumardc2c9ad2017-01-02 14:41:03 +0530247static inline int dev_pm_opp_register_notifier(struct device *dev, struct notifier_block *nb)
MyungJoo Ham03ca3702011-09-30 22:35:12 +0200248{
Viresh Kumardc2c9ad2017-01-02 14:41:03 +0530249 return -ENOTSUPP;
250}
251
252static inline int dev_pm_opp_unregister_notifier(struct device *dev, struct notifier_block *nb)
253{
254 return -ENOTSUPP;
MyungJoo Ham03ca3702011-09-30 22:35:12 +0200255}
Viresh Kumar7de36b02015-12-09 08:01:46 +0530256
Viresh Kumarfa301842017-01-23 10:11:43 +0530257static inline struct opp_table *dev_pm_opp_set_supported_hw(struct device *dev,
258 const u32 *versions,
259 unsigned int count)
Viresh Kumar7de36b02015-12-09 08:01:46 +0530260{
Viresh Kumarfa301842017-01-23 10:11:43 +0530261 return ERR_PTR(-ENOTSUPP);
Viresh Kumar7de36b02015-12-09 08:01:46 +0530262}
263
Viresh Kumarfa301842017-01-23 10:11:43 +0530264static inline void dev_pm_opp_put_supported_hw(struct opp_table *opp_table) {}
Viresh Kumar7de36b02015-12-09 08:01:46 +0530265
Viresh Kumarfa301842017-01-23 10:11:43 +0530266static inline struct opp_table *dev_pm_opp_register_set_opp_helper(struct device *dev,
Viresh Kumar4dab1602016-12-01 16:28:21 +0530267 int (*set_opp)(struct dev_pm_set_opp_data *data))
268{
Viresh Kumarfa301842017-01-23 10:11:43 +0530269 return ERR_PTR(-ENOTSUPP);
Viresh Kumar4dab1602016-12-01 16:28:21 +0530270}
271
Viresh Kumar604a7ae2017-10-05 17:26:21 +0530272static inline void dev_pm_opp_unregister_set_opp_helper(struct opp_table *opp_table) {}
Viresh Kumar4dab1602016-12-01 16:28:21 +0530273
Viresh Kumarfa301842017-01-23 10:11:43 +0530274static inline struct opp_table *dev_pm_opp_set_prop_name(struct device *dev, const char *name)
Viresh Kumar01fb4d32015-12-09 08:01:47 +0530275{
Viresh Kumarfa301842017-01-23 10:11:43 +0530276 return ERR_PTR(-ENOTSUPP);
Viresh Kumar01fb4d32015-12-09 08:01:47 +0530277}
278
Viresh Kumarfa301842017-01-23 10:11:43 +0530279static inline void dev_pm_opp_put_prop_name(struct opp_table *opp_table) {}
Viresh Kumar01fb4d32015-12-09 08:01:47 +0530280
Viresh Kumardfbe4672016-12-01 16:28:19 +0530281static inline struct opp_table *dev_pm_opp_set_regulators(struct device *dev, const char * const names[], unsigned int count)
Viresh Kumar9f8ea962016-02-09 10:30:33 +0530282{
Stephen Boyd91291d92016-11-30 16:21:25 +0530283 return ERR_PTR(-ENOTSUPP);
Viresh Kumar9f8ea962016-02-09 10:30:33 +0530284}
285
Viresh Kumardfbe4672016-12-01 16:28:19 +0530286static inline void dev_pm_opp_put_regulators(struct opp_table *opp_table) {}
Viresh Kumar9f8ea962016-02-09 10:30:33 +0530287
Viresh Kumar829a4e82017-06-21 10:29:13 +0530288static inline struct opp_table *dev_pm_opp_set_clkname(struct device *dev, const char * name)
289{
290 return ERR_PTR(-ENOTSUPP);
291}
292
293static inline void dev_pm_opp_put_clkname(struct opp_table *opp_table) {}
294
Viresh Kumar4f018bc2018-06-26 16:29:34 +0530295static inline struct opp_table *dev_pm_opp_set_genpd_virt_dev(struct device *dev, struct device *virt_dev, int index)
296{
297 return ERR_PTR(-ENOTSUPP);
298}
299
300static inline void dev_pm_opp_put_genpd_virt_dev(struct opp_table *opp_table, struct device *virt_dev) {}
Viresh Kumarc8a59102018-11-02 14:36:42 +0530301
302static inline int dev_pm_opp_xlate_performance_state(struct opp_table *src_table, struct opp_table *dst_table, unsigned int pstate)
303{
304 return -ENOTSUPP;
305}
306
Viresh Kumar6a0712f2016-02-09 10:30:39 +0530307static inline int dev_pm_opp_set_rate(struct device *dev, unsigned long target_freq)
308{
Viresh Kumard708b3842016-04-27 08:52:21 +0530309 return -ENOTSUPP;
Viresh Kumar6a0712f2016-02-09 10:30:39 +0530310}
311
Arnd Bergmannddbb74b2016-04-30 13:33:29 +0200312static inline int dev_pm_opp_set_sharing_cpus(struct device *cpu_dev, const struct cpumask *cpumask)
Viresh Kumar642aa8c2016-04-21 14:28:55 +0530313{
Viresh Kumard708b3842016-04-27 08:52:21 +0530314 return -ENOTSUPP;
Viresh Kumar642aa8c2016-04-21 14:28:55 +0530315}
316
Arnd Bergmannddbb74b2016-04-30 13:33:29 +0200317static inline int dev_pm_opp_get_sharing_cpus(struct device *cpu_dev, struct cpumask *cpumask)
Viresh Kumar6f707da2016-04-27 08:52:23 +0530318{
319 return -EINVAL;
320}
321
Sudeep Holla411466c2016-05-03 15:05:04 +0100322static inline void dev_pm_opp_remove_table(struct device *dev)
323{
324}
325
326static inline void dev_pm_opp_cpumask_remove_table(const struct cpumask *cpumask)
327{
328}
329
Tony Lindgrena96d69d2011-11-03 10:12:27 +0100330#endif /* CONFIG_PM_OPP */
Nishanth Menone1f60b22010-10-13 00:13:10 +0200331
Shawn Guod6561bb2013-02-21 11:04:45 +0000332#if defined(CONFIG_PM_OPP) && defined(CONFIG_OF)
Viresh Kumar8f8d37b2015-09-04 13:47:24 +0530333int dev_pm_opp_of_add_table(struct device *dev);
Viresh Kumarfa9b2742017-04-26 10:45:46 +0530334int dev_pm_opp_of_add_table_indexed(struct device *dev, int index);
Viresh Kumar8f8d37b2015-09-04 13:47:24 +0530335void dev_pm_opp_of_remove_table(struct device *dev);
Arnd Bergmannddbb74b2016-04-30 13:33:29 +0200336int dev_pm_opp_of_cpumask_add_table(const struct cpumask *cpumask);
337void dev_pm_opp_of_cpumask_remove_table(const struct cpumask *cpumask);
338int dev_pm_opp_of_get_sharing_cpus(struct device *cpu_dev, struct cpumask *cpumask);
Dave Gerlach0764c602017-02-03 11:29:26 -0600339struct device_node *dev_pm_opp_of_get_opp_desc_node(struct device *dev);
Viresh Kumare2f4b5f2018-01-12 10:03:45 +0530340struct device_node *dev_pm_opp_get_of_node(struct dev_pm_opp *opp);
Viresh Kumar2feb5a82018-12-14 15:20:56 +0530341int of_get_required_opp_performance_state(struct device_node *np, int index);
Quentin Perreta4f342b2019-02-04 11:09:48 +0000342void dev_pm_opp_of_register_em(struct cpumask *cpus);
Shawn Guod6561bb2013-02-21 11:04:45 +0000343#else
Viresh Kumar8f8d37b2015-09-04 13:47:24 +0530344static inline int dev_pm_opp_of_add_table(struct device *dev)
Shawn Guod6561bb2013-02-21 11:04:45 +0000345{
Viresh Kumard708b3842016-04-27 08:52:21 +0530346 return -ENOTSUPP;
Shawn Guod6561bb2013-02-21 11:04:45 +0000347}
Viresh Kumar129eec52014-11-27 08:54:06 +0530348
Viresh Kumarfa9b2742017-04-26 10:45:46 +0530349static inline int dev_pm_opp_of_add_table_indexed(struct device *dev, int index)
350{
351 return -ENOTSUPP;
352}
353
Viresh Kumar8f8d37b2015-09-04 13:47:24 +0530354static inline void dev_pm_opp_of_remove_table(struct device *dev)
Viresh Kumar129eec52014-11-27 08:54:06 +0530355{
356}
Viresh Kumar8d4d4e92015-06-12 17:10:38 +0530357
Arnd Bergmannddbb74b2016-04-30 13:33:29 +0200358static inline int dev_pm_opp_of_cpumask_add_table(const struct cpumask *cpumask)
Viresh Kumar8d4d4e92015-06-12 17:10:38 +0530359{
Viresh Kumard708b3842016-04-27 08:52:21 +0530360 return -ENOTSUPP;
Viresh Kumar8d4d4e92015-06-12 17:10:38 +0530361}
362
Arnd Bergmannddbb74b2016-04-30 13:33:29 +0200363static inline void dev_pm_opp_of_cpumask_remove_table(const struct cpumask *cpumask)
Viresh Kumar8d4d4e92015-06-12 17:10:38 +0530364{
365}
366
Arnd Bergmannddbb74b2016-04-30 13:33:29 +0200367static inline int dev_pm_opp_of_get_sharing_cpus(struct device *cpu_dev, struct cpumask *cpumask)
Viresh Kumar8d4d4e92015-06-12 17:10:38 +0530368{
Viresh Kumard708b3842016-04-27 08:52:21 +0530369 return -ENOTSUPP;
Viresh Kumar8d4d4e92015-06-12 17:10:38 +0530370}
Dave Gerlach0764c602017-02-03 11:29:26 -0600371
372static inline struct device_node *dev_pm_opp_of_get_opp_desc_node(struct device *dev)
373{
374 return NULL;
375}
Viresh Kumara88bd2a2017-11-29 15:18:36 +0530376
Viresh Kumare2f4b5f2018-01-12 10:03:45 +0530377static inline struct device_node *dev_pm_opp_get_of_node(struct dev_pm_opp *opp)
378{
379 return NULL;
380}
Quentin Perreta4f342b2019-02-04 11:09:48 +0000381
382static inline void dev_pm_opp_of_register_em(struct cpumask *cpus)
383{
384}
385
Viresh Kumar2feb5a82018-12-14 15:20:56 +0530386static inline int of_get_required_opp_performance_state(struct device_node *np, int index)
Viresh Kumar4c6a3432018-06-27 16:29:50 +0530387{
Viresh Kumar2feb5a82018-12-14 15:20:56 +0530388 return -ENOTSUPP;
Viresh Kumar4c6a3432018-06-27 16:29:50 +0530389}
Shawn Guod6561bb2013-02-21 11:04:45 +0000390#endif
391
Nishanth Menone1f60b22010-10-13 00:13:10 +0200392#endif /* __LINUX_OPP_H__ */