|
@@ -342,6 +342,39 @@ out:
|
|
|
return ret;
|
|
|
}
|
|
|
|
|
|
+/**
|
|
|
+ * clk_debug_reparent - reparent clk node in the debugfs clk tree
|
|
|
+ * @clk: the clk being reparented
|
|
|
+ * @new_parent: the new clk parent, may be NULL
|
|
|
+ *
|
|
|
+ * Rename clk entry in the debugfs clk tree if debugfs has been
|
|
|
+ * initialized. Otherwise it bails out early since the debugfs clk tree
|
|
|
+ * will be created lazily by clk_debug_init as part of a late_initcall.
|
|
|
+ *
|
|
|
+ * Caller must hold prepare_lock.
|
|
|
+ */
|
|
|
+static void clk_debug_reparent(struct clk *clk, struct clk *new_parent)
|
|
|
+{
|
|
|
+ struct dentry *d;
|
|
|
+ struct dentry *new_parent_d;
|
|
|
+
|
|
|
+ if (!inited)
|
|
|
+ return;
|
|
|
+
|
|
|
+ if (new_parent)
|
|
|
+ new_parent_d = new_parent->dentry;
|
|
|
+ else
|
|
|
+ new_parent_d = orphandir;
|
|
|
+
|
|
|
+ d = debugfs_rename(clk->dentry->d_parent, clk->dentry,
|
|
|
+ new_parent_d, clk->name);
|
|
|
+ if (d)
|
|
|
+ clk->dentry = d;
|
|
|
+ else
|
|
|
+ pr_debug("%s: failed to rename debugfs entry for %s\n",
|
|
|
+ __func__, clk->name);
|
|
|
+}
|
|
|
+
|
|
|
/**
|
|
|
* clk_debug_init - lazily create the debugfs clk tree visualization
|
|
|
*
|
|
@@ -396,6 +429,9 @@ static int __init clk_debug_init(void)
|
|
|
late_initcall(clk_debug_init);
|
|
|
#else
|
|
|
static inline int clk_debug_register(struct clk *clk) { return 0; }
|
|
|
+static inline void clk_debug_reparent(struct clk *clk, struct clk *new_parent)
|
|
|
+{
|
|
|
+}
|
|
|
#endif
|
|
|
|
|
|
/* caller must hold prepare_lock */
|
|
@@ -1277,16 +1313,8 @@ out:
|
|
|
return ret;
|
|
|
}
|
|
|
|
|
|
-void __clk_reparent(struct clk *clk, struct clk *new_parent)
|
|
|
+static void clk_reparent(struct clk *clk, struct clk *new_parent)
|
|
|
{
|
|
|
-#ifdef CONFIG_COMMON_CLK_DEBUG
|
|
|
- struct dentry *d;
|
|
|
- struct dentry *new_parent_d;
|
|
|
-#endif
|
|
|
-
|
|
|
- if (!clk || !new_parent)
|
|
|
- return;
|
|
|
-
|
|
|
hlist_del(&clk->child_node);
|
|
|
|
|
|
if (new_parent)
|
|
@@ -1294,27 +1322,13 @@ void __clk_reparent(struct clk *clk, struct clk *new_parent)
|
|
|
else
|
|
|
hlist_add_head(&clk->child_node, &clk_orphan_list);
|
|
|
|
|
|
-#ifdef CONFIG_COMMON_CLK_DEBUG
|
|
|
- if (!inited)
|
|
|
- goto out;
|
|
|
-
|
|
|
- if (new_parent)
|
|
|
- new_parent_d = new_parent->dentry;
|
|
|
- else
|
|
|
- new_parent_d = orphandir;
|
|
|
-
|
|
|
- d = debugfs_rename(clk->dentry->d_parent, clk->dentry,
|
|
|
- new_parent_d, clk->name);
|
|
|
- if (d)
|
|
|
- clk->dentry = d;
|
|
|
- else
|
|
|
- pr_debug("%s: failed to rename debugfs entry for %s\n",
|
|
|
- __func__, clk->name);
|
|
|
-out:
|
|
|
-#endif
|
|
|
-
|
|
|
clk->parent = new_parent;
|
|
|
+}
|
|
|
|
|
|
+void __clk_reparent(struct clk *clk, struct clk *new_parent)
|
|
|
+{
|
|
|
+ clk_reparent(clk, new_parent);
|
|
|
+ clk_debug_reparent(clk, new_parent);
|
|
|
__clk_recalc_rates(clk, POST_RATE_CHANGE);
|
|
|
}
|
|
|
|