mirror of
https://github.com/edk2-porting/linux-next.git
synced 2025-01-11 23:23:52 +08:00
PM / devfreq: Add devfreq_get_devfreq_by_phandle()
This patch adds the new devfreq_get_devfreq_by_phandle() OF helper function which can find the instance of devfreq device by using phandle ("devfreq"). Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com> Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com> [m.reichl and linux.amoon: Tested it on exynos4412-odroidu3 board] Tested-by: Markus Reichl <m.reichl@fivetechno.de> Tested-by: Anand Moon <linux.amoon@gmail.com> Acked-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
This commit is contained in:
parent
72c160bda1
commit
8f510aeb22
@ -25,6 +25,7 @@
|
|||||||
#include <linux/list.h>
|
#include <linux/list.h>
|
||||||
#include <linux/printk.h>
|
#include <linux/printk.h>
|
||||||
#include <linux/hrtimer.h>
|
#include <linux/hrtimer.h>
|
||||||
|
#include <linux/of.h>
|
||||||
#include "governor.h"
|
#include "governor.h"
|
||||||
|
|
||||||
static struct class *devfreq_class;
|
static struct class *devfreq_class;
|
||||||
@ -639,6 +640,49 @@ struct devfreq *devm_devfreq_add_device(struct device *dev,
|
|||||||
}
|
}
|
||||||
EXPORT_SYMBOL(devm_devfreq_add_device);
|
EXPORT_SYMBOL(devm_devfreq_add_device);
|
||||||
|
|
||||||
|
#ifdef CONFIG_OF
|
||||||
|
/*
|
||||||
|
* devfreq_get_devfreq_by_phandle - Get the devfreq device from devicetree
|
||||||
|
* @dev - instance to the given device
|
||||||
|
* @index - index into list of devfreq
|
||||||
|
*
|
||||||
|
* return the instance of devfreq device
|
||||||
|
*/
|
||||||
|
struct devfreq *devfreq_get_devfreq_by_phandle(struct device *dev, int index)
|
||||||
|
{
|
||||||
|
struct device_node *node;
|
||||||
|
struct devfreq *devfreq;
|
||||||
|
|
||||||
|
if (!dev)
|
||||||
|
return ERR_PTR(-EINVAL);
|
||||||
|
|
||||||
|
if (!dev->of_node)
|
||||||
|
return ERR_PTR(-EINVAL);
|
||||||
|
|
||||||
|
node = of_parse_phandle(dev->of_node, "devfreq", index);
|
||||||
|
if (!node)
|
||||||
|
return ERR_PTR(-ENODEV);
|
||||||
|
|
||||||
|
mutex_lock(&devfreq_list_lock);
|
||||||
|
list_for_each_entry(devfreq, &devfreq_list, node) {
|
||||||
|
if (devfreq->dev.parent
|
||||||
|
&& devfreq->dev.parent->of_node == node) {
|
||||||
|
mutex_unlock(&devfreq_list_lock);
|
||||||
|
return devfreq;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
mutex_unlock(&devfreq_list_lock);
|
||||||
|
|
||||||
|
return ERR_PTR(-EPROBE_DEFER);
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
struct devfreq *devfreq_get_devfreq_by_phandle(struct device *dev, int index)
|
||||||
|
{
|
||||||
|
return ERR_PTR(-ENODEV);
|
||||||
|
}
|
||||||
|
#endif /* CONFIG_OF */
|
||||||
|
EXPORT_SYMBOL_GPL(devfreq_get_devfreq_by_phandle);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* devm_devfreq_remove_device() - Resource-managed devfreq_remove_device()
|
* devm_devfreq_remove_device() - Resource-managed devfreq_remove_device()
|
||||||
* @dev: the device to add devfreq feature.
|
* @dev: the device to add devfreq feature.
|
||||||
|
@ -208,6 +208,9 @@ extern int devm_devfreq_register_opp_notifier(struct device *dev,
|
|||||||
extern void devm_devfreq_unregister_opp_notifier(struct device *dev,
|
extern void devm_devfreq_unregister_opp_notifier(struct device *dev,
|
||||||
struct devfreq *devfreq);
|
struct devfreq *devfreq);
|
||||||
|
|
||||||
|
extern struct devfreq *devfreq_get_devfreq_by_phandle(struct device *dev,
|
||||||
|
int index);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* devfreq_update_stats() - update the last_status pointer in struct devfreq
|
* devfreq_update_stats() - update the last_status pointer in struct devfreq
|
||||||
* @df: the devfreq instance whose status needs updating
|
* @df: the devfreq instance whose status needs updating
|
||||||
@ -307,6 +310,12 @@ static inline void devm_devfreq_unregister_opp_notifier(struct device *dev,
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline struct devfreq *devfreq_get_devfreq_by_phandle(struct device *dev,
|
||||||
|
int index)
|
||||||
|
{
|
||||||
|
return ERR_PTR(-ENODEV);
|
||||||
|
}
|
||||||
|
|
||||||
static inline int devfreq_update_stats(struct devfreq *df)
|
static inline int devfreq_update_stats(struct devfreq *df)
|
||||||
{
|
{
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
Loading…
Reference in New Issue
Block a user