mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-10 23:24:38 +00:00
dm: clk: Define clk_get_parent() for clk operations
This commit adds the clk_get_parent() function, which is responsible for getting the parent's struct clock pointer. U-Boot's DM support for getting parent is different (the parent relationship is in udevice) than the one in Common Clock Framework [CCF] in Linux. To obtain the pointer to struct clk of parent the pdev->uclass_priv field is read via dev_get_clk_ptr() wrapper. Signed-off-by: Lukasz Majewski <lukma@denx.de> Reviewed-by: Peng Fan <peng.fan@nxp.com>
This commit is contained in:
parent
004c122941
commit
0c660c2b32
2 changed files with 25 additions and 0 deletions
|
@ -13,6 +13,7 @@
|
|||
#include <dm/read.h>
|
||||
#include <dt-structs.h>
|
||||
#include <errno.h>
|
||||
#include <linux/clk-provider.h>
|
||||
|
||||
static inline const struct clk_ops *clk_dev_ops(struct udevice *dev)
|
||||
{
|
||||
|
@ -379,6 +380,21 @@ ulong clk_get_rate(struct clk *clk)
|
|||
return ops->get_rate(clk);
|
||||
}
|
||||
|
||||
struct clk *clk_get_parent(struct clk *clk)
|
||||
{
|
||||
struct udevice *pdev;
|
||||
struct clk *pclk;
|
||||
|
||||
debug("%s(clk=%p)\n", __func__, clk);
|
||||
|
||||
pdev = dev_get_parent(clk->dev);
|
||||
pclk = dev_get_clk_ptr(pdev);
|
||||
if (!pclk)
|
||||
return ERR_PTR(-ENODEV);
|
||||
|
||||
return pclk;
|
||||
}
|
||||
|
||||
ulong clk_set_rate(struct clk *clk, ulong rate)
|
||||
{
|
||||
const struct clk_ops *ops = clk_dev_ops(clk->dev);
|
||||
|
|
|
@ -258,6 +258,15 @@ int clk_free(struct clk *clk);
|
|||
*/
|
||||
ulong clk_get_rate(struct clk *clk);
|
||||
|
||||
/**
|
||||
* clk_get_parent() - Get current clock's parent.
|
||||
*
|
||||
* @clk: A clock struct that was previously successfully requested by
|
||||
* clk_request/get_by_*().
|
||||
* @return pointer to parent's struct clk, or error code passed as pointer
|
||||
*/
|
||||
struct clk *clk_get_parent(struct clk *clk);
|
||||
|
||||
/**
|
||||
* clk_set_rate() - Set current clock rate.
|
||||
*
|
||||
|
|
Loading…
Reference in a new issue