#include "str9x.h"
#include "arm966e.h"
+#include "algorithm.h"
static uint32_t bank1start = 0x00080000;
-static int str9x_build_block_list(struct flash_bank_s *bank)
+static int str9x_build_block_list(struct flash_bank *bank)
{
struct str9x_flash_bank *str9x_info = bank->driver_priv;
{
struct str9x_flash_bank *str9x_info;
- if (argc < 6)
+ if (CMD_ARGC < 6)
{
LOG_WARNING("incomplete flash_bank str9x configuration");
return ERROR_FLASH_BANK_INVALID;
return ERROR_OK;
}
-static int str9x_protect_check(struct flash_bank_s *bank)
+static int str9x_protect_check(struct flash_bank *bank)
{
int retval;
struct str9x_flash_bank *str9x_info = bank->driver_priv;
- target_t *target = bank->target;
+ struct target *target = bank->target;
int i;
uint32_t adr;
return ERROR_OK;
}
-static int str9x_erase(struct flash_bank_s *bank, int first, int last)
+static int str9x_erase(struct flash_bank *bank, int first, int last)
{
- target_t *target = bank->target;
+ struct target *target = bank->target;
int i;
uint32_t adr;
uint8_t status;
return ERROR_OK;
}
-static int str9x_protect(struct flash_bank_s *bank,
+static int str9x_protect(struct flash_bank *bank,
int set, int first, int last)
{
- target_t *target = bank->target;
+ struct target *target = bank->target;
int i;
uint32_t adr;
uint8_t status;
return ERROR_OK;
}
-static int str9x_write_block(struct flash_bank_s *bank,
+static int str9x_write_block(struct flash_bank *bank,
uint8_t *buffer, uint32_t offset, uint32_t count)
{
struct str9x_flash_bank *str9x_info = bank->driver_priv;
- target_t *target = bank->target;
+ struct target *target = bank->target;
uint32_t buffer_size = 8192;
struct working_area *source;
uint32_t address = bank->base + offset;
return retval;
}
-static int str9x_write(struct flash_bank_s *bank,
+static int str9x_write(struct flash_bank *bank,
uint8_t *buffer, uint32_t offset, uint32_t count)
{
- target_t *target = bank->target;
+ struct target *target = bank->target;
uint32_t words_remaining = (count / 2);
uint32_t bytes_remaining = (count & 0x00000001);
uint32_t address = bank->base + offset;
return ERROR_OK;
}
-static int str9x_probe(struct flash_bank_s *bank)
+static int str9x_probe(struct flash_bank *bank)
{
return ERROR_OK;
}
}
#endif
-static int str9x_info(struct flash_bank_s *bank, char *buf, int buf_size)
+static int str9x_info(struct flash_bank *bank, char *buf, int buf_size)
{
snprintf(buf, buf_size, "str9x flash driver info");
return ERROR_OK;
COMMAND_HANDLER(str9x_handle_flash_config_command)
{
struct str9x_flash_bank *str9x_info;
- target_t *target = NULL;
+ struct target *target = NULL;
- if (argc < 5)
+ if (CMD_ARGC < 5)
{
return ERROR_COMMAND_SYNTAX_ERROR;
}
- flash_bank_t *bank;
- int retval = flash_command_get_bank_by_num(cmd_ctx, args[0], &bank);
+ struct flash_bank *bank;
+ int retval = CALL_COMMAND_HANDLER(flash_command_get_bank, 0, &bank);
if (ERROR_OK != retval)
return retval;
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);
+ COMMAND_PARSE_NUMBER(u32, CMD_ARGV[1], bbsr);
+ COMMAND_PARSE_NUMBER(u32, CMD_ARGV[2], nbbsr);
+ COMMAND_PARSE_NUMBER(u32, CMD_ARGV[3], bbadr);
+ COMMAND_PARSE_NUMBER(u32, CMD_ARGV[4], nbbadr);
str9x_info = bank->driver_priv;
return ERROR_OK;
}
-static int str9x_register_commands(struct command_context_s *cmd_ctx)
-{
- command_t *str9x_cmd = register_command(cmd_ctx, NULL, "str9x",
- NULL, COMMAND_ANY, "str9x flash commands");
-
- register_command(cmd_ctx, str9x_cmd, "flash_config",
- str9x_handle_flash_config_command, COMMAND_EXEC,
- "configure str9 flash controller");
-
- return ERROR_OK;
-}
+static const struct command_registration str9x_config_command_handlers[] = {
+ {
+ .name = "disable_jtag",
+ .handler = &str9x_handle_flash_config_command,
+ .mode = COMMAND_EXEC,
+ .help = "configure str9x flash controller",
+ .usage = "<bank_id> <BBSR> <NBBSR> <BBADR> <NBBADR>",
+ },
+ COMMAND_REGISTRATION_DONE
+};
+static const struct command_registration str9x_command_handlers[] = {
+ {
+ .name = "str9x",
+ .mode = COMMAND_ANY,
+ .help = "str9x flash command group",
+ .chain = str9x_config_command_handlers,
+ },
+ COMMAND_REGISTRATION_DONE
+};
struct flash_driver str9x_flash = {
.name = "str9x",
- .register_commands = &str9x_register_commands,
+ .commands = str9x_command_handlers,
.flash_bank_command = &str9x_flash_bank_command,
.erase = &str9x_erase,
.protect = &str9x_protect,