mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-28 06:34:12 +08:00
OPP: Add dev_pm_opp_find_level_floor()
Add dev_pm_opp_find_level_floor(), as is done for frequency and bandwidth. Signed-off-by: Krishna chaitanya chundru <quic_krichai@quicinc.com> [ Viresh: Updated commit log and rearranged code ] Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
This commit is contained in:
parent
0025ff64ff
commit
a0242c81bb
@ -813,6 +813,31 @@ struct dev_pm_opp *dev_pm_opp_find_level_ceil(struct device *dev,
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(dev_pm_opp_find_level_ceil);
|
||||
|
||||
/**
|
||||
* dev_pm_opp_find_level_floor() - Search for a rounded floor level
|
||||
* @dev: device for which we do this operation
|
||||
* @level: Start level
|
||||
*
|
||||
* Search for the matching floor *available* OPP from a starting level
|
||||
* for a device.
|
||||
*
|
||||
* Return: matching *opp and refreshes *level accordingly, else returns
|
||||
* ERR_PTR in case of error and should be handled using IS_ERR. Error return
|
||||
* values can be:
|
||||
* EINVAL: for bad pointer
|
||||
* ERANGE: no match found for search
|
||||
* ENODEV: if device not found in list of registered devices
|
||||
*
|
||||
* The callers are required to call dev_pm_opp_put() for the returned OPP after
|
||||
* use.
|
||||
*/
|
||||
struct dev_pm_opp *dev_pm_opp_find_level_floor(struct device *dev,
|
||||
unsigned long *level)
|
||||
{
|
||||
return _find_key_floor(dev, level, 0, true, _read_level, NULL);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(dev_pm_opp_find_level_floor);
|
||||
|
||||
/**
|
||||
* dev_pm_opp_find_bw_ceil() - Search for a rounded ceil bandwidth
|
||||
* @dev: device for which we do this operation
|
||||
|
@ -156,6 +156,9 @@ struct dev_pm_opp *dev_pm_opp_find_level_exact(struct device *dev,
|
||||
struct dev_pm_opp *dev_pm_opp_find_level_ceil(struct device *dev,
|
||||
unsigned int *level);
|
||||
|
||||
struct dev_pm_opp *dev_pm_opp_find_level_floor(struct device *dev,
|
||||
unsigned long *level);
|
||||
|
||||
struct dev_pm_opp *dev_pm_opp_find_bw_ceil(struct device *dev,
|
||||
unsigned int *bw, int index);
|
||||
|
||||
@ -320,6 +323,12 @@ static inline struct dev_pm_opp *dev_pm_opp_find_level_ceil(struct device *dev,
|
||||
return ERR_PTR(-EOPNOTSUPP);
|
||||
}
|
||||
|
||||
static inline struct dev_pm_opp *dev_pm_opp_find_level_floor(struct device *dev,
|
||||
unsigned long *level)
|
||||
{
|
||||
return ERR_PTR(-EOPNOTSUPP);
|
||||
}
|
||||
|
||||
static inline struct dev_pm_opp *dev_pm_opp_find_bw_ceil(struct device *dev,
|
||||
unsigned int *bw, int index)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user