diff options
author | Philipp Tomsich <philipp.tomsich@theobroma-systems.com> | 2017-03-02 10:37:39 +0100 |
---|---|---|
committer | Philipp Tomsich <philipp.tomsich@theobroma-systems.com> | 2017-03-09 01:40:25 +0100 |
commit | 3d2d82d1be91e2f839bb655b0d4784c0df3716fb (patch) | |
tree | f282f1fc3ce4aa084fda0d1924c75af12d801f07 | |
parent | c79568857424c47889695e5ae60e3a4721f94038 (diff) |
cmd: clk: add set/get rate subcommand
-rw-r--r-- | cmd/clk.c | 33 |
1 files changed, 31 insertions, 2 deletions
@@ -13,6 +13,32 @@ int __weak soc_clk_dump(void) return 1; } +static int do_clk_rate(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[]) +{ + struct clk clk; + const char* name; + ulong freq; + int ret; + + name = argv[1]; + ret = clk_get_by_output_name(name, &clk); + + if (ret < 0) { + printf("clk output %s not found\n", name); + return 1; + } + + if (argc > 2) { + freq = simple_strtoul(argv[2], NULL, 10); + freq = clk_set_rate(&clk, freq); + } else { + freq = clk_get_rate(&clk); + } + + printf("%s: %ld hz\n", name, freq); + return 0; +} + static int do_clk_dump(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[]) { @@ -21,6 +47,7 @@ static int do_clk_dump(cmd_tbl_t *cmdtp, int flag, int argc, static cmd_tbl_t cmd_clk_sub[] = { U_BOOT_CMD_MKENT(dump, 1, 1, do_clk_dump, "", ""), + U_BOOT_CMD_MKENT(rate, 2, 1, do_clk_rate, "", ""), }; static int do_clk(cmd_tbl_t *cmdtp, int flag, int argc, @@ -45,7 +72,9 @@ static int do_clk(cmd_tbl_t *cmdtp, int flag, int argc, #ifdef CONFIG_SYS_LONGHELP static char clk_help_text[] = - "dump - Print clock frequencies"; + "dump - Print clock frequencies\n" \ + "clk rate clockname [freq] - get/set the rate of a named clock\n" \ + ; #endif -U_BOOT_CMD(clk, 2, 1, do_clk, "CLK sub-system", clk_help_text); +U_BOOT_CMD(clk, 4, 1, do_clk, "CLK sub-system", clk_help_text); |