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: Mon, 8 Aug 2022 22:16:46 +0530 [thread overview]
Message-ID: <20220808164644.GA5239@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,
Have you got a chance to review the above patch?
We have made the changes as per the reviews, please have a look on the
patch.
Regards,
Vishal
next prev parent reply other threads:[~2022-08-08 16:46 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> [this message]
2022-08-21 18:06 ` <Vishal Badole>
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=20220808164644.GA5239@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.