dm: clk: Define clk_get_parent_rate() for clk operations
This commit adds the clk_get_parent_rate() function, which is responsible for getting the rate of parent clock. Unfortunately, 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 alleviate this problem - the clk_get_parent_rate() function has been introduced to clk-uclass.c. Signed-off-by: Lukasz Majewski <lukma@denx.de> Reviewed-by: Peng Fan <peng.fan@nxp.com>
This commit is contained in:
parent
0c660c2b32
commit
4aa78300a0
@ -395,6 +395,28 @@ struct clk *clk_get_parent(struct clk *clk)
|
||||
return pclk;
|
||||
}
|
||||
|
||||
long long clk_get_parent_rate(struct clk *clk)
|
||||
{
|
||||
const struct clk_ops *ops;
|
||||
struct clk *pclk;
|
||||
|
||||
debug("%s(clk=%p)\n", __func__, clk);
|
||||
|
||||
pclk = clk_get_parent(clk);
|
||||
if (IS_ERR(pclk))
|
||||
return -ENODEV;
|
||||
|
||||
ops = clk_dev_ops(pclk->dev);
|
||||
if (!ops->get_rate)
|
||||
return -ENOSYS;
|
||||
|
||||
/* Read the 'rate' if not already set */
|
||||
if (!pclk->rate)
|
||||
pclk->rate = clk_get_rate(pclk);
|
||||
|
||||
return pclk->rate;
|
||||
}
|
||||
|
||||
ulong clk_set_rate(struct clk *clk, ulong rate)
|
||||
{
|
||||
const struct clk_ops *ops = clk_dev_ops(clk->dev);
|
||||
|
@ -267,6 +267,15 @@ ulong clk_get_rate(struct clk *clk);
|
||||
*/
|
||||
struct clk *clk_get_parent(struct clk *clk);
|
||||
|
||||
/**
|
||||
* clk_get_parent_rate() - Get parent of current clock rate.
|
||||
*
|
||||
* @clk: A clock struct that was previously successfully requested by
|
||||
* clk_request/get_by_*().
|
||||
* @return clock rate in Hz, or -ve error code.
|
||||
*/
|
||||
long long clk_get_parent_rate(struct clk *clk);
|
||||
|
||||
/**
|
||||
* clk_set_rate() - Set current clock rate.
|
||||
*
|
||||
|
Loading…
Reference in New Issue
Block a user