nor/flash: Add keep_alive() during flash write handler
[fw/openocd] / src / flash / nor / at91sam3.c
index a220279cf4aaac8ec16bbc46439d45c6fcca67ef..c9ffa653b314faf10a2ff61df43fe4ee537b9019 100644 (file)
@@ -249,14 +249,14 @@ struct sam3_reg_list {
 
 static struct sam3_chip *all_sam3_chips;
 
-static struct sam3_chip *get_current_sam3(struct command_context *cmd_ctx)
+static struct sam3_chip *get_current_sam3(struct command_invocation *cmd)
 {
        struct target *t;
        static struct sam3_chip *p;
 
-       t = get_current_target(cmd_ctx);
+       t = get_current_target(cmd->ctx);
        if (!t) {
-               command_print(cmd_ctx, "No current target?");
+               command_print(cmd, "No current target?");
                return NULL;
        }
 
@@ -264,7 +264,7 @@ static struct sam3_chip *get_current_sam3(struct command_context *cmd_ctx)
        if (!p) {
                /* this should not happen */
                /* the command is not registered until the chip is created? */
-               command_print(cmd_ctx, "No SAM3 chips exist?");
+               command_print(cmd, "No SAM3 chips exist?");
                return NULL;
        }
 
@@ -273,7 +273,7 @@ static struct sam3_chip *get_current_sam3(struct command_context *cmd_ctx)
                        return p;
                p = p->next;
        }
-       command_print(cmd_ctx, "Cannot find SAM3 chip?");
+       command_print(cmd, "Cannot find SAM3 chip?");
        return NULL;
 }
 
@@ -3068,7 +3068,6 @@ FLASH_BANK_COMMAND_HANDLER(sam3_flash_bank_command)
                    ((unsigned int)(FLASH_BANK1_BASE_256K_AX)),
                    ((unsigned int)(FLASH_BANK1_BASE_512K_AX)));
                        return ERROR_FAIL;
-                       break;
 
                /* at91sam3s and at91sam3n series only has bank 0*/
                /* at91sam3u and at91sam3ax series has the same address for bank 0*/
