drivers/base/power/opp/core.c:302:15: error: redefinition of 'dev_pm_opp_get_max_transition_latency'

From: kbuild test robot
Date: Sun Feb 12 2017 - 15:10:50 EST


tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 1ce42845f987e92eabfc6e026d44d826c25c74a5
commit: 2174344765f472895c076d703c9cdc58215e1393 PM / OPP: Introduce dev_pm_opp_get_max_transition_latency()
date: 1 year ago
config: x86_64-randconfig-x008-201707 (attached as .config)
compiler: gcc-6 (Debian 6.2.0-3) 6.2.0 20160901
reproduce:
git checkout 2174344765f472895c076d703c9cdc58215e1393
# save the attached .config to linux build tree
make ARCH=x86_64

All errors (new ones prefixed by >>):

drivers/base/power/opp/core.c:124:15: error: redefinition of 'dev_pm_opp_get_voltage'
unsigned long dev_pm_opp_get_voltage(struct dev_pm_opp *opp)
^~~~~~~~~~~~~~~~~~~~~~
In file included from drivers/base/power/opp/opp.h:21:0,
from drivers/base/power/opp/core.c:24:
include/linux/pm_opp.h:68:29: note: previous definition of 'dev_pm_opp_get_voltage' was here
static inline unsigned long dev_pm_opp_get_voltage(struct dev_pm_opp *opp)
^~~~~~~~~~~~~~~~~~~~~~
drivers/base/power/opp/core.c:156:15: error: redefinition of 'dev_pm_opp_get_freq'
unsigned long dev_pm_opp_get_freq(struct dev_pm_opp *opp)
^~~~~~~~~~~~~~~~~~~
In file included from drivers/base/power/opp/opp.h:21:0,
from drivers/base/power/opp/core.c:24:
include/linux/pm_opp.h:73:29: note: previous definition of 'dev_pm_opp_get_freq' was here
static inline unsigned long dev_pm_opp_get_freq(struct dev_pm_opp *opp)
^~~~~~~~~~~~~~~~~~~
drivers/base/power/opp/core.c:191:6: error: redefinition of 'dev_pm_opp_is_turbo'
bool dev_pm_opp_is_turbo(struct dev_pm_opp *opp)
^~~~~~~~~~~~~~~~~~~
In file included from drivers/base/power/opp/opp.h:21:0,
from drivers/base/power/opp/core.c:24:
include/linux/pm_opp.h:78:20: note: previous definition of 'dev_pm_opp_is_turbo' was here
static inline bool dev_pm_opp_is_turbo(struct dev_pm_opp *opp)
^~~~~~~~~~~~~~~~~~~
drivers/base/power/opp/core.c:215:15: error: redefinition of 'dev_pm_opp_get_max_clock_latency'
unsigned long dev_pm_opp_get_max_clock_latency(struct device *dev)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from drivers/base/power/opp/opp.h:21:0,
from drivers/base/power/opp/core.c:24:
include/linux/pm_opp.h:88:29: note: previous definition of 'dev_pm_opp_get_max_clock_latency' was here
static inline unsigned long dev_pm_opp_get_max_clock_latency(struct device *dev)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/base/power/opp/core.c:241:15: error: redefinition of 'dev_pm_opp_get_max_volt_latency'
unsigned long dev_pm_opp_get_max_volt_latency(struct device *dev)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from drivers/base/power/opp/opp.h:21:0,
from drivers/base/power/opp/core.c:24:
include/linux/pm_opp.h:93:29: note: previous definition of 'dev_pm_opp_get_max_volt_latency' was here
static inline unsigned long dev_pm_opp_get_max_volt_latency(struct device *dev)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/base/power/opp/core.c:302:15: error: redefinition of 'dev_pm_opp_get_max_transition_latency'
unsigned long dev_pm_opp_get_max_transition_latency(struct device *dev)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from drivers/base/power/opp/opp.h:21:0,
from drivers/base/power/opp/core.c:24:
include/linux/pm_opp.h:98:29: note: previous definition of 'dev_pm_opp_get_max_transition_latency' was here
static inline unsigned long dev_pm_opp_get_max_transition_latency(struct device *dev)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/base/power/opp/core.c:322:20: error: redefinition of 'dev_pm_opp_get_suspend_opp'
struct dev_pm_opp *dev_pm_opp_get_suspend_opp(struct device *dev)
^~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from drivers/base/power/opp/opp.h:21:0,
from drivers/base/power/opp/core.c:24:
include/linux/pm_opp.h:103:34: note: previous definition of 'dev_pm_opp_get_suspend_opp' was here
static inline struct dev_pm_opp *dev_pm_opp_get_suspend_opp(struct device *dev)
^~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/base/power/opp/core.c:346:5: error: redefinition of 'dev_pm_opp_get_opp_count'
int dev_pm_opp_get_opp_count(struct device *dev)
^~~~~~~~~~~~~~~~~~~~~~~~
In file included from drivers/base/power/opp/opp.h:21:0,
from drivers/base/power/opp/core.c:24:
include/linux/pm_opp.h:83:19: note: previous definition of 'dev_pm_opp_get_opp_count' was here
static inline int dev_pm_opp_get_opp_count(struct device *dev)
^~~~~~~~~~~~~~~~~~~~~~~~
drivers/base/power/opp/core.c:399:20: error: redefinition of 'dev_pm_opp_find_freq_exact'
struct dev_pm_opp *dev_pm_opp_find_freq_exact(struct device *dev,
^~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from drivers/base/power/opp/opp.h:21:0,
from drivers/base/power/opp/core.c:24:
include/linux/pm_opp.h:108:34: note: previous definition of 'dev_pm_opp_find_freq_exact' was here
static inline struct dev_pm_opp *dev_pm_opp_find_freq_exact(struct device *dev,
^~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/base/power/opp/core.c:448:20: error: redefinition of 'dev_pm_opp_find_freq_ceil'
struct dev_pm_opp *dev_pm_opp_find_freq_ceil(struct device *dev,
^~~~~~~~~~~~~~~~~~~~~~~~~
In file included from drivers/base/power/opp/opp.h:21:0,
from drivers/base/power/opp/core.c:24:
include/linux/pm_opp.h:120:34: note: previous definition of 'dev_pm_opp_find_freq_ceil' was here
static inline struct dev_pm_opp *dev_pm_opp_find_freq_ceil(struct device *dev,
^~~~~~~~~~~~~~~~~~~~~~~~~
drivers/base/power/opp/core.c:498:20: error: redefinition of 'dev_pm_opp_find_freq_floor'
struct dev_pm_opp *dev_pm_opp_find_freq_floor(struct device *dev,
^~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from drivers/base/power/opp/opp.h:21:0,
from drivers/base/power/opp/core.c:24:
include/linux/pm_opp.h:114:34: note: previous definition of 'dev_pm_opp_find_freq_floor' was here
static inline struct dev_pm_opp *dev_pm_opp_find_freq_floor(struct device *dev,
^~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/base/power/opp/core.c:713:6: error: redefinition of 'dev_pm_opp_remove'
void dev_pm_opp_remove(struct device *dev, unsigned long freq)
^~~~~~~~~~~~~~~~~
In file included from drivers/base/power/opp/opp.h:21:0,
from drivers/base/power/opp/core.c:24:
include/linux/pm_opp.h:132:20: note: previous definition of 'dev_pm_opp_remove' was here
static inline void dev_pm_opp_remove(struct device *dev, unsigned long freq)
^~~~~~~~~~~~~~~~~
drivers/base/power/opp/core.c:989:5: error: redefinition of 'dev_pm_opp_set_supported_hw'
int dev_pm_opp_set_supported_hw(struct device *dev, const u32 *versions,
^~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from drivers/base/power/opp/opp.h:21:0,
from drivers/base/power/opp/core.c:24:
include/linux/pm_opp.h:152:19: note: previous definition of 'dev_pm_opp_set_supported_hw' was here
static inline int dev_pm_opp_set_supported_hw(struct device *dev,
^~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/base/power/opp/core.c:1049:6: error: redefinition of 'dev_pm_opp_put_supported_hw'
void dev_pm_opp_put_supported_hw(struct device *dev)
^~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from drivers/base/power/opp/opp.h:21:0,
from drivers/base/power/opp/core.c:24:
include/linux/pm_opp.h:159:20: note: previous definition of 'dev_pm_opp_put_supported_hw' was here
static inline void dev_pm_opp_put_supported_hw(struct device *dev) {}
^~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/base/power/opp/core.c:1100:5: error: redefinition of 'dev_pm_opp_set_prop_name'
int dev_pm_opp_set_prop_name(struct device *dev, const char *name)
^~~~~~~~~~~~~~~~~~~~~~~~
In file included from drivers/base/power/opp/opp.h:21:0,
from drivers/base/power/opp/core.c:24:
include/linux/pm_opp.h:161:19: note: previous definition of 'dev_pm_opp_set_prop_name' was here
static inline int dev_pm_opp_set_prop_name(struct device *dev, const char *name)
^~~~~~~~~~~~~~~~~~~~~~~~
drivers/base/power/opp/core.c:1157:6: error: redefinition of 'dev_pm_opp_put_prop_name'
void dev_pm_opp_put_prop_name(struct device *dev)
^~~~~~~~~~~~~~~~~~~~~~~~
In file included from drivers/base/power/opp/opp.h:21:0,
from drivers/base/power/opp/core.c:24:
include/linux/pm_opp.h:166:20: note: previous definition of 'dev_pm_opp_put_prop_name' was here
static inline void dev_pm_opp_put_prop_name(struct device *dev) {}
^~~~~~~~~~~~~~~~~~~~~~~~
drivers/base/power/opp/core.c:1206:5: error: redefinition of 'dev_pm_opp_set_regulator'
int dev_pm_opp_set_regulator(struct device *dev, const char *name)
^~~~~~~~~~~~~~~~~~~~~~~~
In file included from drivers/base/power/opp/opp.h:21:0,
from drivers/base/power/opp/core.c:24:
include/linux/pm_opp.h:168:19: note: previous definition of 'dev_pm_opp_set_regulator' was here
static inline int dev_pm_opp_set_regulator(struct device *dev, const char *name)
^~~~~~~~~~~~~~~~~~~~~~~~
drivers/base/power/opp/core.c:1265:6: error: redefinition of 'dev_pm_opp_put_regulator'
void dev_pm_opp_put_regulator(struct device *dev)
^~~~~~~~~~~~~~~~~~~~~~~~
In file included from drivers/base/power/opp/opp.h:21:0,
from drivers/base/power/opp/core.c:24:

vim +/dev_pm_opp_get_max_transition_latency +302 drivers/base/power/opp/core.c

235 * @dev: device for which we do this operation
236 *
237 * Return: This function returns the max voltage latency in nanoseconds.
238 *
239 * Locking: This function takes rcu_read_lock().
240 */
> 241 unsigned long dev_pm_opp_get_max_volt_latency(struct device *dev)
242 {
243 struct device_opp *dev_opp;
244 struct dev_pm_opp *opp;
245 struct regulator *reg;
246 unsigned long latency_ns = 0;
247 unsigned long min_uV = ~0, max_uV = 0;
248 int ret;
249
250 rcu_read_lock();
251
252 dev_opp = _find_device_opp(dev);
253 if (IS_ERR(dev_opp)) {
254 rcu_read_unlock();
255 return 0;
256 }
257
258 reg = dev_opp->regulator;
259 if (IS_ERR_OR_NULL(reg)) {
260 /* Regulator may not be required for device */
261 if (reg)
262 dev_err(dev, "%s: Invalid regulator (%ld)\n", __func__,
263 PTR_ERR(reg));
264 rcu_read_unlock();
265 return 0;
266 }
267
268 list_for_each_entry_rcu(opp, &dev_opp->opp_list, node) {
269 if (!opp->available)
270 continue;
271
272 if (opp->u_volt_min < min_uV)
273 min_uV = opp->u_volt_min;
274 if (opp->u_volt_max > max_uV)
275 max_uV = opp->u_volt_max;
276 }
277
278 rcu_read_unlock();
279
280 /*
281 * The caller needs to ensure that dev_opp (and hence the regulator)
282 * isn't freed, while we are executing this routine.
283 */
284 ret = regulator_set_voltage_time(reg, min_uV, max_uV);
285 if (ret > 0)
286 latency_ns = ret * 1000;
287
288 return latency_ns;
289 }
290 EXPORT_SYMBOL_GPL(dev_pm_opp_get_max_volt_latency);
291
292 /**
293 * dev_pm_opp_get_max_transition_latency() - Get max transition latency in
294 * nanoseconds
295 * @dev: device for which we do this operation
296 *
297 * Return: This function returns the max transition latency, in nanoseconds, to
298 * switch from one OPP to other.
299 *
300 * Locking: This function takes rcu_read_lock().
301 */
> 302 unsigned long dev_pm_opp_get_max_transition_latency(struct device *dev)
303 {
304 return dev_pm_opp_get_max_volt_latency(dev) +
305 dev_pm_opp_get_max_clock_latency(dev);

---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation

Attachment: .config.gz
Description: application/gzip