mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-10 15:14:43 +00:00
clk: add clk_set_parent()
Clocks may support multiple parents: this change introduces an optional operation on the clk-uclass to set a clock's parent. Signed-off-by: Philipp Tomsich <philipp.tomsich@theobroma-systems.com> Tested-by: David Wu <david.wu@rock-chips.com> Series-changes: 2 - Fixed David's email address.
This commit is contained in:
parent
1a7f6d4597
commit
f7d1046da1
3 changed files with 31 additions and 0 deletions
|
@ -188,6 +188,18 @@ ulong clk_set_rate(struct clk *clk, ulong rate)
|
|||
return ops->set_rate(clk, rate);
|
||||
}
|
||||
|
||||
int clk_set_parent(struct clk *clk, struct clk *parent)
|
||||
{
|
||||
const struct clk_ops *ops = clk_dev_ops(clk->dev);
|
||||
|
||||
debug("%s(clk=%p, parent=%p)\n", __func__, clk, parent);
|
||||
|
||||
if (!ops->set_parent)
|
||||
return -ENOSYS;
|
||||
|
||||
return ops->set_parent(clk, parent);
|
||||
}
|
||||
|
||||
int clk_enable(struct clk *clk)
|
||||
{
|
||||
const struct clk_ops *ops = clk_dev_ops(clk->dev);
|
||||
|
|
|
@ -77,6 +77,14 @@ struct clk_ops {
|
|||
* @return new rate, or -ve error code.
|
||||
*/
|
||||
ulong (*set_rate)(struct clk *clk, ulong rate);
|
||||
/**
|
||||
* set_parent() - Set current clock parent
|
||||
*
|
||||
* @clk: The clock to manipulate.
|
||||
* @parent: New clock parent.
|
||||
* @return zero on success, or -ve error code.
|
||||
*/
|
||||
int (*set_parent)(struct clk *clk, struct clk *parent);
|
||||
/**
|
||||
* enable() - Enable a clock.
|
||||
*
|
||||
|
|
|
@ -177,6 +177,17 @@ ulong clk_get_rate(struct clk *clk);
|
|||
*/
|
||||
ulong clk_set_rate(struct clk *clk, ulong rate);
|
||||
|
||||
/**
|
||||
* clk_set_parent() - Set current clock parent.
|
||||
*
|
||||
* @clk: A clock struct that was previously successfully requested by
|
||||
* clk_request/get_by_*().
|
||||
* @parent: A clock struct that was previously successfully requested by
|
||||
* clk_request/get_by_*().
|
||||
* @return new rate, or -ve error code.
|
||||
*/
|
||||
int clk_set_parent(struct clk *clk, struct clk *parent);
|
||||
|
||||
/**
|
||||
* clk_enable() - Enable (turn on) a clock.
|
||||
*
|
||||
|
|
Loading…
Reference in a new issue