
On Tue, 30 Apr 2019 10:17:40 +0000 Peng Fan peng.fan@nxp.com wrote:
When support Clock Common Framework, U-Boot use dev for clk tree information, there is no clk->parent.
There is a function in clk uclass named: clk_get_parent() to provide parent of the clock.
When support composite clk, it contains mux/gate/divider, but the mux/gate/divider is not binded with device.
There is a binding: struct clk_pllv3 { struct clk clk; ... };
The clk.dev points to corresponding device.
In the opposite direction we do have dev->driver_data, which points to struct clk embedded in for example struct clk_pllv3. (as struct clk_pllv3 and struct clk share the same address it is up to us to cast it properly).
I've written my thoughts and considerations about using dev->private and dev->driver_data in the patch cover letter [1]
So we could not use dev_get_driver_data to get the correct clk_mux/gate/divider.
Maybe I've overlooked something, but dev_get_driver_data() shall provide correct reference to udevice.
So add clk_dev_binded to let choose the correct method.
[1] - http://patchwork.ozlabs.org/cover/1090669/
Signed-off-by: Peng Fan peng.fan@nxp.com
drivers/clk/clk.c | 8 ++++++++ include/clk.h | 9 +++++++++ 2 files changed, 17 insertions(+)
diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c index 0a0fffb50b..025bb99ecc 100644 --- a/drivers/clk/clk.c +++ b/drivers/clk/clk.c @@ -54,3 +54,11 @@ const char *clk_hw_get_name(const struct clk *hw) { return hw->dev->name; }
+bool clk_dev_binded(struct clk *clk) +{
- if (clk->dev && (clk->dev->flags & DM_FLAG_BOUND))
return true;
- return false;
+} diff --git a/include/clk.h b/include/clk.h index a4ecca9fbc..8199119d01 100644 --- a/include/clk.h +++ b/include/clk.h @@ -337,4 +337,13 @@ static inline bool clk_valid(struct clk *clk)
- @return zero on success, or -ENOENT on error
*/ int clk_get_by_id(ulong id, struct clk **clkp);
+/**
- clk_dev_binded() - Check whether the clk has a device binded
- @clk A pointer to the clk
- @return true on binded, or false on no
- */
+bool clk_dev_binded(struct clk *clk); #endif
Best regards,
Lukasz Majewski
--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email: lukma@denx.de