summaryrefslogtreecommitdiffstats
path: root/scripts/imx/imx.c
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2016-04-28 16:00:06 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2016-04-28 16:08:28 +0200
commitf1d34c27381b07a598f589afa1c0f093588c5b54 (patch)
tree0c6f765f22c3b3a8abebb0ec839bd38970956938 /scripts/imx/imx.c
parent76007a8ed4316c51ff0dda962adbb7f9ba113cdd (diff)
downloadbarebox-f1d34c27381b07a598f589afa1c0f093588c5b54.tar.gz
barebox-f1d34c27381b07a598f589afa1c0f093588c5b54.tar.xz
scripts: imx: support set_bits/clear_bits
The i.MX SoCs support setting bits and clearing bits in their DCD table. This adds commands for these in the imx-image tool. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'scripts/imx/imx.c')
-rw-r--r--scripts/imx/imx.c26
1 files changed, 24 insertions, 2 deletions
diff --git a/scripts/imx/imx.c b/scripts/imx/imx.c
index 82ef97f80c..523368aa54 100644
--- a/scripts/imx/imx.c
+++ b/scripts/imx/imx.c
@@ -130,7 +130,8 @@ static int do_cmd_check(struct config_data *data, int argc, char *argv[])
return data->check(data, cmd, addr, mask);
}
-static int do_cmd_write_mem(struct config_data *data, int argc, char *argv[])
+static int write_mem(struct config_data *data, int argc, char *argv[],
+ int set_bits, int clear_bits)
{
uint32_t addr, val, width;
char *end;
@@ -170,7 +171,22 @@ static int do_cmd_write_mem(struct config_data *data, int argc, char *argv[])
return -EINVAL;
};
- return data->write_mem(data, addr, val, width);
+ return data->write_mem(data, addr, val, width, set_bits, clear_bits);
+}
+
+static int do_cmd_write_mem(struct config_data *data, int argc, char *argv[])
+{
+ return write_mem(data, argc, argv, 0, 0);
+}
+
+static int do_cmd_set_bits(struct config_data *data, int argc, char *argv[])
+{
+ return write_mem(data, argc, argv, 1, 0);
+}
+
+static int do_cmd_clear_bits(struct config_data *data, int argc, char *argv[])
+{
+ return write_mem(data, argc, argv, 0, 1);
}
static int do_loadaddr(struct config_data *data, int argc, char *argv[])
@@ -337,6 +353,12 @@ struct command cmds[] = {
.name = "wm",
.parse = do_cmd_write_mem,
}, {
+ .name = "set_bits",
+ .parse = do_cmd_set_bits,
+ }, {
+ .name = "clear_bits",
+ .parse = do_cmd_clear_bits,
+ }, {
.name = "check",
.parse = do_cmd_check,
}, {