
Hi Samuel,
On Sun, 19 Feb 2023 at 23:00, Samuel Holland samuel@sholland.org wrote:
This allows clk_get_parent() to work with non-CCF clock drivers.
Signed-off-by: Samuel Holland samuel@sholland.org
drivers/clk/clk-uclass.c | 18 ++++++++++++------ include/clk-uclass.h | 2 ++ 2 files changed, 14 insertions(+), 6 deletions(-)
Please can you add a test for this and do full comments for the function you added?
diff --git a/drivers/clk/clk-uclass.c b/drivers/clk/clk-uclass.c index 53cfd819779..d0f8906cd60 100644 --- a/drivers/clk/clk-uclass.c +++ b/drivers/clk/clk-uclass.c @@ -485,6 +485,7 @@ ulong clk_get_rate(struct clk *clk)
struct clk *clk_get_parent(struct clk *clk) {
const struct clk_ops *ops; struct udevice *pdev; struct clk *pclk;
@@ -492,12 +493,17 @@ struct clk *clk_get_parent(struct clk *clk) if (!clk_valid(clk)) return ERR_PTR(-ENODEV);
pdev = dev_get_parent(clk->dev);
if (!pdev)
return ERR_PTR(-ENODEV);
pclk = dev_get_clk_ptr(pdev);
if (!pclk)
return ERR_PTR(-ENODEV);
ops = clk_dev_ops(clk->dev);
if (ops->get_parent) {
pclk = ops->get_parent(clk);
} else {
pdev = dev_get_parent(clk->dev);
if (!pdev)
return ERR_PTR(-ENODEV);
pclk = dev_get_clk_ptr(pdev);
if (!pclk)
return ERR_PTR(-ENODEV);
} return pclk;
} diff --git a/include/clk-uclass.h b/include/clk-uclass.h index 65ebff9ed27..4d616720865 100644 --- a/include/clk-uclass.h +++ b/include/clk-uclass.h @@ -22,6 +22,7 @@ struct ofnode_phandle_args;
- @round_rate: Adjust a rate to the exact rate a clock can provide.
- @get_rate: Get current clock rate.
- @set_rate: Set current clock rate.
- @get_parent: Get current clock parent
- @set_parent: Set current clock parent
- @enable: Enable a clock.
- @disable: Disable a clock.
@@ -36,6 +37,7 @@ struct clk_ops { ulong (*round_rate)(struct clk *clk, ulong rate); ulong (*get_rate)(struct clk *clk); ulong (*set_rate)(struct clk *clk, ulong rate);
struct clk *(*get_parent)(struct clk *clk); int (*set_parent)(struct clk *clk, struct clk *parent); int (*enable)(struct clk *clk); int (*disable)(struct clk *clk);
-- 2.39.2
Regards, Simon