clk: Show active consumers of clocks in debugfs
[ Upstream commit dcce5cc7826e9c6b3a2443e5e6b7f8d02a103c35 ] This feature lists the clock consumer's name and respective connection id. Using this feature user can easily check that which user has acquired and enabled a particular clock. Usage: >> cat /sys/kernel/debug/clk/clk_summary enable prepare protect duty hardware Connection clock count count count rate accuracy phase cycle enable consumer Id ------------------------------------------------------------------------------------------------------------------------------ clk_mcasp0_fixed 0 0 0 24576000 0 0 50000 Y deviceless of_clk_get_from_provider deviceless no_connection_id clk_mcasp0 0 0 0 24576000 0 0 50000 N simple-audio-card,cpu no_connection_id deviceless no_connection_id Co-developed-by: Chinmoy Ghosh <chinmoyghosh2001@gmail.com> Signed-off-by: Chinmoy Ghosh <chinmoyghosh2001@gmail.com> Co-developed-by: Mintu Patel <mintupatel89@gmail.com> Signed-off-by: Mintu Patel <mintupatel89@gmail.com> Co-developed-by: Vimal Kumar <vimal.kumar32@gmail.com> Signed-off-by: Vimal Kumar <vimal.kumar32@gmail.com> Signed-off-by: Vishal Badole <badolevishal1116@gmail.com> Link: https://lore.kernel.org/r/1669569799-8526-1-git-send-email-badolevishal1116@gmail.com Signed-off-by: Stephen Boyd <sboyd@kernel.org> Stable-dep-of: 9d1e795f754d ("clk: Get runtime PM before walking tree for clk_summary") Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
60ff482c42
commit
888a44f261
@ -3279,28 +3279,41 @@ static void clk_summary_show_one(struct seq_file *s, struct clk_core *c,
|
||||
int level)
|
||||
{
|
||||
int phase;
|
||||
struct clk *clk_user;
|
||||
int multi_node = 0;
|
||||
|
||||
seq_printf(s, "%*s%-*s %7d %8d %8d %11lu %10lu ",
|
||||
seq_printf(s, "%*s%-*s %-7d %-8d %-8d %-11lu %-10lu ",
|
||||
level * 3 + 1, "",
|
||||
30 - level * 3, c->name,
|
||||
35 - level * 3, c->name,
|
||||
c->enable_count, c->prepare_count, c->protect_count,
|
||||
clk_core_get_rate_recalc(c),
|
||||
clk_core_get_accuracy_recalc(c));
|
||||
|
||||
phase = clk_core_get_phase(c);
|
||||
if (phase >= 0)
|
||||
seq_printf(s, "%5d", phase);
|
||||
seq_printf(s, "%-5d", phase);
|
||||
else
|
||||
seq_puts(s, "-----");
|
||||
|
||||
seq_printf(s, " %6d", clk_core_get_scaled_duty_cycle(c, 100000));
|
||||
seq_printf(s, " %-6d", clk_core_get_scaled_duty_cycle(c, 100000));
|
||||
|
||||
if (c->ops->is_enabled)
|
||||
seq_printf(s, " %9c\n", clk_core_is_enabled(c) ? 'Y' : 'N');
|
||||
seq_printf(s, " %5c ", clk_core_is_enabled(c) ? 'Y' : 'N');
|
||||
else if (!c->ops->enable)
|
||||
seq_printf(s, " %9c\n", 'Y');
|
||||
seq_printf(s, " %5c ", 'Y');
|
||||
else
|
||||
seq_printf(s, " %9c\n", '?');
|
||||
seq_printf(s, " %5c ", '?');
|
||||
|
||||
hlist_for_each_entry(clk_user, &c->clks, clks_node) {
|
||||
seq_printf(s, "%*s%-*s %-25s\n",
|
||||
level * 3 + 2 + 105 * multi_node, "",
|
||||
30,
|
||||
clk_user->dev_id ? clk_user->dev_id : "deviceless",
|
||||
clk_user->con_id ? clk_user->con_id : "no_connection_id");
|
||||
|
||||
multi_node = 1;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
static void clk_summary_show_subtree(struct seq_file *s, struct clk_core *c,
|
||||
@ -3321,9 +3334,10 @@ static int clk_summary_show(struct seq_file *s, void *data)
|
||||
struct clk_core *c;
|
||||
struct hlist_head **lists = s->private;
|
||||
|
||||
seq_puts(s, " enable prepare protect duty hardware\n");
|
||||
seq_puts(s, " clock count count count rate accuracy phase cycle enable\n");
|
||||
seq_puts(s, "-------------------------------------------------------------------------------------------------------\n");
|
||||
seq_puts(s, " enable prepare protect duty hardware connection\n");
|
||||
seq_puts(s, " clock count count count rate accuracy phase cycle enable consumer id\n");
|
||||
seq_puts(s, "---------------------------------------------------------------------------------------------------------------------------------------------\n");
|
||||
|
||||
|
||||
clk_prepare_lock();
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user