diff mbox

[U-Boot] tools: imximage: add set bit command

Message ID 1489646106-15918-1-git-send-email-peng.fan@nxp.com
State Accepted
Commit 3e0a71c157951c0f88a31182a6f3159cd3e12e23
Delegated to: Stefano Babic
Headers show

Commit Message

Peng Fan March 16, 2017, 6:35 a.m. UTC
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>
---
 tools/imximage.c | 12 ++++++++++++
 tools/imximage.h |  4 +++-
 2 files changed, 15 insertions(+), 1 deletion(-)

Comments

Stefano Babic March 17, 2017, 10:18 a.m. UTC | #1
On 16/03/2017 07:35, Peng Fan wrote:
> 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>
> ---
>  tools/imximage.c | 12 ++++++++++++
>  tools/imximage.h |  4 +++-
>  2 files changed, 15 insertions(+), 1 deletion(-)
> 
> diff --git a/tools/imximage.c b/tools/imximage.c
> index 0c43196..eb7e682 100644
> --- a/tools/imximage.c
> +++ b/tools/imximage.c
> @@ -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:
>  
> diff --git a/tools/imximage.h b/tools/imximage.h
> index db8b9a3..78d48bb 100644
> --- a/tools/imximage.h
> +++ b/tools/imximage.h
> @@ -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,
> 

Reviewed-by: Stefano Babic <sbabic@denx.de>

Best regards,
Stefano Babic
diff mbox

Patch

diff --git a/tools/imximage.c b/tools/imximage.c
index 0c43196..eb7e682 100644
--- a/tools/imximage.c
+++ b/tools/imximage.c
@@ -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:
 
diff --git a/tools/imximage.h b/tools/imximage.h
index db8b9a3..78d48bb 100644
--- a/tools/imximage.h
+++ b/tools/imximage.h
@@ -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,