Release 4.12 include/linux/pm_opp.h
/*
* 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/notifier.h>
struct clk;
struct regulator;
struct dev_pm_opp;
struct device;
struct opp_table;
enum dev_pm_opp_event {
OPP_EVENT_ADD, OPP_EVENT_REMOVE, OPP_EVENT_ENABLE, OPP_EVENT_DISABLE,
};
/**
* struct dev_pm_opp_supply - Power supply voltage/current values
* @u_volt: Target voltage in microvolts corresponding to this OPP
* @u_volt_min: Minimum voltage in microvolts corresponding to this OPP
* @u_volt_max: Maximum voltage in microvolts corresponding to this OPP
* @u_amp: Maximum current drawn by the device in microamperes
*
* This structure stores the voltage/current values for a single power supply.
*/
struct dev_pm_opp_supply {
unsigned long u_volt;
unsigned long u_volt_min;
unsigned long u_volt_max;
unsigned long u_amp;
};
/**
* struct dev_pm_opp_info - OPP freq/voltage/current values
* @rate: Target clk rate in hz
* @supplies: Array of voltage/current values for all power supplies
*
* This structure stores the freq/voltage/current values for a single OPP.
*/
struct dev_pm_opp_info {
unsigned long rate;
struct dev_pm_opp_supply *supplies;
};
/**
* struct dev_pm_set_opp_data - Set OPP data
* @old_opp: Old OPP info
* @new_opp: New OPP info
* @regulators: Array of regulator pointers
* @regulator_count: Number of regulators
* @clk: Pointer to clk
* @dev: Pointer to the struct device
*
* This structure contains all information required for setting an OPP.
*/
struct dev_pm_set_opp_data {
struct dev_pm_opp_info old_opp;
struct dev_pm_opp_info new_opp;
struct regulator **regulators;
unsigned int regulator_count;
struct clk *clk;
struct device *dev;
};
#if defined(CONFIG_PM_OPP)
struct opp_table *dev_pm_opp_get_opp_table(struct device *dev);
void dev_pm_opp_put_opp_table(struct opp_table *opp_table);
unsigned long dev_pm_opp_get_voltage(struct dev_pm_opp *opp);
unsigned long dev_pm_opp_get_freq(struct dev_pm_opp *opp);
bool dev_pm_opp_is_turbo(struct dev_pm_opp *opp);
int dev_pm_opp_get_opp_count(struct device *dev);
unsigned long dev_pm_opp_get_max_clock_latency(struct device *dev);
unsigned long dev_pm_opp_get_max_volt_latency(struct device *dev);
unsigned long dev_pm_opp_get_max_transition_latency(struct device *dev);
unsigned long dev_pm_opp_get_suspend_opp_freq(struct device *dev);
struct dev_pm_opp *dev_pm_opp_find_freq_exact(struct device *dev,
unsigned long freq,
bool available);
struct dev_pm_opp *dev_pm_opp_find_freq_floor(struct device *dev,
unsigned long *freq);
struct dev_pm_opp *dev_pm_opp_find_freq_ceil(struct device *dev,
unsigned long *freq);
void dev_pm_opp_put(struct dev_pm_opp *opp);
int dev_pm_opp_add(struct device *dev, unsigned long freq,
unsigned long u_volt);
void dev_pm_opp_remove(struct device *dev, unsigned long freq);
int dev_pm_opp_enable(struct device *dev, unsigned long freq);
int dev_pm_opp_disable(struct device *dev, unsigned long freq);
int dev_pm_opp_register_notifier(struct device *dev, struct notifier_block *nb);
int dev_pm_opp_unregister_notifier(struct device *dev, struct notifier_block *nb);
struct opp_table *dev_pm_opp_set_supported_hw(struct device *dev, const u32 *versions, unsigned int count);
void dev_pm_opp_put_supported_hw(struct opp_table *opp_table);
struct opp_table *dev_pm_opp_set_prop_name(struct device *dev, const char *name);
void dev_pm_opp_put_prop_name(struct opp_table *opp_table);
struct opp_table *dev_pm_opp_set_regulators(struct device *dev, const char * const names[], unsigned int count);
void dev_pm_opp_put_regulators(struct opp_table *opp_table);
struct opp_table *dev_pm_opp_register_set_opp_helper(struct device *dev, int (*set_opp)(struct dev_pm_set_opp_data *data));
void dev_pm_opp_register_put_opp_helper(struct opp_table *opp_table);
int dev_pm_opp_set_rate(struct device *dev, unsigned long target_freq);
int dev_pm_opp_set_sharing_cpus(struct device *cpu_dev, const struct cpumask *cpumask);
int dev_pm_opp_get_sharing_cpus(struct device *cpu_dev, struct cpumask *cpumask);
void dev_pm_opp_remove_table(struct device *dev);
void dev_pm_opp_cpumask_remove_table(const struct cpumask *cpumask);
#else
static inline struct opp_table *dev_pm_opp_get_opp_table(struct device *dev)
{
return ERR_PTR(-ENOTSUPP);
}
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Viresh Kumar | 21 | 100.00% | 1 | 100.00% |
Total | 21 | 100.00% | 1 | 100.00% |
static inline void dev_pm_opp_put_opp_table(struct opp_table *opp_table) {}
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Viresh Kumar | 11 | 100.00% | 1 | 100.00% |
Total | 11 | 100.00% | 1 | 100.00% |
static inline unsigned long dev_pm_opp_get_voltage(struct dev_pm_opp *opp)
{
return 0;
}
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Nishanth Menon | 16 | 100.00% | 3 | 100.00% |
Total | 16 | 100.00% | 3 | 100.00% |
static inline unsigned long dev_pm_opp_get_freq(struct dev_pm_opp *opp)
{
return 0;
}
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Nishanth Menon | 16 | 100.00% | 3 | 100.00% |
Total | 16 | 100.00% | 3 | 100.00% |
static inline bool dev_pm_opp_is_turbo(struct dev_pm_opp *opp)
{
return false;
}
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Bartlomiej Zolnierkiewicz | 15 | 100.00% | 1 | 100.00% |
Total | 15 | 100.00% | 1 | 100.00% |
static inline int dev_pm_opp_get_opp_count(struct device *dev)
{
return 0;
}
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Nishanth Menon | 15 | 100.00% | 2 | 100.00% |
Total | 15 | 100.00% | 2 | 100.00% |
static inline unsigned long dev_pm_opp_get_max_clock_latency(struct device *dev)
{
return 0;
}
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Viresh Kumar | 15 | 93.75% | 1 | 50.00% |
Bartlomiej Zolnierkiewicz | 1 | 6.25% | 1 | 50.00% |
Total | 16 | 100.00% | 2 | 100.00% |
static inline unsigned long dev_pm_opp_get_max_volt_latency(struct device *dev)
{
return 0;
}
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Viresh Kumar | 16 | 100.00% | 1 | 100.00% |
Total | 16 | 100.00% | 1 | 100.00% |
static inline unsigned long dev_pm_opp_get_max_transition_latency(struct device *dev)
{
return 0;
}
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Viresh Kumar | 16 | 100.00% | 1 | 100.00% |
Total | 16 | 100.00% | 1 | 100.00% |
static inline unsigned long dev_pm_opp_get_suspend_opp_freq(struct device *dev)
{
return 0;
}
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Bartlomiej Zolnierkiewicz | 11 | 68.75% | 1 | 33.33% |
Viresh Kumar | 5 | 31.25% | 2 | 66.67% |
Total | 16 | 100.00% | 3 | 100.00% |
static inline struct dev_pm_opp *dev_pm_opp_find_freq_exact(struct device *dev,
unsigned long freq, bool available)
{
return ERR_PTR(-ENOTSUPP);
}
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Nishanth Menon | 27 | 96.43% | 3 | 75.00% |
Viresh Kumar | 1 | 3.57% | 1 | 25.00% |
Total | 28 | 100.00% | 4 | 100.00% |
static inline struct dev_pm_opp *dev_pm_opp_find_freq_floor(struct device *dev,
unsigned long *freq)
{
return ERR_PTR(-ENOTSUPP);
}
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Nishanth Menon | 25 | 96.15% | 3 | 75.00% |
Viresh Kumar | 1 | 3.85% | 1 | 25.00% |
Total | 26 | 100.00% | 4 | 100.00% |
static inline struct dev_pm_opp *dev_pm_opp_find_freq_ceil(struct device *dev,
unsigned long *freq)
{
return ERR_PTR(-ENOTSUPP);
}
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Nishanth Menon | 25 | 96.15% | 3 | 75.00% |
Viresh Kumar | 1 | 3.85% | 1 | 25.00% |
Total | 26 | 100.00% | 4 | 100.00% |
static inline void dev_pm_opp_put(struct dev_pm_opp *opp) {}
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Viresh Kumar | 11 | 100.00% | 1 | 100.00% |
Total | 11 | 100.00% | 1 | 100.00% |
static inline int dev_pm_opp_add(struct device *dev, unsigned long freq,
unsigned long u_volt)
{
return -ENOTSUPP;
}
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Nishanth Menon | 23 | 95.83% | 2 | 66.67% |
Viresh Kumar | 1 | 4.17% | 1 | 33.33% |
Total | 24 | 100.00% | 3 | 100.00% |
static inline void dev_pm_opp_remove(struct device *dev, unsigned long freq)
{
}
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Viresh Kumar | 15 | 100.00% | 1 | 100.00% |
Total | 15 | 100.00% | 1 | 100.00% |
static inline int dev_pm_opp_enable(struct device *dev, unsigned long freq)
{
return 0;
}
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Nishanth Menon | 19 | 100.00% | 2 | 100.00% |
Total | 19 | 100.00% | 2 | 100.00% |
static inline int dev_pm_opp_disable(struct device *dev, unsigned long freq)
{
return 0;
}
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Nishanth Menon | 19 | 100.00% | 2 | 100.00% |
Total | 19 | 100.00% | 2 | 100.00% |
static inline int dev_pm_opp_register_notifier(struct device *dev, struct notifier_block *nb)
{
return -ENOTSUPP;
}
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Viresh Kumar | 17 | 80.95% | 1 | 33.33% |
Tony Lindgren | 2 | 9.52% | 1 | 33.33% |
MyungJoo Ham | 2 | 9.52% | 1 | 33.33% |
Total | 21 | 100.00% | 3 | 100.00% |
static inline int dev_pm_opp_unregister_notifier(struct device *dev, struct notifier_block *nb)
{
return -ENOTSUPP;
}
Contributors
Person | Tokens | Prop | Commits | CommitProp |
MyungJoo Ham | 11 | 52.38% | 1 | 33.33% |
Viresh Kumar | 10 | 47.62% | 2 | 66.67% |
Total | 21 | 100.00% | 3 | 100.00% |
static inline struct opp_table *dev_pm_opp_set_supported_hw(struct device *dev,
const u32 *versions,
unsigned int count)
{
return ERR_PTR(-ENOTSUPP);
}
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Viresh Kumar | 30 | 100.00% | 3 | 100.00% |
Total | 30 | 100.00% | 3 | 100.00% |
static inline void dev_pm_opp_put_supported_hw(struct opp_table *opp_table) {}
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Viresh Kumar | 11 | 100.00% | 2 | 100.00% |
Total | 11 | 100.00% | 2 | 100.00% |
static inline struct opp_table *dev_pm_opp_register_set_opp_helper(struct device *dev,
int (*set_opp)(struct dev_pm_set_opp_data *data))
{
return ERR_PTR(-ENOTSUPP);
}
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Viresh Kumar | 33 | 100.00% | 2 | 100.00% |
Total | 33 | 100.00% | 2 | 100.00% |
static inline void dev_pm_opp_register_put_opp_helper(struct opp_table *opp_table) {}
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Viresh Kumar | 11 | 100.00% | 2 | 100.00% |
Total | 11 | 100.00% | 2 | 100.00% |
static inline struct opp_table *dev_pm_opp_set_prop_name(struct device *dev, const char *name)
{
return ERR_PTR(-ENOTSUPP);
}
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Viresh Kumar | 26 | 100.00% | 3 | 100.00% |
Total | 26 | 100.00% | 3 | 100.00% |
static inline void dev_pm_opp_put_prop_name(struct opp_table *opp_table) {}
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Viresh Kumar | 11 | 100.00% | 2 | 100.00% |
Total | 11 | 100.00% | 2 | 100.00% |
static inline struct opp_table *dev_pm_opp_set_regulators(struct device *dev, const char * const names[], unsigned int count)
{
return ERR_PTR(-ENOTSUPP);
}
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Viresh Kumar | 26 | 81.25% | 3 | 75.00% |
Stephen Boyd | 6 | 18.75% | 1 | 25.00% |
Total | 32 | 100.00% | 4 | 100.00% |
static inline void dev_pm_opp_put_regulators(struct opp_table *opp_table) {}
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Viresh Kumar | 9 | 81.82% | 2 | 66.67% |
Stephen Boyd | 2 | 18.18% | 1 | 33.33% |
Total | 11 | 100.00% | 3 | 100.00% |
static inline int dev_pm_opp_set_rate(struct device *dev, unsigned long target_freq)
{
return -ENOTSUPP;
}
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Viresh Kumar | 20 | 100.00% | 2 | 100.00% |
Total | 20 | 100.00% | 2 | 100.00% |
static inline int dev_pm_opp_set_sharing_cpus(struct device *cpu_dev, const struct cpumask *cpumask)
{
return -ENOTSUPP;
}
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Viresh Kumar | 19 | 86.36% | 3 | 75.00% |
Arnd Bergmann | 3 | 13.64% | 1 | 25.00% |
Total | 22 | 100.00% | 4 | 100.00% |
static inline int dev_pm_opp_get_sharing_cpus(struct device *cpu_dev, struct cpumask *cpumask)
{
return -EINVAL;
}
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Viresh Kumar | 18 | 85.71% | 1 | 50.00% |
Arnd Bergmann | 3 | 14.29% | 1 | 50.00% |
Total | 21 | 100.00% | 2 | 100.00% |
static inline void dev_pm_opp_remove_table(struct device *dev)
{
}
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Sudeep Holla | 11 | 100.00% | 1 | 100.00% |
Total | 11 | 100.00% | 1 | 100.00% |
static inline void dev_pm_opp_cpumask_remove_table(const struct cpumask *cpumask)
{
}
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Sudeep Holla | 12 | 100.00% | 1 | 100.00% |
Total | 12 | 100.00% | 1 | 100.00% |
#endif /* CONFIG_PM_OPP */
#if defined(CONFIG_PM_OPP) && defined(CONFIG_OF)
int dev_pm_opp_of_add_table(struct device *dev);
void dev_pm_opp_of_remove_table(struct device *dev);
int dev_pm_opp_of_cpumask_add_table(const struct cpumask *cpumask);
void dev_pm_opp_of_cpumask_remove_table(const struct cpumask *cpumask);
int dev_pm_opp_of_get_sharing_cpus(struct device *cpu_dev, struct cpumask *cpumask);
struct device_node *dev_pm_opp_of_get_opp_desc_node(struct device *dev);
#else
static inline int dev_pm_opp_of_add_table(struct device *dev)
{
return -ENOTSUPP;
}
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Shawn Guo | 14 | 87.50% | 1 | 33.33% |
Viresh Kumar | 2 | 12.50% | 2 | 66.67% |
Total | 16 | 100.00% | 3 | 100.00% |
static inline void dev_pm_opp_of_remove_table(struct device *dev)
{
}
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Viresh Kumar | 11 | 100.00% | 2 | 100.00% |
Total | 11 | 100.00% | 2 | 100.00% |
static inline int dev_pm_opp_of_cpumask_add_table(const struct cpumask *cpumask)
{
return -ENOTSUPP;
}
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Viresh Kumar | 13 | 76.47% | 3 | 75.00% |
Arnd Bergmann | 4 | 23.53% | 1 | 25.00% |
Total | 17 | 100.00% | 4 | 100.00% |
static inline void dev_pm_opp_of_cpumask_remove_table(const struct cpumask *cpumask)
{
}
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Viresh Kumar | 8 | 66.67% | 2 | 66.67% |
Arnd Bergmann | 4 | 33.33% | 1 | 33.33% |
Total | 12 | 100.00% | 3 | 100.00% |
static inline int dev_pm_opp_of_get_sharing_cpus(struct device *cpu_dev, struct cpumask *cpumask)
{
return -ENOTSUPP;
}
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Viresh Kumar | 18 | 85.71% | 3 | 75.00% |
Arnd Bergmann | 3 | 14.29% | 1 | 25.00% |
Total | 21 | 100.00% | 4 | 100.00% |
static inline struct device_node *dev_pm_opp_of_get_opp_desc_node(struct device *dev)
{
return NULL;
}
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Dave Gerlach | 17 | 100.00% | 1 | 100.00% |
Total | 17 | 100.00% | 1 | 100.00% |
#endif
#endif /* __LINUX_OPP_H__ */
Overall Contributors
Person | Tokens | Prop | Commits | CommitProp |
Viresh Kumar | 761 | 57.00% | 23 | 63.89% |
Nishanth Menon | 337 | 25.24% | 3 | 8.33% |
Bartlomiej Zolnierkiewicz | 46 | 3.45% | 2 | 5.56% |
Sudeep Holla | 42 | 3.15% | 1 | 2.78% |
Arnd Bergmann | 34 | 2.55% | 1 | 2.78% |
Shawn Guo | 33 | 2.47% | 1 | 2.78% |
MyungJoo Ham | 32 | 2.40% | 1 | 2.78% |
Dave Gerlach | 28 | 2.10% | 1 | 2.78% |
Stephen Boyd | 16 | 1.20% | 1 | 2.78% |
Paul Gortmaker | 3 | 0.22% | 1 | 2.78% |
Tony Lindgren | 3 | 0.22% | 1 | 2.78% |
Total | 1335 | 100.00% | 36 | 100.00% |
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.