summaryrefslogtreecommitdiffstats
path: root/commands
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2015-11-06 16:10:42 +0100
committerSascha Hauer <s.hauer@pengutronix.de>2015-11-06 16:10:42 +0100
commit1d9295b344a885e5a79de38df28740a1db6f6103 (patch)
treeca427bbf13a04f3480fb398630473bede4ef6463 /commands
parent736a74ba7a1c3983105b92a709c263e206fe3913 (diff)
parent6face0e8ab8d97dcc7284a8a5d7ae1f4d134798f (diff)
downloadbarebox-1d9295b344a885e5a79de38df28740a1db6f6103.tar.gz
barebox-1d9295b344a885e5a79de38df28740a1db6f6103.tar.xz
Merge branch 'for-next/misc'
Diffstat (limited to 'commands')
-rw-r--r--commands/clk.c59
-rw-r--r--commands/edit.c20
-rw-r--r--commands/loadb.c4
-rw-r--r--commands/memtest.c5
-rw-r--r--commands/of_dump.c21
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)