Skip to content
Snippets Groups Projects
Commit fa9e5d10 authored by Zachary T Welch's avatar Zachary T Welch
Browse files

Improve str9x config command argument parsing.

parent 111b7a6a
No related branches found
No related tags found
No related merge requests found
...@@ -673,7 +673,6 @@ static int str9x_handle_flash_config_command(struct command_context_s *cmd_ctx, ...@@ -673,7 +673,6 @@ static int str9x_handle_flash_config_command(struct command_context_s *cmd_ctx,
char *cmd, char **args, int argc) char *cmd, char **args, int argc)
{ {
str9x_flash_bank_t *str9x_info; str9x_flash_bank_t *str9x_info;
flash_bank_t *bank;
target_t *target = NULL; target_t *target = NULL;
if (argc < 5) if (argc < 5)
...@@ -681,12 +680,16 @@ static int str9x_handle_flash_config_command(struct command_context_s *cmd_ctx, ...@@ -681,12 +680,16 @@ static int str9x_handle_flash_config_command(struct command_context_s *cmd_ctx,
return ERROR_COMMAND_SYNTAX_ERROR; return ERROR_COMMAND_SYNTAX_ERROR;
} }
bank = get_flash_bank_by_num(strtoul(args[0], NULL, 0)); flash_bank_t *bank;
if (!bank) int retval = flash_command_get_bank_by_num(cmd_ctx, args[0], &bank);
{ if (ERROR_OK != retval)
command_print(cmd_ctx, "flash bank '#%s' is out of bounds", args[0]); return retval;
return ERROR_OK;
} uint32_t bbsr, nbbsr, bbadr, nbbadr;
COMMAND_PARSE_NUMBER(u32, args[1], bbsr);
COMMAND_PARSE_NUMBER(u32, args[2], nbbsr);
COMMAND_PARSE_NUMBER(u32, args[3], bbadr);
COMMAND_PARSE_NUMBER(u32, args[4], nbbadr);
str9x_info = bank->driver_priv; str9x_info = bank->driver_priv;
...@@ -699,10 +702,10 @@ static int str9x_handle_flash_config_command(struct command_context_s *cmd_ctx, ...@@ -699,10 +702,10 @@ static int str9x_handle_flash_config_command(struct command_context_s *cmd_ctx,
} }
/* config flash controller */ /* config flash controller */
target_write_u32(target, FLASH_BBSR, strtoul(args[1], NULL, 0)); target_write_u32(target, FLASH_BBSR, bbsr);
target_write_u32(target, FLASH_NBBSR, strtoul(args[2], NULL, 0)); target_write_u32(target, FLASH_NBBSR, nbbsr);
target_write_u32(target, FLASH_BBADR, (strtoul(args[3], NULL, 0) >> 2)); target_write_u32(target, FLASH_BBADR, bbadr >> 2);
target_write_u32(target, FLASH_NBBADR, (strtoul(args[4], NULL, 0) >> 2)); target_write_u32(target, FLASH_NBBADR, nbbadr >> 2);
/* set bit 18 instruction TCM order as per flash programming manual */ /* set bit 18 instruction TCM order as per flash programming manual */
arm966e_write_cp15(target, 62, 0x40000); arm966e_write_cp15(target, 62, 0x40000);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment