public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Mike Turquette <mturquette@linaro.org>
To: Prashant Gaikwad <pgaikwad@nvidia.com>, <swarren@wwwdotorg.org>
Cc: <linux-kernel@vger.kernel.org>,
	<linux-arm-kernel@lists.infradead.org>,
	Prashant Gaikwad <pgaikwad@nvidia.com>
Subject: Re: [PATCH 1/2] clk: Add debug clk summary
Date: Fri, 11 Jan 2013 19:54:31 -0800	[thread overview]
Message-ID: <20130112035431.4361.12997@quantum> (raw)
In-Reply-To: <1356529583-19535-1-git-send-email-pgaikwad@nvidia.com>

Quoting Prashant Gaikwad (2012-12-26 05:46:22)
> Adds debug file "clk_summary" in /sys/kernel/debug/clk dir.
> It helps to view all the clock registered in human-readable format.
> 
> For example:
>    clock                        enable_cnt  prepare_cnt  rate
> ---------------------------------------------------------------------
>  i2s0_sync                      0           0            24000000
>  spdif_in_sync                  0           0            24000000
>     spdif_mux                   0           0            24000000
>        spdif                    0           0            24000000
>           spdif_doubler         0           0            48000000
>              spdif_div          0           0            48000000
>                 spdif_2x        0           0            48000000
>  clk_32k                        2           2            32768
>     blink_override              1           1            32768
>        blink                    1           1            32768
>  clk_m                          2           2            12000000
>     clk_out_3_mux               0           0            12000000
>        clk_out_3                0           0            12000000
>     pll_ref                     3           3            12000000
>        pll_e_mux                0           0            12000000
>           pll_e                 0           0            100000000
>              cml0               0           0            100000000
>              cml1               0           0            100000000
>              pciex              0           0            100000000
>        pll_d2                   0           0            1000000
>           pll_d2_out0           0           0            500000
>        pll_d                    0           0            1000000
>           pll_d_out0            0           0            500000
>              dsib_mux           0           0            500000
>                 dsib            0           0            500000
>              dsia               0           0            500000
> 
> Signed-off-by: Prashant Gaikwad <pgaikwad@nvidia.com>

Thanks for the respin of patch #1 and for generating the JSON output
format in patch #2.  I've taken both of these into clk-next.

Regards,
Mike

> ---
>  drivers/clk/clk.c |   67 +++++++++++++++++++++++++++++++++++++++++++++++++++++
>  1 files changed, 67 insertions(+), 0 deletions(-)
> 
> diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c
> index 56e4495e..d79c088 100644
> --- a/drivers/clk/clk.c
> +++ b/drivers/clk/clk.c
> @@ -34,6 +34,67 @@ static struct dentry *rootdir;
>  static struct dentry *orphandir;
>  static int inited = 0;
>  
> +static void clk_summary_show_one(struct seq_file *s, struct clk *c, int level)
> +{
> +       if (!c)
> +               return;
> +
> +       seq_printf(s, "%*s%-*s %-11d %-12d %-10lu",
> +                  level * 3 + 1, "",
> +                  30 - level * 3, c->name,
> +                  c->enable_count, c->prepare_count, c->rate);
> +       seq_printf(s, "\n");
> +}
> +
> +static void clk_summary_show_subtree(struct seq_file *s, struct clk *c,
> +                                    int level)
> +{
> +       struct clk *child;
> +       struct hlist_node *tmp;
> +
> +       if (!c)
> +               return;
> +
> +       clk_summary_show_one(s, c, level);
> +
> +       hlist_for_each_entry(child, tmp, &c->children, child_node)
> +               clk_summary_show_subtree(s, child, level + 1);
> +}
> +
> +static int clk_summary_show(struct seq_file *s, void *data)
> +{
> +       struct clk *c;
> +       struct hlist_node *tmp;
> +
> +       seq_printf(s, "   clock                        enable_cnt  prepare_cnt  rate\n");
> +       seq_printf(s, "---------------------------------------------------------------------\n");
> +
> +       mutex_lock(&prepare_lock);
> +
> +       hlist_for_each_entry(c, tmp, &clk_root_list, child_node)
> +               clk_summary_show_subtree(s, c, 0);
> +
> +       hlist_for_each_entry(c, tmp, &clk_orphan_list, child_node)
> +               clk_summary_show_subtree(s, c, 0);
> +
> +       mutex_unlock(&prepare_lock);
> +
> +       return 0;
> +}
> +
> +
> +static int clk_summary_open(struct inode *inode, struct file *file)
> +{
> +       return single_open(file, clk_summary_show, inode->i_private);
> +}
> +
> +static const struct file_operations clk_summary_fops = {
> +       .open           = clk_summary_open,
> +       .read           = seq_read,
> +       .llseek         = seq_lseek,
> +       .release        = single_release,
> +};
> +
>  /* caller must hold prepare_lock */
>  static int clk_debug_create_one(struct clk *clk, struct dentry *pdentry)
>  {
> @@ -167,12 +228,18 @@ static int __init clk_debug_init(void)
>  {
>         struct clk *clk;
>         struct hlist_node *tmp;
> +       struct dentry *d;
>  
>         rootdir = debugfs_create_dir("clk", NULL);
>  
>         if (!rootdir)
>                 return -ENOMEM;
>  
> +       d = debugfs_create_file("clk_summary", S_IRUGO, rootdir, NULL,
> +                               &clk_summary_fops);
> +       if (!d)
> +               return -ENOMEM;
> +
>         orphandir = debugfs_create_dir("orphans", rootdir);
>  
>         if (!orphandir)
> -- 
> 1.7.4.1

      parent reply	other threads:[~2013-01-12  3:54 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-12-26 13:46 [PATCH 1/2] clk: Add debug clk summary Prashant Gaikwad
2012-12-26 13:46 ` [PATCH 2/2] clk: Add debug entry to dump clock information Prashant Gaikwad
2013-01-12  3:54 ` Mike Turquette [this message]

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=20130112035431.4361.12997@quantum \
    --to=mturquette@linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=pgaikwad@nvidia.com \
    --cc=swarren@wwwdotorg.org \
    /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