diff options
author | Nitin Garg <nitin.garg@freescale.com> | 2015-04-02 21:40:39 -0500 |
---|---|---|
committer | Peng Fan <Peng.Fan@freescale.com> | 2015-04-29 15:05:30 +0800 |
commit | 0aa551f44d53d3f2aa9efcf4374ccbedb00d10da (patch) | |
tree | 6921bcc25a43d71daa8354da5aaae7766199b48c /tools | |
parent | 789fcfd7ae1f605826ec9b75b96381aad3ded568 (diff) | |
download | u-boot-imx-0aa551f44d53d3f2aa9efcf4374ccbedb00d10da.zip u-boot-imx-0aa551f44d53d3f2aa9efcf4374ccbedb00d10da.tar.gz u-boot-imx-0aa551f44d53d3f2aa9efcf4374ccbedb00d10da.tar.bz2 |
MLK-10567: Extend u-boot imximage to support check bits set/clr
Add support for HAB "Check data" all bits set and clear
check functionality. Rename CHECK_DATA to CHECK_BITS_SET.
Flag=0 -> (*address & mask) == 0 | All bits clear
Flag=2 -> (*address & mask) == mask | All bits set
Signed-off-by: Nitin Garg <nitin.garg@freescale.com>
(cherry picked from commit 0836912ef7a53d1f3d65f95556a34d03b8d65399)
Diffstat (limited to 'tools')
-rw-r--r-- | tools/imximage.c | 24 | ||||
-rw-r--r-- | tools/imximage.h | 6 |
2 files changed, 22 insertions, 8 deletions
diff --git a/tools/imximage.c b/tools/imximage.c index a3af2c8..32f5bc4 100644 --- a/tools/imximage.c +++ b/tools/imximage.c @@ -25,7 +25,8 @@ static table_entry_t imximage_cmds[] = { {CMD_BOOT_OFFSET, "BOOT_OFFSET", "Boot offset", }, {CMD_DATA, "DATA", "Reg Write Data", }, {CMD_CLR_BIT, "CLR_BIT", "Reg clear bit", }, - {CMD_CHECK_DATA, "CHECK_DATA", "Reg Check Data", }, + {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", }, {CMD_IMAGE_VERSION, "IMAGE_VERSION", "image version", }, #ifdef CONFIG_USE_PLUGIN @@ -190,14 +191,22 @@ static void set_dcd_val_v2(struct imx_header *imxhdr, char *name, int lineno, dcd_command_block->length = cpu_to_be16(off * sizeof(dcd_addr_data_t) + 4); dcd_command_block->param = DCD_CLR_BIT_PARAM; - } else if (CMD_CHECK_DATA) { + } else if (cmd == CMD_CHECK_BITS_SET) { dcd_command_block->tag = DCD_CHECK_DATA_COMMAND_TAG; /* * check data command only supports one entry, * so use 0xC = size(address + value + command). */ dcd_command_block->length = cpu_to_be16(0xC); - dcd_command_block->param = DCD_CHECK_DATA_PARAM; + dcd_command_block->param = DCD_CHECK_BITS_SET_PARAM; + } else if (cmd == CMD_CHECK_BITS_CLR) { + dcd_command_block->tag = DCD_CHECK_DATA_COMMAND_TAG; + /* + * check data command only supports one entry, + * so use 0xC = size(address + value + command). + */ + dcd_command_block->length = cpu_to_be16(0xC); + dcd_command_block->param = DCD_CHECK_BITS_CLR_PARAM; } case CFG_REG_ADDRESS: dcd_command_block->addr_data[off].addr = cpu_to_be32(value); @@ -612,7 +621,8 @@ static void parse_cfg_fld(struct imx_header *imxhdr, int32_t *cmd, } if ((*precmd == CMD_DATA) || (*precmd == CMD_CLR_BIT) || - (*precmd == CMD_CHECK_DATA)) { + (*precmd == CMD_CHECK_BITS_SET) || + (*precmd == CMD_CHECK_BITS_CLR)) { if (*cmd != *precmd) { dataindex += ((*dcd_len) * sizeof(dcd_addr_data_t) + 4) >> 2; @@ -621,7 +631,8 @@ static void parse_cfg_fld(struct imx_header *imxhdr, int32_t *cmd, } if ((*cmd == CMD_DATA) || (*cmd == CMD_CLR_BIT) || - (*cmd == CMD_CHECK_DATA)) { + (*cmd == CMD_CHECK_BITS_SET) || + (*cmd == CMD_CHECK_BITS_CLR)) { /* * Reserve the first entry for command header, * So use *dcd_len + 1 as the off. @@ -639,7 +650,8 @@ static void parse_cfg_fld(struct imx_header *imxhdr, int32_t *cmd, case CFG_REG_ADDRESS: case CFG_REG_VALUE: switch (*cmd) { - case CMD_CHECK_DATA: + case CMD_CHECK_BITS_SET: + case CMD_CHECK_BITS_CLR: case CMD_DATA: case CMD_CLR_BIT: value = get_cfg_value(token, name, lineno); diff --git a/tools/imximage.h b/tools/imximage.h index d29004c..f2ddbc8 100644 --- a/tools/imximage.h +++ b/tools/imximage.h @@ -66,7 +66,8 @@ #define DCD_WRITE_DATA_PARAM 0x4 #define DCD_CLR_BIT_PARAM 0xC #define DCD_CHECK_DATA_COMMAND_TAG 0xCF -#define DCD_CHECK_DATA_PARAM 0x14 +#define DCD_CHECK_BITS_SET_PARAM 0x14 +#define DCD_CHECK_BITS_CLR_PARAM 0x04 enum imximage_cmd { CMD_INVALID, @@ -75,7 +76,8 @@ enum imximage_cmd { CMD_BOOT_OFFSET, CMD_DATA, CMD_CLR_BIT, - CMD_CHECK_DATA, + CMD_CHECK_BITS_SET, + CMD_CHECK_BITS_CLR, CMD_CSF, CMD_PLUGIN, }; |