diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2015-11-06 16:10:42 +0100 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2015-11-06 16:10:42 +0100 |
commit | 1d9295b344a885e5a79de38df28740a1db6f6103 (patch) | |
tree | ca427bbf13a04f3480fb398630473bede4ef6463 /commands | |
parent | 736a74ba7a1c3983105b92a709c263e206fe3913 (diff) | |
parent | 6face0e8ab8d97dcc7284a8a5d7ae1f4d134798f (diff) | |
download | barebox-1d9295b344a885e5a79de38df28740a1db6f6103.tar.gz barebox-1d9295b344a885e5a79de38df28740a1db6f6103.tar.xz |
Merge branch 'for-next/misc'
Diffstat (limited to 'commands')
-rw-r--r-- | commands/clk.c | 59 | ||||
-rw-r--r-- | commands/edit.c | 20 | ||||
-rw-r--r-- | commands/loadb.c | 4 | ||||
-rw-r--r-- | commands/memtest.c | 5 | ||||
-rw-r--r-- | commands/of_dump.c | 21 |
5 files changed, 97 insertions, 12 deletions
diff --git a/commands/clk.c b/commands/clk.c index 4e7ca60a29..e9459a3fd3 100644 --- a/commands/clk.c +++ b/commands/clk.c @@ -3,6 +3,8 @@ #include <getopt.h> #include <linux/clk.h> #include <linux/err.h> +#include <environment.h> +#include <malloc.h> static int do_clk_enable(int argc, char *argv[]) { @@ -38,7 +40,7 @@ static int do_clk_disable(int argc, char *argv[]) clk_disable(clk); - return 0; + return COMMAND_SUCCESS; } BAREBOX_CMD_START(clk_disable) @@ -77,6 +79,59 @@ BAREBOX_CMD_START(clk_set_rate) BAREBOX_CMD_HELP(cmd_clk_set_rate_help) BAREBOX_CMD_END +static int do_clk_get_rate(int argc, char *argv[]) +{ + int opt; + struct clk *clk; + unsigned long rate; + const char *variable_name = NULL; + + while ((opt = getopt(argc, argv, "s:")) > 0) { + switch (opt) { + case 's': + variable_name = optarg; + break; + default: + return COMMAND_ERROR_USAGE; + } + } + + if (optind == argc) { + fprintf(stderr, "No clock name given\n"); + return COMMAND_ERROR_USAGE; + } + + clk = clk_lookup(argv[optind]); + if (IS_ERR(clk)) + return PTR_ERR(clk); + + rate = clk_get_rate(clk); + + if (variable_name) { + char *t; + + t = asprintf("%lu", rate); + setenv(variable_name, t); + free(t); + } else + printf("%lu\n", rate); + + return COMMAND_SUCCESS; +} + +BAREBOX_CMD_HELP_START(clk_get_rate) +BAREBOX_CMD_HELP_TEXT("Show clock CLK rate") +BAREBOX_CMD_HELP_OPT("-s VARNAME", "set variable VARNAME instead of showing information") +BAREBOX_CMD_HELP_END + +BAREBOX_CMD_START(clk_get_rate) + .cmd = do_clk_get_rate, + BAREBOX_CMD_DESC("get a clocks rate") + BAREBOX_CMD_OPTS("[-s VARNAME] CLK") + BAREBOX_CMD_GROUP(CMD_GRP_HWMANIP) + BAREBOX_CMD_HELP(cmd_clk_get_rate_help) +BAREBOX_CMD_END + static int do_clk_dump(int argc, char *argv[]) { int opt, verbose = 0; @@ -94,7 +149,7 @@ static int do_clk_dump(int argc, char *argv[]) clk_dump(verbose); - return 0; + return COMMAND_SUCCESS; } BAREBOX_CMD_HELP_START(clk_dump) diff --git a/commands/edit.c b/commands/edit.c index b28e2b92a1..c014892fc4 100644 --- a/commands/edit.c +++ b/commands/edit.c @@ -258,6 +258,7 @@ static int save_file(const char *path) { struct line *line, *tmp; int fd; + int ret = 0; fd = open(path, O_WRONLY | O_TRUNC | O_CREAT); if (fd < 0) { @@ -269,12 +270,20 @@ static int save_file(const char *path) while(line) { tmp = line->next; - write(fd, line->data, strlen(line->data)); - write(fd, "\n", 1); + ret = write_full(fd, line->data, strlen(line->data)); + if (ret < 0) + goto out; + ret = write_full(fd, "\n", 1); + if (ret < 0) + goto out; line = tmp; } + + ret = 0; + +out: close(fd); - return 0; + return ret; } static void insert_char(char c) @@ -375,6 +384,7 @@ static int do_edit(int argc, char *argv[]) int i; int linepos; int c; + int ret = COMMAND_SUCCESS; if (argc != 2) return COMMAND_ERROR_USAGE; @@ -533,7 +543,7 @@ static int do_edit(int argc, char *argv[]) } break; case 4: - save_file(argv[1]); + ret = save_file(argv[1]); goto out; case 3: goto out; @@ -546,7 +556,7 @@ out: free_buffer(); printf("%c[2J%c[r", 27, 27); printf("\n"); - return 0; + return ret; } static const char *edit_aliases[] = { "sedit", NULL}; diff --git a/commands/loadb.c b/commands/loadb.c index be5830da32..aabb00ab20 100644 --- a/commands/loadb.c +++ b/commands/loadb.c @@ -681,9 +681,9 @@ static int do_load_serial_bin(int argc, char *argv[]) BAREBOX_CMD_HELP_START(loadb) BAREBOX_CMD_HELP_TEXT("") BAREBOX_CMD_HELP_TEXT("Options:") -BAREBOX_CMD_HELP_OPT("-f FILE", "download to FILE (default image.bin") +BAREBOX_CMD_HELP_OPT("-f FILE", "download to FILE (default image.bin)") BAREBOX_CMD_HELP_OPT("-o OFFS", "destination file OFFSet (default 0)") -BAREBOX_CMD_HELP_OPT("-b BAUD", "baudrate for download (default: console baudrate") +BAREBOX_CMD_HELP_OPT("-b BAUD", "baudrate for download (default: console baudrate)") BAREBOX_CMD_HELP_END BAREBOX_CMD_START(loadb) diff --git a/commands/memtest.c b/commands/memtest.c index 691b388907..d784a5c0e2 100644 --- a/commands/memtest.c +++ b/commands/memtest.c @@ -129,8 +129,11 @@ static int do_memtest(int argc, char *argv[]) goto out; for (i = 1; (i <= max_i) || !max_i; i++) { + printf("Start iteration %u", i); if (max_i) - printf("Start iteration %u of %u.\n", i, max_i); + printf(" of %u.\n", max_i); + else + putchar('\n'); if (cached) { printf("Do memtest with caching enabled.\n"); diff --git a/commands/of_dump.c b/commands/of_dump.c index 513a4b88a0..b15f54ae04 100644 --- a/commands/of_dump.c +++ b/commands/of_dump.c @@ -31,6 +31,16 @@ #include <getopt.h> #include <linux/err.h> +static void of_print_nodenames(struct device_node *node) +{ + struct device_node *n; + + printf("%s\n", node->full_name); + + list_for_each_entry(n, &node->children, parent_list) + of_print_nodenames(n); +} + static int do_of_dump(int argc, char *argv[]) { int opt; @@ -40,8 +50,9 @@ static int do_of_dump(int argc, char *argv[]) char *dtbfile = NULL; size_t size; const char *nodename; + int names_only = 0; - while ((opt = getopt(argc, argv, "Ff:")) > 0) { + while ((opt = getopt(argc, argv, "Ff:n")) > 0) { switch (opt) { case 'f': dtbfile = optarg; @@ -49,6 +60,9 @@ static int do_of_dump(int argc, char *argv[]) case 'F': fix = 1; break; + case 'n': + names_only = 1; + break; default: return COMMAND_ERROR_USAGE; } @@ -111,7 +125,10 @@ static int do_of_dump(int argc, char *argv[]) goto out; } - of_print_nodes(node, 0); + if (names_only) + of_print_nodenames(node); + else + of_print_nodes(node, 0); out: if (of_free) |