From: "<Vishal Badole>" <badolevishal1116@gmail.com>
To: sboyd@kernel.org
Cc: mturquette@baylibre.com, linux-clk@vger.kernel.org,
linux-kernel@vger.kernel.org, chinmoyghosh2001@gmail.com,
vimal.kumar32@gmail.com, Mintu Patel <mintupatel89@gmail.com>
Subject: Re: [PATCH v3] Common clock: To list active consumers of clocks
Date: Sun, 21 Aug 2022 23:36:39 +0530 [thread overview]
Message-ID: <20220821180637.GB6946@Mahakal> (raw)
In-Reply-To: <1659463787-25976-1-git-send-email-badolevishal1116@gmail.com>
On Tue, Aug 02, 2022 at 11:39:47PM +0530, Vishal Badole wrote:
> This feature lists the clock consumer's name and per-user enable count
> in clock summary. Using this feature user can easily check which device
> has acquired a perticular clock and it is enabled by respective device
> or not.
> for example:
> $ cat /sys/kernel/debug/clk/clk_summary
> enable prepare protect duty hardware per-user
> clock count count count rate accuracy phase cycle enable consumer count
> ----------------------------------------------------------------------------------------------------------------------------
> clk_mcasp0_fixed 0 0 0 24576000 0 0 50000 Y deviceless 0
> deviceless 0
> clk_mcasp0 0 0 0 24576000 0 0 50000 N simple-audio-card,cpu 0
> deviceless 0
>
> 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>
> ---
> drivers/clk/clk.c | 46 +++++++++++++++++++++++++++++++++++-----------
> 1 file changed, 35 insertions(+), 11 deletions(-)
>
> diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c
> index f00d4c1..c96079f 100644
> --- a/drivers/clk/clk.c
> +++ b/drivers/clk/clk.c
> @@ -102,6 +102,7 @@ struct clk {
> unsigned long min_rate;
> unsigned long max_rate;
> unsigned int exclusive_count;
> + unsigned int enable_count;
> struct hlist_node clks_node;
> };
>
> @@ -1008,6 +1009,10 @@ void clk_disable(struct clk *clk)
> return;
>
> clk_core_disable_lock(clk->core);
> +
> + if (clk->enable_count > 0)
> + clk->enable_count--;
> +
> }
> EXPORT_SYMBOL_GPL(clk_disable);
>
> @@ -1169,10 +1174,16 @@ EXPORT_SYMBOL_GPL(clk_restore_context);
> */
> int clk_enable(struct clk *clk)
> {
> + int ret;
> +
> if (!clk)
> return 0;
>
> - return clk_core_enable_lock(clk->core);
> + ret = clk_core_enable_lock(clk->core);
> + if (!ret)
> + clk->enable_count++;
> +
> + return ret;
> }
> EXPORT_SYMBOL_GPL(clk_enable);
>
> @@ -2953,28 +2964,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 %-4d\n",
> + level * 3 + 2 + 105 * multi_node, "",
> + 30,
> + clk_user->dev_id ? clk_user->dev_id : "deviceless",
> + clk_user->enable_count);
> +
> + multi_node = 1;
> + }
> +
> }
>
> static void clk_summary_show_subtree(struct seq_file *s, struct clk_core *c,
> @@ -2995,9 +3019,9 @@ static int clk_summary_show(struct seq_file *s, void *data)
> struct clk_core *c;
> struct hlist_head **lists = (struct hlist_head **)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 per-user\n");
> + seq_puts(s, " clock count count count rate accuracy phase cycle enable consumer count\n");
> + seq_puts(s, "-------------------------------------------------------------------------------------------------------------------------------------------\n");
>
> clk_prepare_lock();
>
> --
> 2.7.4
>
Hi Stephen,
Please review the above patch. Here we have made the changes as per your
review points.
Note: The example format in commit meassage is getting changed during
copy paste but we are getting proper formatted and parsable output on
actual target.
Regards,
Vishal
next prev parent reply other threads:[~2022-08-21 18:06 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <CAEXpiVQihEadxsNodarz2-wxSAipfpzEaA8zKpnozszC+weYTQ@mail.gmail.com>
2022-06-10 19:40 ` [PATCH 5.4] Common clock: To list active consumers of clocks Stephen Boyd
[not found] ` <CAOUcgRfB-r3aERYeLumExgpTVzsDsBuyOWT+nCJ_OfOv1g0L9g@mail.gmail.com>
2022-06-15 19:23 ` <Vishal Badole>
2022-06-22 16:32 ` [PATCH] " <Vishal Badole>
2022-06-22 19:37 ` Randy Dunlap
2022-06-22 17:02 ` <Vishal Badole>
[not found] ` <20220624010550.582BBC341C7@smtp.kernel.org>
2022-06-26 18:25 ` <Vishal Badole>
2022-08-02 22:49 ` Elliott, Robert (Servers)
2022-08-08 17:00 ` <Vishal Badole>
2022-08-21 5:07 ` Elliott, Robert (Servers)
2022-08-21 17:59 ` <Vishal Badole>
2022-06-28 5:08 ` [PATCH v3] Common clock: To " Vishal Badole
2022-08-02 18:09 ` Vishal Badole
2022-08-08 16:46 ` <Vishal Badole>
2022-08-21 18:06 ` <Vishal Badole> [this message]
2022-08-22 23:50 ` Stephen Boyd
2022-08-26 17:34 ` <Vishal Badole>
2022-11-27 18:00 ` <Vishal Badole>
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220821180637.GB6946@Mahakal \
--to=badolevishal1116@gmail.com \
--cc=chinmoyghosh2001@gmail.com \
--cc=linux-clk@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mintupatel89@gmail.com \
--cc=mturquette@baylibre.com \
--cc=sboyd@kernel.org \
--cc=vimal.kumar32@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox