[PATCH 9/9 V2] clkdev: add print clk info command

Jean-Christophe PLAGNIOL-VILLARD plagnioj at jcrosoft.com
Thu Sep 2 15:41:50 EDT 2010


Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj at jcrosoft.com>
---
 commands/Kconfig     |    7 +++++++
 drivers/clk/clkdev.c |   33 +++++++++++++++++++++++++++++++++
 2 files changed, 40 insertions(+), 0 deletions(-)

diff --git a/commands/Kconfig b/commands/Kconfig
index 57c9b75..fe13f90 100644
--- a/commands/Kconfig
+++ b/commands/Kconfig
@@ -338,4 +338,11 @@ config CMD_I2C
 	  include i2c_probe, i2c_read and i2c_write commands to communicate
 	  on i2c bus.
 
+config CMD_CLOCK_INFO
+	bool
+	depends on CLKDEV_LOOKUP
+	prompt "clock info command"
+	help
+	  show list of registered clock
+
 endmenu
diff --git a/drivers/clk/clkdev.c b/drivers/clk/clkdev.c
index 717fea5..49d98df 100644
--- a/drivers/clk/clkdev.c
+++ b/drivers/clk/clkdev.c
@@ -11,6 +11,7 @@
  */
 
 #include <common.h>
+#include <command.h>
 #include <linux/list.h>
 #include <errno.h>
 #include <linux/err.h>
@@ -166,3 +167,35 @@ void clkdev_drop(struct clk_lookup *cl)
 	kfree(cl);
 }
 EXPORT_SYMBOL(clkdev_drop);
+
+#ifdef CONFIG_CMD_CLOCK_INFO
+static int do_clock_info(struct command *cmdtp, int argc, char *argv[])
+{
+	struct clk_lookup *p;
+
+	puts("Global clocks:\n");
+
+	list_for_each_entry(p, &clocks, node)
+		if (!p->dev_id)
+			printf("%s: %#wHz\n", p->con_id, clk_get_rate(p->clk));
+
+	puts("Device specific clocks:\n");
+
+	list_for_each_entry(p, &clocks, node)
+		if (p->dev_id)
+			printf("%s[%s]: %#wHz\n", p->con_id, p->dev_id,
+					       clk_get_rate(p->clk));
+
+	return 0;
+}
+
+static const __maybe_unused char cmd_clock_info_help[] =
+"Print clocks info\n"
+;
+
+BAREBOX_CMD_START(clock_info)
+	.cmd		= do_clock_info,
+	.usage		= "Clocks Info",
+	BAREBOX_CMD_HELP(cmd_clock_info_help)
+BAREBOX_CMD_END
+#endif
-- 
1.7.1




More information about the barebox mailing list