linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] clkdev: add debugfs support
@ 2011-04-12  1:32 Jean-Christophe PLAGNIOL-VILLARD
  2011-04-12  6:55 ` Uwe Kleine-König
  0 siblings, 1 reply; 3+ messages in thread
From: Jean-Christophe PLAGNIOL-VILLARD @ 2011-04-12  1:32 UTC (permalink / raw)
  To: linux-arm-kernel

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@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));
+	}
+	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);
+
+	return 0;
+}
+postcore_initcall(clkdev_clk_debugfs_init);
+#endif
-- 
1.7.4.1

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* [PATCH] clkdev: add debugfs support
  2011-04-12  1:32 [PATCH] clkdev: add debugfs support Jean-Christophe PLAGNIOL-VILLARD
@ 2011-04-12  6:55 ` Uwe Kleine-König
  2011-04-12 10:17   ` Jean-Christophe PLAGNIOL-VILLARD
  0 siblings, 1 reply; 3+ messages in thread
From: Uwe Kleine-König @ 2011-04-12  6:55 UTC (permalink / raw)
  To: linux-arm-kernel

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@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/ ?

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.

> +	}
> +	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.

Best regards
Uwe

-- 
Pengutronix e.K.                           | Uwe Kleine-K?nig            |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |

^ permalink raw reply	[flat|nested] 3+ messages in thread

* [PATCH] clkdev: add debugfs support
  2011-04-12  6:55 ` Uwe Kleine-König
@ 2011-04-12 10:17   ` Jean-Christophe PLAGNIOL-VILLARD
  0 siblings, 0 replies; 3+ messages in thread
From: Jean-Christophe PLAGNIOL-VILLARD @ 2011-04-12 10:17 UTC (permalink / raw)
  To: linux-arm-kernel

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@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.

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2011-04-12 10:17 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-04-12  1:32 [PATCH] clkdev: add debugfs support Jean-Christophe PLAGNIOL-VILLARD
2011-04-12  6:55 ` Uwe Kleine-König
2011-04-12 10:17   ` Jean-Christophe PLAGNIOL-VILLARD

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).