summaryrefslogtreecommitdiff
path: root/src/flash/lpc2900.c
diff options
context:
space:
mode:
authorZachary T Welch <zw@superlucidity.net>2009-10-23 02:17:17 -0700
committerZachary T Welch <zw@superlucidity.net>2009-11-05 18:19:18 -0800
commit7b2d8d93e6b132048f951106480b4e6a6f0b885a (patch)
treee121954b78bf7ba76bec131a4925383eaf32e60a /src/flash/lpc2900.c
parent0004691e9104c9a59336fbe6e230597d48e8cb57 (diff)
downloadopenocd+libswd-7b2d8d93e6b132048f951106480b4e6a6f0b885a.tar.gz
openocd+libswd-7b2d8d93e6b132048f951106480b4e6a6f0b885a.tar.bz2
openocd+libswd-7b2d8d93e6b132048f951106480b4e6a6f0b885a.tar.xz
openocd+libswd-7b2d8d93e6b132048f951106480b4e6a6f0b885a.zip
Improve lpc2900.c command argument parsing.
Diffstat (limited to 'src/flash/lpc2900.c')
-rw-r--r--src/flash/lpc2900.c89
1 files changed, 36 insertions, 53 deletions
diff --git a/src/flash/lpc2900.c b/src/flash/lpc2900.c
index 902180cb..e15d93b2 100644
--- a/src/flash/lpc2900.c
+++ b/src/flash/lpc2900.c
@@ -554,7 +554,6 @@ static uint32_t lpc2900_calc_tr( uint32_t clock, uint32_t time )
static int lpc2900_handle_signature_command( struct command_context_s *cmd_ctx,
char *cmd, char **args, int argc )
{
- flash_bank_t *bank;
uint32_t status;
uint32_t signature[4];
@@ -565,13 +564,10 @@ static int lpc2900_handle_signature_command( struct command_context_s *cmd_ctx,
return ERROR_FLASH_BANK_INVALID;
}
- /* Get the bank descriptor */
- bank = get_flash_bank_by_num( strtoul(args[0], NULL, 0) );
- if( !bank )
- {
- command_print( cmd_ctx, "flash bank '#%s' is out of bounds", args[0] );
- return ERROR_OK;
- }
+ flash_bank_t *bank;
+ int retval = flash_command_get_bank_by_num(cmd_ctx, args[0], &bank);
+ if (ERROR_OK != retval)
+ return retval;
if( bank->target->state != TARGET_HALTED )
{
@@ -614,21 +610,16 @@ static int lpc2900_handle_signature_command( struct command_context_s *cmd_ctx,
static int lpc2900_handle_read_custom_command( struct command_context_s *cmd_ctx,
char *cmd, char **args, int argc )
{
- flash_bank_t *bank;
-
-
if( argc < 2 )
{
return ERROR_COMMAND_SYNTAX_ERROR;
}
- /* Get the bank descriptor */
- bank = get_flash_bank_by_num( strtoul(args[0], NULL, 0) );
- if( !bank )
- {
- command_print( cmd_ctx, "flash bank '#%s' is out of bounds", args[0] );
- return ERROR_OK;
- }
+ flash_bank_t *bank;
+ int retval = flash_command_get_bank_by_num(cmd_ctx, args[0], &bank);
+ if (ERROR_OK != retval)
+ return retval;
+
lpc2900_flash_bank_t *lpc2900_info = bank->driver_priv;
lpc2900_info->risky = 0;
@@ -696,21 +687,16 @@ static int lpc2900_handle_read_custom_command( struct command_context_s *cmd_ctx
static int lpc2900_handle_password_command(struct command_context_s *cmd_ctx,
char *cmd, char **args, int argc)
{
- flash_bank_t *bank;
-
-
if (argc < 2)
{
return ERROR_COMMAND_SYNTAX_ERROR;
}
- /* Get the bank descriptor */
- bank = get_flash_bank_by_num(strtoul(args[0], NULL, 0));
- if (!bank)
- {
- command_print(cmd_ctx, "flash bank '#%s' is out of bounds", args[0]);
- return ERROR_OK;
- }
+ flash_bank_t *bank;
+ int retval = flash_command_get_bank_by_num(cmd_ctx, args[0], &bank);
+ if (ERROR_OK != retval)
+ return retval;
+
lpc2900_flash_bank_t *lpc2900_info = bank->driver_priv;
#define ISS_PASSWORD "I_know_what_I_am_doing"
@@ -747,13 +733,11 @@ static int lpc2900_handle_write_custom_command( struct command_context_s *cmd_ct
return ERROR_COMMAND_SYNTAX_ERROR;
}
- /* Get the bank descriptor */
- flash_bank_t *bank = get_flash_bank_by_num(strtoul(args[0], NULL, 0));
- if (!bank)
- {
- command_print(cmd_ctx, "flash bank '#%s' is out of bounds", args[0]);
- return ERROR_OK;
- }
+ flash_bank_t *bank;
+ int retval = flash_command_get_bank_by_num(cmd_ctx, args[0], &bank);
+ if (ERROR_OK != retval)
+ return retval;
+
lpc2900_flash_bank_t *lpc2900_info = bank->driver_priv;
/* Check if command execution is allowed. */
@@ -780,7 +764,7 @@ static int lpc2900_handle_write_custom_command( struct command_context_s *cmd_ct
char *filename = args[1];
char *type = (argc >= 3) ? args[2] : NULL;
- int retval = image_open(&image, filename, type);
+ retval = image_open(&image, filename, type);
if (retval != ERROR_OK)
{
return retval;
@@ -866,12 +850,11 @@ static int lpc2900_handle_secure_sector_command(struct command_context_s *cmd_ct
}
/* Get the bank descriptor */
- flash_bank_t *bank = get_flash_bank_by_num(strtoul(args[0], NULL, 0));
- if (!bank)
- {
- command_print(cmd_ctx, "flash bank '#%s' is out of bounds", args[0]);
- return ERROR_OK;
- }
+ flash_bank_t *bank;
+ int retval = flash_command_get_bank_by_num(cmd_ctx, args[0], &bank);
+ if (ERROR_OK != retval)
+ return retval;
+
lpc2900_flash_bank_t *lpc2900_info = bank->driver_priv;
/* Check if command execution is allowed. */
@@ -884,8 +867,9 @@ static int lpc2900_handle_secure_sector_command(struct command_context_s *cmd_ct
lpc2900_info->risky = 0;
/* Read sector range, and do a sanity check. */
- int first = strtoul(args[1], NULL, 0);
- int last = strtoul(args[2], NULL, 0);
+ int first, last;
+ COMMAND_PARSE_NUMBER(int, args[1], first);
+ COMMAND_PARSE_NUMBER(int, args[2], last);
if( (first >= bank->num_sectors) ||
(last >= bank->num_sectors) ||
(first > last) )
@@ -896,7 +880,6 @@ static int lpc2900_handle_secure_sector_command(struct command_context_s *cmd_ct
uint8_t page[FLASH_PAGE_SIZE];
int sector;
- int retval;
/* Sectors in page 6 */
if( (first <= 4) || (last >= 8) )
@@ -972,12 +955,11 @@ static int lpc2900_handle_secure_jtag_command(struct command_context_s *cmd_ctx,
}
/* Get the bank descriptor */
- flash_bank_t *bank = get_flash_bank_by_num(strtoul(args[0], NULL, 0));
- if (!bank)
- {
- command_print(cmd_ctx, "flash bank '#%s' is out of bounds", args[0]);
- return ERROR_OK;
- }
+ flash_bank_t *bank;
+ int retval = flash_command_get_bank_by_num(cmd_ctx, args[0], &bank);
+ if (ERROR_OK != retval)
+ return retval;
+
lpc2900_flash_bank_t *lpc2900_info = bank->driver_priv;
/* Check if command execution is allowed. */
@@ -1001,7 +983,6 @@ static int lpc2900_handle_secure_jtag_command(struct command_context_s *cmd_ctx,
page[0x30 + 3] = 0x7F;
/* Write to page 5 */
- int retval;
if( (retval = lpc2900_write_index_page( bank, 5, &page ))
!= ERROR_OK )
{
@@ -1117,7 +1098,9 @@ static int lpc2900_flash_bank_command(struct command_context_s *cmd_ctx,
* Reject it if we can't meet the requirements for program time
* (if clock too slow), or for erase time (clock too fast).
*/
- lpc2900_info->clk_sys_fmc = strtoul(args[6], NULL, 0) * 1000;
+ uint32_t clk_sys_fmc;
+ COMMAND_PARSE_NUMBER(u32, args[6], clk_sys_fmc);
+ lpc2900_info->clk_sys_fmc = clk_sys_fmc * 1000;
uint32_t clock_limit;
/* Check program time limit */