[PATCH] clkdev: add debugfs support
Jean-Christophe PLAGNIOL-VILLARD
plagnioj at jcrosoft.com
Tue Apr 12 06:17:57 EDT 2011
Hi Uwe,
On 08:55 Tue 12 Apr , Uwe Kleine-König wrote:
> Hello Jean-Christophe,
>
> On Tue, Apr 12, 2011 at 03:32:59AM +0200, Jean-Christophe PLAGNIOL-VILLARD wrote:
> > create a file in /sys/kernel/debug/clkdev
> >
> > with the list of lookup with the con_id, dev_id and the clock rate
> >
> > as this
> >
> > dev_id con_id rate
> > (null) clk32k 32768 Hz
> > (null) main 16367660 Hz
> > (null) plla 199919178 Hz
> > (null) mck 99959589 Hz
> > at91_mci.0 mci_clk 99959589 Hz
> > at91_mci.1 mci_clk 99959589 Hz
> > atmel_spi.0 spi_clk 99959589 Hz
> >
> > Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj at jcrosoft.com>
> > ---
> > drivers/clk/clkdev.c | 40 ++++++++++++++++++++++++++++++++++++++++
> > 1 files changed, 40 insertions(+), 0 deletions(-)
> >
> > diff --git a/drivers/clk/clkdev.c b/drivers/clk/clkdev.c
> > index 0fc0a79..5c3a6fb 100644
> > --- a/drivers/clk/clkdev.c
> > +++ b/drivers/clk/clkdev.c
> > @@ -19,6 +19,8 @@
> > #include <linux/mutex.h>
> > #include <linux/clk.h>
> > #include <linux/clkdev.h>
> > +#include <linux/debugfs.h>
> > +#include <linux/seq_file.h>
> >
> > static LIST_HEAD(clocks);
> > static DEFINE_MUTEX(clocks_mutex);
> > @@ -174,3 +176,41 @@ void clkdev_drop(struct clk_lookup *cl)
> > kfree(cl);
> > }
> > EXPORT_SYMBOL(clkdev_drop);
> > +
> > +#ifdef CONFIG_DEBUG_FS
> > +static int clkdev_clk_show(struct seq_file *s, void *unused)
> > +{
> > + struct clk_lookup *p;
> > +
> > + seq_printf(s, "%-20s %-20s rate\n", "dev_id", "con_id");
> > +
> > + list_for_each_entry(p, &clocks, node) {
> > +
> > + seq_printf(s, "%-20s %-20s %9ld Hz\n",
> > + p->dev_id, p->con_id, clk_get_rate(p->clk));
> s/%9ld/%9lu/ ?
yeah
>
> According to include/linux/clk.h, the result of clk_get_rate is "only
> valid once the clock source has been enabled". So it would be nice to
> find out (and tell) if a clock is on or not.
it was my idea also at the begenning as we do on at91 but the current clk api
does not allow it
if we want it we need to update the clk API and implement it
>
> > + }
> > + return 0;
> > +}
> > +
> > +static int clkdev_clk_open(struct inode *inode, struct file *file)
> > +{
> > + return single_open(file, clkdev_clk_show, NULL);
> > +}
> > +
> > +static const struct file_operations clkdev_clk_operations = {
> > + .open = clkdev_clk_open,
> > + .read = seq_read,
> > + .llseek = seq_lseek,
> > + .release = single_release,
> > +};
> > +
> > +static int __init clkdev_clk_debugfs_init(void)
> > +{
> > + /* /sys/kernel/debug/clkdev */
> > + (void) debugfs_create_file("clkdev", S_IFREG | S_IRUGO, NULL, NULL,
> > + &clkdev_clk_operations);
> I'd be a bit more conservative here and would only allow S_IRUSR.
ok will take a look
Best Regards,
J.
More information about the linux-arm-kernel
mailing list