diff options
Diffstat (limited to 'scripts/imx/imx.c')
-rw-r--r-- | scripts/imx/imx.c | 33 |
1 files changed, 28 insertions, 5 deletions
diff --git a/scripts/imx/imx.c b/scripts/imx/imx.c index 82ef97f80c..70936babfd 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[]) @@ -221,6 +237,10 @@ static int do_soc(struct config_data *data, int argc, char *argv[]) if (!strcmp(socs[i].name, soc)) { data->header_version = socs[i].header_version; data->cpu_type = socs[i].cpu_type; + + if (data->cpu_type == 35) + data->load_size += HEADER_LEN; + return 0; } } @@ -230,9 +250,6 @@ static int do_soc(struct config_data *data, int argc, char *argv[]) fprintf(stderr, "%s ", socs[i].name); fprintf(stderr, "\n"); - if (data->cpu_type == 35) - data->load_size += HEADER_LEN; - return -EINVAL; } @@ -337,6 +354,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, }, { |