From: mturquette@linaro.org (Mike Turquette)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] clk: debugfs add clk_rate_fops with DEBUG
Date: Mon, 07 Oct 2013 14:29:04 -0700 [thread overview]
Message-ID: <20131007212904.7445.60382@quantum> (raw)
In-Reply-To: <1376890457-17871-1-git-send-email-zhangfei.gao@linaro.org>
Quoting Zhangfei Gao (2013-08-18 22:34:17)
> clk_rate_fops is added to debug
> 1. set_rate (e.g. PLL)
> 2. Choose mux parent, since mux could choose parent accordingly when set_rate.
>
> Causion: set_rate can be called directly from user space
>
> Example:
> sfc_mux have two parents: 24M and 200M
>
> cat clk_summary
> clock enable_cnt prepare_cnt rate
> ---------------------------------------------------------------------
> osc24mhz 3 3 24000000
> bpll_fout3 0 0 200000000
> sfc_mux 0 0 200000000
> sfc 0 0 200000000
>
> cat osc24mhz/bpll/bpll_fout3/sfc_mux/sfc/clk_rate
> 200000000
>
> echo 24000000 > osc24mhz/bpll/bpll_fout3/sfc_mux/sfc/clk_rate
> cat clk_summary
> clock enable_cnt prepare_cnt rate
> ---------------------------------------------------------------------
> osc24mhz 3 3 24000000
> sfc_mux 0 0 24000000
> sfc 0 0 24000000
> bpll_fout3 0 0 200000000
>
> cat osc24mhz/sfc_mux/sfc/clk_rate
> 24000000
>
> Signed-off-by: Zhangfei Gao <zhangfei.gao@linaro.org>
Thanks for the patch. It is trivial enough where I think we can leave it
on the list and let developers apply it if they need it for debug. I
don't want to merge it since it exposes hardware control to userspace
and could be abused in a way that could damage a device.
Regards,
Mike
> ---
> drivers/clk/clk.c | 34 ++++++++++++++++++++++++++++++++++
> 1 file changed, 34 insertions(+)
>
> diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c
> index 373cd54..6b582f7 100644
> --- a/drivers/clk/clk.c
> +++ b/drivers/clk/clk.c
> @@ -226,6 +226,35 @@ static const struct file_operations clk_dump_fops = {
> .release = single_release,
> };
>
> +#ifdef DEBUG
> +static int clk_rate_fops_get(void *data, u64 *rate)
> +{
> + struct clk *clk = data;
> +
> + *rate = clk->rate;
> +
> + return 0;
> +};
> +
> +static int clk_rate_fops_set(void *data, u64 rate)
> +{
> + struct clk *clk = data;
> + int ret = 0;
> +
> + ret = clk_prepare_enable(clk);
> + if (ret)
> + goto out;
> + clk_set_rate(clk, rate);
> + clk_disable_unprepare(clk);
> +
> +out:
> + return ret;
> +};
> +
> +DEFINE_SIMPLE_ATTRIBUTE(clk_rate_fops, clk_rate_fops_get,
> + clk_rate_fops_set, "%llu\n");
> +#endif
> +
> /* caller must hold prepare_lock */
> static int clk_debug_create_one(struct clk *clk, struct dentry *pdentry)
> {
> @@ -243,8 +272,13 @@ static int clk_debug_create_one(struct clk *clk, struct dentry *pdentry)
>
> clk->dentry = d;
>
> +#ifdef DEBUG
> + d = debugfs_create_file("clk_rate", S_IWUSR | S_IRUGO, clk->dentry,
> + clk, &clk_rate_fops);
> +#else
> d = debugfs_create_u32("clk_rate", S_IRUGO, clk->dentry,
> (u32 *)&clk->rate);
> +#endif
> if (!d)
> goto err_out;
>
> --
> 1.7.9.5
next prev parent reply other threads:[~2013-10-07 21:29 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <1376875884-13459-1-git-send-email-zhangfei.gao@linaro.org>
2013-08-19 5:34 ` [PATCH] clk: debugfs add clk_rate_fops with DEBUG Zhangfei Gao
2013-10-07 21:29 ` Mike Turquette [this message]
2013-10-08 2:48 ` zhangfei gao
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=20131007212904.7445.60382@quantum \
--to=mturquette@linaro.org \
--cc=linux-arm-kernel@lists.infradead.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 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.