PM / clk: Add support for adding a specific clock from device-tree
Some drivers using the PM clocks framework need to add specific clocks from device-tree using a name by calling the functions of_clk_get_by_name() and then pm_clk_add_clk(). Rather than having drivers call both functions, add a helper function of_pm_clk_add_clk() that will call these functions so drivers can call a single function to add a specific clock from device-tree. Signed-off-by: Jon Hunter <jonathanh@nvidia.com> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
This commit is contained in:
parent
29b968b2af
commit
498b5fdd40
@ -140,6 +140,38 @@ int pm_clk_add_clk(struct device *dev, struct clk *clk)
|
|||||||
EXPORT_SYMBOL_GPL(pm_clk_add_clk);
|
EXPORT_SYMBOL_GPL(pm_clk_add_clk);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* of_pm_clk_add_clk - Start using a device clock for power management.
|
||||||
|
* @dev: Device whose clock is going to be used for power management.
|
||||||
|
* @name: Name of clock that is going to be used for power management.
|
||||||
|
*
|
||||||
|
* Add the clock described in the 'clocks' device-tree node that matches
|
||||||
|
* with the 'name' provided, to the list of clocks used for the power
|
||||||
|
* management of @dev. On success, returns 0. Returns a negative error
|
||||||
|
* code if the clock is not found or cannot be added.
|
||||||
|
*/
|
||||||
|
int of_pm_clk_add_clk(struct device *dev, const char *name)
|
||||||
|
{
|
||||||
|
struct clk *clk;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
if (!dev || !dev->of_node || !name)
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
|
clk = of_clk_get_by_name(dev->of_node, name);
|
||||||
|
if (IS_ERR(clk))
|
||||||
|
return PTR_ERR(clk);
|
||||||
|
|
||||||
|
ret = pm_clk_add_clk(dev, clk);
|
||||||
|
if (ret) {
|
||||||
|
clk_put(clk);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(of_pm_clk_add_clk);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* of_pm_clk_add_clks - Start using device clock(s) for power management.
|
* of_pm_clk_add_clks - Start using device clock(s) for power management.
|
||||||
* @dev: Device whose clock(s) is going to be used for power management.
|
* @dev: Device whose clock(s) is going to be used for power management.
|
||||||
|
@ -42,6 +42,7 @@ extern int pm_clk_create(struct device *dev);
|
|||||||
extern void pm_clk_destroy(struct device *dev);
|
extern void pm_clk_destroy(struct device *dev);
|
||||||
extern int pm_clk_add(struct device *dev, const char *con_id);
|
extern int pm_clk_add(struct device *dev, const char *con_id);
|
||||||
extern int pm_clk_add_clk(struct device *dev, struct clk *clk);
|
extern int pm_clk_add_clk(struct device *dev, struct clk *clk);
|
||||||
|
extern int of_pm_clk_add_clk(struct device *dev, const char *name);
|
||||||
extern int of_pm_clk_add_clks(struct device *dev);
|
extern int of_pm_clk_add_clks(struct device *dev);
|
||||||
extern void pm_clk_remove(struct device *dev, const char *con_id);
|
extern void pm_clk_remove(struct device *dev, const char *con_id);
|
||||||
extern void pm_clk_remove_clk(struct device *dev, struct clk *clk);
|
extern void pm_clk_remove_clk(struct device *dev, struct clk *clk);
|
||||||
|
Loading…
Reference in New Issue
Block a user