Add Flash/NAND bank command argument helpers.
authorZachary T Welch <zw@superlucidity.net>
Fri, 23 Oct 2009 08:13:19 +0000 (01:13 -0700)
committerZachary T Welch <zw@superlucidity.net>
Fri, 6 Nov 2009 02:03:20 +0000 (18:03 -0800)
This eliminates redundant code for parsing and retreiving the bank
specified from a script command argument.  This patch was written to
replace existing functionality; however, the parsing logic can be
updated later to allow flash commands to accept bank names as well as
their numbers.

src/flash/flash.c
src/flash/flash.h
src/flash/nand.c
src/flash/nand.h

index db04e6e52f9d982176f60d9fd309ce5787173339..aa246598e263b6a05b23ea20e12476242cc69453 100644 (file)
@@ -255,6 +255,23 @@ flash_bank_t *get_flash_bank_by_num(int num)
        return p;
 }
 
+int flash_command_get_bank_by_num(
+       struct command_context_s *cmd_ctx, char *str, flash_bank_t **bank)
+{
+       unsigned bank_num;
+       COMMAND_PARSE_NUMBER(uint, str, bank_num);
+
+       *bank = get_flash_bank_by_num(bank_num);
+       if (!*bank)
+       {
+               command_print(cmd_ctx,
+                       "flash bank '#%u' not found", bank_num);
+               return ERROR_INVALID_ARGUMENTS;
+       }
+       return ERROR_OK;
+}
+
+
 static int handle_flash_bank_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc)
 {
        int retval;
index a7f08f63d7d98499d15cfe274f4e98ab0e7b87ae..05c4b2c48f70b81c2b4d862e0b3982c348131dd8 100644 (file)
@@ -313,6 +313,16 @@ extern int default_flash_mem_blank_check(struct flash_bank_s *bank);
  * @returns A flash_bank_t for flash bank @a num, or NULL
  */
 extern flash_bank_t *get_flash_bank_by_num(int num);
+/**
+ * Retreives @a bank from a command argument, reporting errors parsing
+ * the bank identifier or retreiving the specified bank.
+ * @param cmd_ctx The command context for reporting errors.
+ * @param str The string containing the bank identifier.
+ * @param bank On output, contians a pointer to the bank or NULL.
+ * @returns ERROR_OK on success, or an error indicating the problem.
+ */
+int flash_command_get_bank_by_num(
+       struct command_context_s *cmd_ctx, char *str, flash_bank_t **bank);
 /**
  * Returns the flash bank like get_flash_bank_by_num(), without probing.
  * @param num The flash bank number.
index 6e450758053743d8658c665c0515b0db4f70d99b..d97c817d05b4c1b7108017989840ff99b815fccf 100644 (file)
@@ -340,6 +340,19 @@ nand_device_t *get_nand_device_by_num(int num)
        return NULL;
 }
 
+int nand_command_get_device_by_num(struct command_context_s *cmd_ctx,
+               char *str, nand_device_t **device)
+{
+       unsigned num;
+       COMMAND_PARSE_NUMBER(uint, str, num);
+       *device = get_nand_device_by_num(num);
+       if (!*device) {
+               command_print(cmd_ctx, "NAND flash device '#%s' is out of bounds", str);
+               return ERROR_INVALID_ARGUMENTS;
+       }
+       return ERROR_OK;
+}
+
 static int nand_build_bbt(struct nand_device_s *device, int first, int last)
 {
        uint32_t page = 0x0;
index b73e3304f6da2df0208ce0627b5f5d4e246348fe..d867494388c44ad0d130d7ce8080d66d91eb1afe 100644 (file)
@@ -217,6 +217,11 @@ extern int nand_calculate_ecc_kw(struct nand_device_s *device, const uint8_t *da
 extern int nand_register_commands(struct command_context_s *cmd_ctx);
 extern int nand_init(struct command_context_s *cmd_ctx);
 
+/// helper for parsing a nand device command argument string
+int nand_command_get_device_by_num(struct command_context_s *cmd_ctx,
+               char *str, nand_device_t **device);
+
+
 #define                ERROR_NAND_DEVICE_INVALID               (-1100)
 #define                ERROR_NAND_OPERATION_FAILED             (-1101)
 #define                ERROR_NAND_OPERATION_TIMEOUT    (-1102)

Linking to existing account procedure

If you already have an account and want to add another login method you MUST first sign in with your existing account and then change URL to read https://review.openocd.org/login/?link to get to this page again but this time it'll work for linking. Thank you.

SSH host keys fingerprints

1024 SHA256:YKx8b7u5ZWdcbp7/4AeXNaqElP49m6QrwfXaqQGJAOk gerrit-code-review@openocd.zylin.com (DSA)
384 SHA256:jHIbSQa4REvwCFG4cq5LBlBLxmxSqelQPem/EXIrxjk gerrit-code-review@openocd.org (ECDSA)
521 SHA256:UAOPYkU9Fjtcao0Ul/Rrlnj/OsQvt+pgdYSZ4jOYdgs gerrit-code-review@openocd.org (ECDSA)
256 SHA256:A13M5QlnozFOvTllybRZH6vm7iSt0XLxbA48yfc2yfY gerrit-code-review@openocd.org (ECDSA)
256 SHA256:spYMBqEYoAOtK7yZBrcwE8ZpYt6b68Cfh9yEVetvbXg gerrit-code-review@openocd.org (ED25519)
+--[ED25519 256]--+
|=..              |
|+o..   .         |
|*.o   . .        |
|+B . . .         |
|Bo. = o S        |
|Oo.+ + =         |
|oB=.* = . o      |
| =+=.+   + E     |
|. .=o   . o      |
+----[SHA256]-----+
2048 SHA256:0Onrb7/PHjpo6iVZ7xQX2riKN83FJ3KGU0TvI0TaFG4 gerrit-code-review@openocd.zylin.com (RSA)