@@ -453,6 +453,19 @@ int clk_disable_bulk(struct clk_bulk *bulk)
return 0;
}
+bool clk_is_match(const struct clk *p, const struct clk *q)
+{
+ /* trivial case: identical struct clk's or both NULL */
+ if (p == q)
+ return true;
+
+ /* same device, id and data */
+ if (p->dev == q->dev && p->id == q->id && p->data == q->data)
+ return true;
+
+ return false;
+}
+
UCLASS_DRIVER(clk) = {
.id = UCLASS_CLK,
.name = "clk",
@@ -309,6 +309,18 @@ int clk_disable(struct clk *clk);
*/
int clk_disable_bulk(struct clk_bulk *bulk);
+/**
+ * clk_is_match - check if two clk's point to the same hardware clock
+ * @p: clk compared against q
+ * @q: clk compared against p
+ *
+ * Returns true if the two struct clk pointers both point to the same hardware
+ * clock node.
+ *
+ * Returns false otherwise. Note that two NULL clks are treated as matching.
+ */
+bool clk_is_match(const struct clk *p, const struct clk *q);
+
int soc_clk_dump(void);
/**
@@ -321,4 +333,5 @@ static inline bool clk_valid(struct clk *clk)
{
return !!clk->dev;
}
+
#endif
Add support for clk_is_match() which is required to know if two clock pointers point to the same exact physical clock. Signed-off-by: Sekhar Nori <nsekhar@ti.com> --- drivers/clk/clk-uclass.c | 13 +++++++++++++ include/clk.h | 13 +++++++++++++ 2 files changed, 26 insertions(+)