tools: imximage: add set bit command
authorPeng Fan <peng.fan@nxp.com>
Thu, 16 Mar 2017 06:35:06 +0000 (14:35 +0800)
committerStefano Babic <sbabic@denx.de>
Sun, 19 Mar 2017 16:30:15 +0000 (17:30 +0100)
Add set bit command support.
Usage: SET_BIT 4 [address] [bitmask]

Signed-off-by: Peng Fan <peng.fan@nxp.com>
Cc: Stefano Babic <sbabic@denx.de>
Reviewed-by: Stefano Babic <sbabic@denx.de>
tools/imximage.c
tools/imximage.h

index 0c43196ac1953ececd3a0161191d17f481f20703..eb7e682038d0c7f83e7c2e1f74cd31ccb6c6cc42 100644 (file)
@@ -23,6 +23,7 @@ static table_entry_t imximage_cmds[] = {
        {CMD_BOOT_OFFSET,       "BOOT_OFFSET",          "Boot offset",    },
        {CMD_WRITE_DATA,        "DATA",                 "Reg Write Data", },
        {CMD_WRITE_CLR_BIT,     "CLR_BIT",              "Reg clear bit",  },
+       {CMD_WRITE_SET_BIT,     "SET_BIT",              "Reg set bit",  },
        {CMD_CHECK_BITS_SET,    "CHECK_BITS_SET",   "Reg Check bits set", },
        {CMD_CHECK_BITS_CLR,    "CHECK_BITS_CLR",   "Reg Check bits clr", },
        {CMD_CSF,               "CSF",           "Command Sequence File", },
@@ -204,6 +205,15 @@ static void set_dcd_param_v2(struct imx_header *imxhdr, uint32_t dcd_len,
                d->write_dcd_command.length = cpu_to_be16(4);
                d->write_dcd_command.param = DCD_WRITE_CLR_BIT_PARAM;
                break;
+       case CMD_WRITE_SET_BIT:
+               if ((d->write_dcd_command.tag == DCD_WRITE_DATA_COMMAND_TAG) &&
+                   (d->write_dcd_command.param == DCD_WRITE_SET_BIT_PARAM))
+                       break;
+               d = d2;
+               d->write_dcd_command.tag = DCD_WRITE_DATA_COMMAND_TAG;
+               d->write_dcd_command.length = cpu_to_be16(4);
+               d->write_dcd_command.param = DCD_WRITE_SET_BIT_PARAM;
+               break;
        /*
         * Check data command only supports one entry,
         */
@@ -636,6 +646,7 @@ static void parse_cfg_cmd(struct imx_header *imxhdr, int32_t cmd, char *token,
                break;
        case CMD_WRITE_DATA:
        case CMD_WRITE_CLR_BIT:
+       case CMD_WRITE_SET_BIT:
        case CMD_CHECK_BITS_SET:
        case CMD_CHECK_BITS_CLR:
                value = get_cfg_value(token, name, lineno);
@@ -686,6 +697,7 @@ static void parse_cfg_fld(struct imx_header *imxhdr, int32_t *cmd,
                switch(*cmd) {
                case CMD_WRITE_DATA:
                case CMD_WRITE_CLR_BIT:
+               case CMD_WRITE_SET_BIT:
                case CMD_CHECK_BITS_SET:
                case CMD_CHECK_BITS_CLR:
 
index db8b9a3dd487455d01eb0d25b2efb49e83f8b27b..78d48bb2e10249ccd474991888c886b0d07e1765 100644 (file)
@@ -50,7 +50,8 @@
 #define DCD_VERSION                    0x40
 #define DCD_WRITE_DATA_COMMAND_TAG     0xCC
 #define DCD_WRITE_DATA_PARAM           0x4
-#define DCD_WRITE_CLR_BIT_PARAM        0xC
+#define DCD_WRITE_CLR_BIT_PARAM                0xC
+#define DCD_WRITE_SET_BIT_PARAM                0x1C
 #define DCD_CHECK_DATA_COMMAND_TAG     0xCF
 #define DCD_CHECK_BITS_SET_PARAM       0x14
 #define DCD_CHECK_BITS_CLR_PARAM       0x04
@@ -62,6 +63,7 @@ enum imximage_cmd {
        CMD_BOOT_OFFSET,
        CMD_WRITE_DATA,
        CMD_WRITE_CLR_BIT,
+       CMD_WRITE_SET_BIT,
        CMD_CHECK_BITS_SET,
        CMD_CHECK_BITS_CLR,
        CMD_CSF,