diff options
author | Alex Elder <elder@linaro.org> | 2014-03-21 07:43:56 -0400 |
---|---|---|
committer | Mike Turquette <mturquette@linaro.org> | 2014-03-24 20:10:07 -0400 |
commit | c646cbf10fb3347ecda290dfce96b813a423ca07 (patch) | |
tree | 499a4c533b84bb9a1066c6c2a428f5db1fe38419 | |
parent | afbd1a0c309e3d5cb581a3f7c879be97855fe72f (diff) |
clk: support hardware-specific debugfs entries
Add a new clk_ops->debug_init method to allow a clock hardware
driver to populate the clock's debugfs directory with entries
beyond those common for every clock.
Signed-off-by: Alex Elder <elder@linaro.org>
Signed-off-by: Mike Turquette <mturquette@linaro.org>
-rw-r--r-- | drivers/clk/clk.c | 4 | ||||
-rw-r--r-- | include/linux/clk-provider.h | 8 |
2 files changed, 12 insertions, 0 deletions
diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c index fb3c40b4fbe2..1fbcb2b107e7 100644 --- a/drivers/clk/clk.c +++ b/drivers/clk/clk.c | |||
@@ -277,6 +277,10 @@ static int clk_debug_create_one(struct clk *clk, struct dentry *pdentry) | |||
277 | if (!d) | 277 | if (!d) |
278 | goto err_out; | 278 | goto err_out; |
279 | 279 | ||
280 | if (clk->ops->debug_init) | ||
281 | if (clk->ops->debug_init(clk->hw, clk->dentry)) | ||
282 | goto err_out; | ||
283 | |||
280 | ret = 0; | 284 | ret = 0; |
281 | goto out; | 285 | goto out; |
282 | 286 | ||
diff --git a/include/linux/clk-provider.h b/include/linux/clk-provider.h index 939533da93a7..511917416fb0 100644 --- a/include/linux/clk-provider.h +++ b/include/linux/clk-provider.h | |||
@@ -32,6 +32,7 @@ | |||
32 | #define CLK_GET_ACCURACY_NOCACHE BIT(8) /* do not use the cached clk accuracy */ | 32 | #define CLK_GET_ACCURACY_NOCACHE BIT(8) /* do not use the cached clk accuracy */ |
33 | 33 | ||
34 | struct clk_hw; | 34 | struct clk_hw; |
35 | struct dentry; | ||
35 | 36 | ||
36 | /** | 37 | /** |
37 | * struct clk_ops - Callback operations for hardware clocks; these are to | 38 | * struct clk_ops - Callback operations for hardware clocks; these are to |
@@ -127,6 +128,12 @@ struct clk_hw; | |||
127 | * separately via calls to .set_parent and .set_rate. | 128 | * separately via calls to .set_parent and .set_rate. |
128 | * Returns 0 on success, -EERROR otherwise. | 129 | * Returns 0 on success, -EERROR otherwise. |
129 | * | 130 | * |
131 | * @debug_init: Set up type-specific debugfs entries for this clock. This | ||
132 | * is called once, after the debugfs directory entry for this | ||
133 | * clock has been created. The dentry pointer representing that | ||
134 | * directory is provided as an argument. Called with | ||
135 | * prepare_lock held. Returns 0 on success, -EERROR otherwise. | ||
136 | * | ||
130 | * | 137 | * |
131 | * The clk_enable/clk_disable and clk_prepare/clk_unprepare pairs allow | 138 | * The clk_enable/clk_disable and clk_prepare/clk_unprepare pairs allow |
132 | * implementations to split any work between atomic (enable) and sleepable | 139 | * implementations to split any work between atomic (enable) and sleepable |
@@ -165,6 +172,7 @@ struct clk_ops { | |||
165 | unsigned long (*recalc_accuracy)(struct clk_hw *hw, | 172 | unsigned long (*recalc_accuracy)(struct clk_hw *hw, |
166 | unsigned long parent_accuracy); | 173 | unsigned long parent_accuracy); |
167 | void (*init)(struct clk_hw *hw); | 174 | void (*init)(struct clk_hw *hw); |
175 | int (*debug_init)(struct clk_hw *hw, struct dentry *dentry); | ||
168 | }; | 176 | }; |
169 | 177 | ||
170 | /** | 178 | /** |