Add Flash/NAND bank command argument helpers.
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.
This commit is contained in:
parent
4189fdad28
commit
11e545f560
|
@ -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;
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue