move nand drivers to src/flash/nand/
[fw/openocd] / src / flash / str7x.c
index d22886f96ad4443b347f50d23e3ae6f45a7234f1..7edffac9e222523944bb497e1c17bcbccfc3da5e 100644 (file)
@@ -27,6 +27,7 @@
 #include "str7x.h"
 #include "armv4_5.h"
 #include "binarybuffer.h"
+#include "algorithm.h"
 
 
 struct str7x_mem_layout mem_layout_str7bank0[] = {
@@ -45,13 +46,13 @@ struct str7x_mem_layout mem_layout_str7bank1[] = {
        {0x00002000, 0x02000, 0x20000}
 };
 
-static int str7x_get_flash_adr(struct flash_bank_s *bank, uint32_t reg)
+static int str7x_get_flash_adr(struct flash_bank *bank, uint32_t reg)
 {
        struct str7x_flash_bank *str7x_info = bank->driver_priv;
        return (str7x_info->register_base | reg);
 }
 
-static int str7x_build_block_list(struct flash_bank_s *bank)
+static int str7x_build_block_list(struct flash_bank *bank)
 {
        struct str7x_flash_bank *str7x_info = bank->driver_priv;
 
@@ -113,7 +114,7 @@ FLASH_BANK_COMMAND_HANDLER(str7x_flash_bank_command)
 {
        struct str7x_flash_bank *str7x_info;
 
-       if (argc < 7)
+       if (CMD_ARGC < 7)
        {
                LOG_WARNING("incomplete flash_bank str7x configuration");
                return ERROR_FLASH_BANK_INVALID;
@@ -126,23 +127,23 @@ FLASH_BANK_COMMAND_HANDLER(str7x_flash_bank_command)
        str7x_info->busy_bits = (FLASH_LOCK | FLASH_BSYA1 | FLASH_BSYA0);
        str7x_info->disable_bit = (1 << 1);
 
-       if (strcmp(args[6], "STR71x") == 0)
+       if (strcmp(CMD_ARGV[6], "STR71x") == 0)
        {
                str7x_info->register_base = 0x40100000;
        }
-       else if (strcmp(args[6], "STR73x") == 0)
+       else if (strcmp(CMD_ARGV[6], "STR73x") == 0)
        {
                str7x_info->register_base = 0x80100000;
                str7x_info->busy_bits = (FLASH_LOCK | FLASH_BSYA0);
        }
-       else if (strcmp(args[6], "STR75x") == 0)
+       else if (strcmp(CMD_ARGV[6], "STR75x") == 0)
        {
                str7x_info->register_base = 0x20100000;
                str7x_info->disable_bit = (1 << 0);
        }
        else
        {
-               LOG_ERROR("unknown STR7x variant: '%s'", args[6]);
+               LOG_ERROR("unknown STR7x variant: '%s'", CMD_ARGV[6]);
                free(str7x_info);
                return ERROR_FLASH_BANK_INVALID;
        }
@@ -154,7 +155,7 @@ FLASH_BANK_COMMAND_HANDLER(str7x_flash_bank_command)
        return ERROR_OK;
 }
 
-static uint32_t str7x_status(struct flash_bank_s *bank)
+static uint32_t str7x_status(struct flash_bank *bank)
 {
        struct target *target = bank->target;
        uint32_t retval;
@@ -164,7 +165,7 @@ static uint32_t str7x_status(struct flash_bank_s *bank)
        return retval;
 }
 
-static uint32_t str7x_result(struct flash_bank_s *bank)
+static uint32_t str7x_result(struct flash_bank *bank)
 {
        struct target *target = bank->target;
        uint32_t retval;
@@ -174,7 +175,7 @@ static uint32_t str7x_result(struct flash_bank_s *bank)
        return retval;
 }
 
-static int str7x_protect_check(struct flash_bank_s *bank)
+static int str7x_protect_check(struct flash_bank *bank)
 {
        struct str7x_flash_bank *str7x_info = bank->driver_priv;
        struct target *target = bank->target;
@@ -201,7 +202,7 @@ static int str7x_protect_check(struct flash_bank_s *bank)
        return ERROR_OK;
 }
 
-static int str7x_erase(struct flash_bank_s *bank, int first, int last)
+static int str7x_erase(struct flash_bank *bank, int first, int last)
 {
        struct str7x_flash_bank *str7x_info = bank->driver_priv;
        struct target *target = bank->target;
@@ -254,7 +255,7 @@ static int str7x_erase(struct flash_bank_s *bank, int first, int last)
        return ERROR_OK;
 }
 
-static int str7x_protect(struct flash_bank_s *bank, int set, int first, int last)
+static int str7x_protect(struct flash_bank *bank, int set, int first, int last)
 {
        struct str7x_flash_bank *str7x_info = bank->driver_priv;
        struct target *target = bank->target;
@@ -308,7 +309,7 @@ static int str7x_protect(struct flash_bank_s *bank, int set, int first, int last
        return ERROR_OK;
 }
 
-static int str7x_write_block(struct flash_bank_s *bank, uint8_t *buffer, uint32_t offset, uint32_t count)
+static int str7x_write_block(struct flash_bank *bank, uint8_t *buffer, uint32_t offset, uint32_t count)
 {
        struct str7x_flash_bank *str7x_info = bank->driver_priv;
        struct target *target = bank->target;
@@ -423,7 +424,7 @@ static int str7x_write_block(struct flash_bank_s *bank, uint8_t *buffer, uint32_
        return retval;
 }
 
-static int str7x_write(struct flash_bank_s *bank, uint8_t *buffer, uint32_t offset, uint32_t count)
+static int str7x_write(struct flash_bank *bank, uint8_t *buffer, uint32_t offset, uint32_t count)
 {
        struct target *target = bank->target;
        struct str7x_flash_bank *str7x_info = bank->driver_priv;
@@ -583,7 +584,7 @@ static int str7x_write(struct flash_bank_s *bank, uint8_t *buffer, uint32_t offs
        return ERROR_OK;
 }
 
-static int str7x_probe(struct flash_bank_s *bank)
+static int str7x_probe(struct flash_bank *bank)
 {
        return ERROR_OK;
 }
@@ -595,7 +596,7 @@ COMMAND_HANDLER(str7x_handle_part_id_command)
 }
 #endif
 
-static int str7x_info(struct flash_bank_s *bank, char *buf, int buf_size)
+static int str7x_info(struct flash_bank *bank, char *buf, int buf_size)
 {
        snprintf(buf, buf_size, "str7x flash driver info");
        return ERROR_OK;
@@ -610,14 +611,14 @@ COMMAND_HANDLER(str7x_handle_disable_jtag_command)
        uint16_t ProtectionLevel = 0;
        uint16_t ProtectionRegs;
 
-       if (argc < 1)
+       if (CMD_ARGC < 1)
        {
-               command_print(cmd_ctx, "str7x disable_jtag <bank>");
+               command_print(CMD_CTX, "str7x disable_jtag <bank>");
                return ERROR_OK;
        }
 
-       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;
 
@@ -671,21 +672,28 @@ COMMAND_HANDLER(str7x_handle_disable_jtag_command)
        return ERROR_OK;
 }
 
-static int str7x_register_commands(struct command_context_s *cmd_ctx)
-{
-       command_t *str7x_cmd = register_command(cmd_ctx, NULL, "str7x",
-                       NULL, COMMAND_ANY, "str7x flash specific commands");
-
-       register_command(cmd_ctx, str7x_cmd, "disable_jtag",
-                       str7x_handle_disable_jtag_command, COMMAND_EXEC,
-                       "disable jtag access");
-
-       return ERROR_OK;
-}
+static const struct command_registration str7x_exec_command_handlers[] = {
+       {
+               .name = "disable_jtag",
+               .handler = &str7x_handle_disable_jtag_command,
+               .mode = COMMAND_EXEC,
+               .help = "disable jtag access",
+       },
+       COMMAND_REGISTRATION_DONE
+};
+static const struct command_registration str7x_command_handlers[] = {
+       {
+               .name = "str7x",
+               .mode = COMMAND_ANY,
+               .help = "str7x flash command group",
+               .chain = str7x_exec_command_handlers,
+       },
+       COMMAND_REGISTRATION_DONE
+};
 
 struct flash_driver str7x_flash = {
                .name = "str7x",
-               .register_commands = &str7x_register_commands,
+               .commands = str7x_command_handlers,
                .flash_bank_command = &str7x_flash_bank_command,
                .erase = &str7x_erase,
                .protect = &str7x_protect,