@@ -3538,7 +3537,7 @@ done:
 COMMAND_HANDLER(sam3_handle_info_command)
 {
        struct sam3_chip *pChip;
-       pChip = get_current_sam3(CMD_CTX);
+       pChip = get_current_sam3(CMD);
        if (!pChip)
                return ERROR_OK;
 
@@ -3549,7 +3548,7 @@ COMMAND_HANDLER(sam3_handle_info_command)
        if (pChip->details.bank[0].pBank == NULL) {
                x = 0;
 need_define:
-               command_print(CMD_CTX,
+               command_print(CMD,
                        "Please define bank %d via command: flash bank %s ... ",
                        x,
                        at91sam3_flash.name);
@@ -3598,7 +3597,7 @@ COMMAND_HANDLER(sam3_handle_gpnvm_command)
        int r, who;
        struct sam3_chip *pChip;
 
-       pChip = get_current_sam3(CMD_CTX);
+       pChip = get_current_sam3(CMD);
        if (!pChip)
                return ERROR_OK;
 
@@ -3608,7 +3607,7 @@ COMMAND_HANDLER(sam3_handle_gpnvm_command)
        }
 
        if (pChip->details.bank[0].pBank == NULL) {
-               command_print(CMD_CTX, "Bank0 must be defined first via: flash bank %s ...",
+               command_print(CMD, "Bank0 must be defined first via: flash bank %s ...",
                        at91sam3_flash.name);
                return ERROR_FAIL;
        }
@@ -3621,10 +3620,8 @@ COMMAND_HANDLER(sam3_handle_gpnvm_command)
        switch (CMD_ARGC) {
                default:
                        return ERROR_COMMAND_SYNTAX_ERROR;
-                       break;
                case 0:
                        goto showall;
-                       break;
                case 1:
                        who = -1;
                        break;
@@ -3647,22 +3644,23 @@ showall:
                                r = FLASHD_GetGPNVM(&(pChip->details.bank[0]), x, &v);
                                if (r != ERROR_OK)
                                        break;
-                               command_print(CMD_CTX, "sam3-gpnvm%u: %u", x, v);
+                               command_print(CMD, "sam3-gpnvm%u: %u", x, v);
                        }
                        return r;
                }
                if ((who >= 0) && (((unsigned)(who)) < pChip->details.n_gpnvms)) {
                        r = FLASHD_GetGPNVM(&(pChip->details.bank[0]), who, &v);
-                       command_print(CMD_CTX, "sam3-gpnvm%u: %u", who, v);
+                       if (r == ERROR_OK)
+                               command_print(CMD, "sam3-gpnvm%u: %u", who, v);
                        return r;
                } else {
-                       command_print(CMD_CTX, "sam3-gpnvm invalid GPNVM: %u", who);
+                       command_print(CMD, "sam3-gpnvm invalid GPNVM: %u", who);
                        return ERROR_COMMAND_SYNTAX_ERROR;
                }
        }
 
        if (who == -1) {
-               command_print(CMD_CTX, "Missing GPNVM number");
+               command_print(CMD, "Missing GPNVM number");
                return ERROR_COMMAND_SYNTAX_ERROR;
        }
 
@@ -3672,7 +3670,7 @@ showall:
                 (0 == strcmp("clear", CMD_ARGV[0])))                   /* quietly accept both */
                r = FLASHD_ClrGPNVM(&(pChip->details.bank[0]), who);
        else {
-               command_print(CMD_CTX, "Unknown command: %s", CMD_ARGV[0]);
+               command_print(CMD, "Unknown command: %s", CMD_ARGV[0]);
                r = ERROR_COMMAND_SYNTAX_ERROR;
        }
        return r;
@@ -3682,7 +3680,7 @@ COMMAND_HANDLER(sam3_handle_slowclk_command)
 {
        struct sam3_chip *pChip;
 
-       pChip = get_current_sam3(CMD_CTX);
+       pChip = get_current_sam3(CMD);
        if (!pChip)
                return ERROR_OK;
 
@@ -3697,7 +3695,7 @@ COMMAND_HANDLER(sam3_handle_slowclk_command)
                        COMMAND_PARSE_NUMBER(u32, CMD_ARGV[0], v);
                        if (v > 200000) {
                                /* absurd slow clock of 200Khz? */
-                               command_print(CMD_CTX, "Absurd/illegal slow clock freq: %d\n", (int)(v));
+                               command_print(CMD, "Absurd/illegal slow clock freq: %d\n", (int)(v));
                                return ERROR_COMMAND_SYNTAX_ERROR;
                        }
                        pChip->cfg.slow_freq = v;
@@ -3705,11 +3703,10 @@ COMMAND_HANDLER(sam3_handle_slowclk_command)
                }
                default:
                        /* error */
-                       command_print(CMD_CTX, "Too many parameters");
+                       command_print(CMD, "Too many parameters");
                        return ERROR_COMMAND_SYNTAX_ERROR;
-                       break;
        }
-       command_print(CMD_CTX, "Slowclk freq: %d.%03dkhz",
+       command_print(CMD, "Slowclk freq: %d.%03dkhz",
                (int)(pChip->cfg.slow_freq / 1000),
                (int)(pChip->cfg.slow_freq % 1000));
        return ERROR_OK;
@@ -3729,7 +3726,7 @@ static const struct command_registration at91sam3_exec_command_handlers[] = {
                .name = "info",
                .handler = sam3_handle_info_command,
                .mode = COMMAND_EXEC,
-               .help = "Print information about the current at91sam3 chip"
+               .help = "Print information about the current at91sam3 chip "
                        "and its flash configuration.",
                .usage = "",
        },