flash/nor/nrf5: check protection before flash erase/write on nRF51
[fw/openocd] / src / flash / nor / at91sam3.c
index d80b6fe6e8d78309d27d0ae4f940f762327605d1..c9baffc708916e95ad5d53787b1b1ba293e0f1b6 100644 (file)
@@ -21,7 +21,7 @@
  *   along with this program.  If not, see <http://www.gnu.org/licenses/>. *
 ****************************************************************************/
 
-/* Some of the the lower level code was based on code supplied by
+/* Some of the lower level code was based on code supplied by
  * ATMEL under this copyright. */
 
 /* BEGIN ATMEL COPYRIGHT */
 #define  offset_EFC_FSR   8
 #define  offset_EFC_FRR   12
 
-extern struct flash_driver at91sam3_flash;
+extern const struct flash_driver at91sam3_flash;
 
 static float _tomhz(uint32_t freq_hz)
 {
@@ -187,7 +187,7 @@ struct sam3_cfg {
  */
 
 struct sam3_bank_private {
-       int probed;
+       bool probed;
        /* DANGER: THERE ARE DRAGONS HERE.. */
        /* NOTE: If you add more 'ghost' pointers */
        /* be aware that you must *manually* update */
@@ -233,7 +233,7 @@ struct sam3_chip_details {
 
 struct sam3_chip {
        struct sam3_chip *next;
-       int probed;
+       bool probed;
 
        /* this is "initialized" from the global const structure */
        struct sam3_chip_details details;
@@ -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;
 }
 
@@ -306,7 +306,7 @@ static const struct sam3_chip_details all_sam3_details[] = {
 /*             .bank[0] = { */
                {
                        {
-                               .probed = 0,
+                               .probed = false,
                                .pChip  = NULL,
                                .pBank  = NULL,
                                .bank_number = 0,
@@ -322,7 +322,7 @@ static const struct sam3_chip_details all_sam3_details[] = {
 
 /*             .bank[1] = { */
                        {
-                               .probed = 0,
+                               .probed = false,
                                .pChip  = NULL,
                                .pBank  = NULL,
                                .bank_number = 1,
@@ -357,7 +357,7 @@ static const struct sam3_chip_details all_sam3_details[] = {
 /*             .bank[0] = { */
                {
                        {
-                               .probed = 0,
+                               .probed = false,
                                .pChip  = NULL,
                                .pBank  = NULL,
                                .bank_number = 0,
@@ -373,7 +373,7 @@ static const struct sam3_chip_details all_sam3_details[] = {
 /*               .bank[1] = { */
                        {
                                .present = 0,
-                               .probed = 0,
+                               .probed = false,
                                .bank_number = 1,
                        },
                },
@@ -399,7 +399,7 @@ static const struct sam3_chip_details all_sam3_details[] = {
 /*             .bank[0] = { */
                {
                        {
-                               .probed = 0,
+                               .probed = false,
                                .pChip  = NULL,
                                .pBank  = NULL,
                                .bank_number = 0,
@@ -416,7 +416,7 @@ static const struct sam3_chip_details all_sam3_details[] = {
 /*             .bank[1] = { */
                        {
                                .present = 0,
-                               .probed = 0,
+                               .probed = false,
                                .bank_number = 1,
                        },
                },
@@ -448,7 +448,7 @@ static const struct sam3_chip_details all_sam3_details[] = {
                {
                        {
 /*             .bank[0] = { */
-                               .probed = 0,
+                               .probed = false,
                                .pChip  = NULL,
                                .pBank  = NULL,
                                .bank_number = 0,
@@ -463,7 +463,7 @@ static const struct sam3_chip_details all_sam3_details[] = {
                        },
 /*             .bank[1] = { */
                        {
-                               .probed = 0,
+                               .probed = false,
                                .pChip  = NULL,
                                .pBank  = NULL,
                                .bank_number = 1,
@@ -498,7 +498,7 @@ static const struct sam3_chip_details all_sam3_details[] = {
                {
 /*             .bank[0] = { */
                        {
-                               .probed = 0,
+                               .probed = false,
                                .pChip  = NULL,
                                .pBank  = NULL,
                                .bank_number = 0,
@@ -514,7 +514,7 @@ static const struct sam3_chip_details all_sam3_details[] = {
 /*             .bank[1] = { */
                        {
                                .present = 0,
-                               .probed = 0,
+                               .probed = false,
                                .bank_number = 1,
                        },
                },
@@ -540,7 +540,7 @@ static const struct sam3_chip_details all_sam3_details[] = {
                {
 /*             .bank[0] = { */
                        {
-                               .probed = 0,
+                               .probed = false,
                                .pChip  = NULL,
                                .pBank  = NULL,
                                .bank_number = 0,
@@ -556,7 +556,7 @@ static const struct sam3_chip_details all_sam3_details[] = {
 /*             .bank[1] = { */
                        {
                                .present = 0,
-                               .probed = 0,
+                               .probed = false,
                                .bank_number = 1,
 
                        },
@@ -578,7 +578,7 @@ static const struct sam3_chip_details all_sam3_details[] = {
                {
 /*             .bank[0] = { */
                        {
-                               .probed = 0,
+                               .probed = false,
                                .pChip  = NULL,
                                .pBank  = NULL,
                                .bank_number = 0,
@@ -594,7 +594,7 @@ static const struct sam3_chip_details all_sam3_details[] = {
 /*             .bank[1] = { */
                        {
                                .present = 0,
-                               .probed = 0,
+                               .probed = false,
                                .bank_number = 1,
 
                        },
@@ -611,7 +611,7 @@ static const struct sam3_chip_details all_sam3_details[] = {
                {
 /*             .bank[0] = { */
                        {
-                               .probed = 0,
+                               .probed = false,
                                .pChip  = NULL,
                                .pBank  = NULL,
                                .bank_number = 0,
@@ -627,7 +627,7 @@ static const struct sam3_chip_details all_sam3_details[] = {
 /*             .bank[1] = { */
                        {
                                .present = 0,
-                               .probed = 0,
+                               .probed = false,
                                .bank_number = 1,
 
                        },
@@ -643,7 +643,7 @@ static const struct sam3_chip_details all_sam3_details[] = {
                {
 /*             .bank[0] = { */
                        {
-                               .probed = 0,
+                               .probed = false,
                                .pChip  = NULL,
                                .pBank  = NULL,
                                .bank_number = 0,
@@ -659,7 +659,7 @@ static const struct sam3_chip_details all_sam3_details[] = {
 /*             .bank[1] = { */
                        {
                                .present = 0,
-                               .probed = 0,
+                               .probed = false,
                                .bank_number = 1,
 
                        },
@@ -675,7 +675,7 @@ static const struct sam3_chip_details all_sam3_details[] = {
                {
 /*             .bank[0] = { */
                        {
-                               .probed = 0,
+                               .probed = false,
                                .pChip  = NULL,
                                .pBank  = NULL,
                                .bank_number = 0,
@@ -691,7 +691,7 @@ static const struct sam3_chip_details all_sam3_details[] = {
 /*             .bank[1] = { */
                        {
                                .present = 0,
-                               .probed = 0,
+                               .probed = false,
                                .bank_number = 1,
 
                        },
@@ -707,7 +707,7 @@ static const struct sam3_chip_details all_sam3_details[] = {
                {
 /*             .bank[0] = { */
                        {
-                               .probed = 0,
+                               .probed = false,
                                .pChip  = NULL,
                                .pBank  = NULL,
                                .bank_number = 0,
@@ -723,7 +723,7 @@ static const struct sam3_chip_details all_sam3_details[] = {
 /*             .bank[1] = { */
                        {
                                .present = 0,
-                               .probed = 0,
+                               .probed = false,
                                .bank_number = 1,
 
                        },
@@ -739,7 +739,7 @@ static const struct sam3_chip_details all_sam3_details[] = {
                {
 /*                     .bank[0] = { */
                        {
-                               .probed = 0,
+                               .probed = false,
                                .pChip  = NULL,
                                .pBank  = NULL,
                                .bank_number = 0,
@@ -754,7 +754,7 @@ static const struct sam3_chip_details all_sam3_details[] = {
                          },
 /*                     .bank[1] = { */
                          {
-                               .probed = 0,
+                               .probed = false,
                                .pChip  = NULL,
                                .pBank  = NULL,
                                .bank_number = 1,
@@ -779,7 +779,7 @@ static const struct sam3_chip_details all_sam3_details[] = {
                {
 /*                     .bank[0] = { */
                        {
-                               .probed = 0,
+                               .probed = false,
                                .pChip  = NULL,
                                .pBank  = NULL,
                                .bank_number = 0,
@@ -794,7 +794,7 @@ static const struct sam3_chip_details all_sam3_details[] = {
                          },
 /*                     .bank[1] = { */
                          {
-                               .probed = 0,
+                               .probed = false,
                                .pChip  = NULL,
                                .pBank  = NULL,
                                .bank_number = 1,
@@ -819,7 +819,7 @@ static const struct sam3_chip_details all_sam3_details[] = {
                {
 /*                     .bank[0] = { */
                        {
-                               .probed = 0,
+                               .probed = false,
                                .pChip  = NULL,
                                .pBank  = NULL,
                                .bank_number = 0,
@@ -834,7 +834,7 @@ static const struct sam3_chip_details all_sam3_details[] = {
                          },
 /*                     .bank[1] = { */
                          {
-                               .probed = 0,
+                               .probed = false,
                                .pChip  = NULL,
                                .pBank  = NULL,
                                .bank_number = 1,
@@ -859,7 +859,7 @@ static const struct sam3_chip_details all_sam3_details[] = {
                {
 /*             .bank[0] = { */
                        {
-                               .probed = 0,
+                               .probed = false,
                                .pChip  = NULL,
                                .pBank  = NULL,
                                .bank_number = 0,
@@ -875,7 +875,7 @@ static const struct sam3_chip_details all_sam3_details[] = {
 /*             .bank[1] = { */
                        {
                                .present = 0,
-                               .probed = 0,
+                               .probed = false,
                                .bank_number = 1,
 
                        },
@@ -891,7 +891,7 @@ static const struct sam3_chip_details all_sam3_details[] = {
                {
 /*             .bank[0] = { */
                        {
-                               .probed = 0,
+                               .probed = false,
                                .pChip  = NULL,
                                .pBank  = NULL,
                                .bank_number = 0,
@@ -907,7 +907,7 @@ static const struct sam3_chip_details all_sam3_details[] = {
 /*             .bank[1] = { */
                        {
                                .present = 0,
-                               .probed = 0,
+                               .probed = false,
                                .bank_number = 1,
 
                        },
@@ -923,7 +923,7 @@ static const struct sam3_chip_details all_sam3_details[] = {
                {
 /*             .bank[0] = { */
                        {
-                               .probed = 0,
+                               .probed = false,
                                .pChip  = NULL,
                                .pBank  = NULL,
                                .bank_number = 0,
@@ -939,7 +939,7 @@ static const struct sam3_chip_details all_sam3_details[] = {
 /*             .bank[1] = { */
                        {
                                .present = 0,
-                               .probed = 0,
+                               .probed = false,
                                .bank_number = 1,
 
                        },
@@ -955,7 +955,7 @@ static const struct sam3_chip_details all_sam3_details[] = {
                {
 /*             .bank[0] = { */
                        {
-                               .probed = 0,
+                               .probed = false,
                                .pChip  = NULL,
                                .pBank  = NULL,
                                .bank_number = 0,
@@ -971,7 +971,7 @@ static const struct sam3_chip_details all_sam3_details[] = {
 /*             .bank[1] = { */
                        {
                                .present = 0,
-                               .probed = 0,
+                               .probed = false,
                                .bank_number = 1,
 
                        },
@@ -987,7 +987,7 @@ static const struct sam3_chip_details all_sam3_details[] = {
                {
 /*             .bank[0] = { */
                        {
-                               .probed = 0,
+                               .probed = false,
                                .pChip  = NULL,
                                .pBank  = NULL,
                                .bank_number = 0,
@@ -1003,7 +1003,7 @@ static const struct sam3_chip_details all_sam3_details[] = {
 /*             .bank[1] = { */
                        {
                                .present = 0,
-                               .probed = 0,
+                               .probed = false,
                                .bank_number = 1,
 
                        },
@@ -1019,7 +1019,7 @@ static const struct sam3_chip_details all_sam3_details[] = {
                {
 /*             .bank[0] = { */
                        {
-                               .probed = 0,
+                               .probed = false,
                                .pChip  = NULL,
                                .pBank  = NULL,
                                .bank_number = 0,
@@ -1035,7 +1035,7 @@ static const struct sam3_chip_details all_sam3_details[] = {
 /*             .bank[1] = { */
                        {
                                .present = 0,
-                               .probed = 0,
+                               .probed = false,
                                .bank_number = 1,
 
                        },
@@ -1051,7 +1051,7 @@ static const struct sam3_chip_details all_sam3_details[] = {
                {
 /*             .bank[0] = { */
                        {
-                               .probed = 0,
+                               .probed = false,
                                .pChip  = NULL,
                                .pBank  = NULL,
                                .bank_number = 0,
@@ -1067,7 +1067,7 @@ static const struct sam3_chip_details all_sam3_details[] = {
 /*             .bank[1] = { */
                        {
                                .present = 0,
-                               .probed = 0,
+                               .probed = false,
                                .bank_number = 1,
 
                        },
@@ -1101,7 +1101,7 @@ static const struct sam3_chip_details all_sam3_details[] = {
 /*             .bank[0] = { */
                {
                        {
-                               .probed = 0,
+                               .probed = false,
                                .pChip  = NULL,
                                .pBank  = NULL,
                                .bank_number = 0,
@@ -1118,7 +1118,7 @@ static const struct sam3_chip_details all_sam3_details[] = {
 /*             .bank[1] = { */
                        {
                                .present = 0,
-                               .probed = 0,
+                               .probed = false,
                                .bank_number = 1,
                        },
                },
@@ -1150,7 +1150,7 @@ static const struct sam3_chip_details all_sam3_details[] = {
 /*             .bank[0] = { */
                {
                        {
-                               .probed = 0,
+                               .probed = false,
                                .pChip  = NULL,
                                .pBank  = NULL,
                                .bank_number = 0,
@@ -1167,7 +1167,7 @@ static const struct sam3_chip_details all_sam3_details[] = {
 /*             .bank[1] = { */
                        {
                                .present = 0,
-                               .probed = 0,
+                               .probed = false,
                                .bank_number = 1,
                        },
                },
@@ -1199,7 +1199,7 @@ static const struct sam3_chip_details all_sam3_details[] = {
 /*             .bank[0] = { */
                {
                        {
-                               .probed = 0,
+                               .probed = false,
                                .pChip  = NULL,
                                .pBank  = NULL,
                                .bank_number = 0,
@@ -1216,7 +1216,7 @@ static const struct sam3_chip_details all_sam3_details[] = {
 /*             .bank[1] = { */
                        {
                                .present = 0,
-                               .probed = 0,
+                               .probed = false,
                                .bank_number = 1,
                        },
                },
@@ -1248,7 +1248,7 @@ static const struct sam3_chip_details all_sam3_details[] = {
 /*             .bank[0] = { */
                {
                        {
-                               .probed = 0,
+                               .probed = false,
                                .pChip  = NULL,
                                .pBank  = NULL,
                                .bank_number = 0,
@@ -1265,7 +1265,7 @@ static const struct sam3_chip_details all_sam3_details[] = {
 /*             .bank[1] = { */
                        {
                                .present = 0,
-                               .probed = 0,
+                               .probed = false,
                                .bank_number = 1,
                        },
                },
@@ -1297,7 +1297,7 @@ static const struct sam3_chip_details all_sam3_details[] = {
 /*             .bank[0] = { */
                {
                        {
-                               .probed = 0,
+                               .probed = false,
                                .pChip  = NULL,
                                .pBank  = NULL,
                                .bank_number = 0,
@@ -1314,7 +1314,7 @@ static const struct sam3_chip_details all_sam3_details[] = {
 /*             .bank[1] = { */
                        {
                                .present = 0,
-                               .probed = 0,
+                               .probed = false,
                                .bank_number = 1,
                        },
                },
@@ -1346,7 +1346,7 @@ static const struct sam3_chip_details all_sam3_details[] = {
 /*             .bank[0] = { */
                {
                        {
-                               .probed = 0,
+                               .probed = false,
                                .pChip  = NULL,
                                .pBank  = NULL,
                                .bank_number = 0,
@@ -1363,7 +1363,7 @@ static const struct sam3_chip_details all_sam3_details[] = {
 /*             .bank[1] = { */
                        {
                                .present = 0,
-                               .probed = 0,
+                               .probed = false,
                                .bank_number = 1,
                        },
                },
@@ -1395,7 +1395,7 @@ static const struct sam3_chip_details all_sam3_details[] = {
 /*             .bank[0] = { */
                {
                        {
-                               .probed = 0,
+                               .probed = false,
                                .pChip  = NULL,
                                .pBank  = NULL,
                                .bank_number = 0,
@@ -1412,7 +1412,7 @@ static const struct sam3_chip_details all_sam3_details[] = {
 /*             .bank[1] = { */
                        {
                                .present = 0,
-                               .probed = 0,
+                               .probed = false,
                                .bank_number = 1,
                        },
                },
@@ -1444,7 +1444,7 @@ static const struct sam3_chip_details all_sam3_details[] = {
 /*             .bank[0] = { */
                {
                        {
-                               .probed = 0,
+                               .probed = false,
                                .pChip  = NULL,
                                .pBank  = NULL,
                                .bank_number = 0,
@@ -1461,7 +1461,7 @@ static const struct sam3_chip_details all_sam3_details[] = {
 /*             .bank[1] = { */
                        {
                                .present = 0,
-                               .probed = 0,
+                               .probed = false,
                                .bank_number = 1,
                        },
                },
@@ -1493,7 +1493,7 @@ static const struct sam3_chip_details all_sam3_details[] = {
 /*             .bank[0] = { */
                {
                        {
-                               .probed = 0,
+                               .probed = false,
                                .pChip  = NULL,
                                .pBank  = NULL,
                                .bank_number = 0,
@@ -1510,7 +1510,7 @@ static const struct sam3_chip_details all_sam3_details[] = {
 /*             .bank[1] = { */
                        {
                                .present = 0,
-                               .probed = 0,
+                               .probed = false,
                                .bank_number = 1,
                        },
                },
@@ -1527,7 +1527,7 @@ static const struct sam3_chip_details all_sam3_details[] = {
 /*             .bank[0] = { */
                {
                        {
-                               .probed = 0,
+                               .probed = false,
                                .pChip  = NULL,
                                .pBank  = NULL,
                                .bank_number = 0,
@@ -1544,7 +1544,7 @@ static const struct sam3_chip_details all_sam3_details[] = {
 /*             .bank[1] = { */
                        {
                                .present = 0,
-                               .probed = 0,
+                               .probed = false,
                                .bank_number = 1,
                        },
                },
@@ -1561,7 +1561,7 @@ static const struct sam3_chip_details all_sam3_details[] = {
 /*             .bank[0] = { */
                {
                        {
-                               .probed = 0,
+                               .probed = false,
                                .pChip  = NULL,
                                .pBank  = NULL,
                                .bank_number = 0,
@@ -1578,7 +1578,7 @@ static const struct sam3_chip_details all_sam3_details[] = {
 /*             .bank[1] = { */
                        {
                                .present = 0,
-                               .probed = 0,
+                               .probed = false,
                                .bank_number = 1,
                        },
                },
@@ -1595,7 +1595,7 @@ static const struct sam3_chip_details all_sam3_details[] = {
 /*             .bank[0] = { */
                {
                        {
-                               .probed = 0,
+                               .probed = false,
                                .pChip  = NULL,
                                .pBank  = NULL,
                                .bank_number = 0,
@@ -1612,7 +1612,7 @@ static const struct sam3_chip_details all_sam3_details[] = {
 /*             .bank[1] = { */
                        {
                                .present = 0,
-                               .probed = 0,
+                               .probed = false,
                                .bank_number = 1,
                        },
                },
@@ -1629,7 +1629,7 @@ static const struct sam3_chip_details all_sam3_details[] = {
 /*             .bank[0] = { */
                {
                        {
-                               .probed = 0,
+                               .probed = false,
                                .pChip  = NULL,
                                .pBank  = NULL,
                                .bank_number = 0,
@@ -1646,7 +1646,7 @@ static const struct sam3_chip_details all_sam3_details[] = {
 /*             .bank[1] = { */
                        {
                                .present = 0,
-                               .probed = 0,
+                               .probed = false,
                                .bank_number = 1,
                        },
                },
@@ -1680,7 +1680,7 @@ static const struct sam3_chip_details all_sam3_details[] = {
                {
 /*             .bank[0] = { */
                  {
-                       .probed = 0,
+                       .probed = false,
                        .pChip  = NULL,
                        .pBank  = NULL,
                        .bank_number = 0,
@@ -1695,7 +1695,7 @@ static const struct sam3_chip_details all_sam3_details[] = {
                  },
 /*             .bank[1] = { */
                  {
-                       .probed = 0,
+                       .probed = false,
                        .pChip  = NULL,
                        .pBank  = NULL,
                        .bank_number = 1,
@@ -1721,7 +1721,7 @@ static const struct sam3_chip_details all_sam3_details[] = {
                {
 /*             .bank[0] = { */
                  {
-                       .probed = 0,
+                       .probed = false,
                        .pChip  = NULL,
                        .pBank  = NULL,
                        .bank_number = 0,
@@ -1736,7 +1736,7 @@ static const struct sam3_chip_details all_sam3_details[] = {
                  },
 /*             .bank[1] = { */
                  {
-                       .probed = 0,
+                       .probed = false,
                        .pChip  = NULL,
                        .pBank  = NULL,
                        .bank_number = 1,
@@ -1780,7 +1780,7 @@ static const struct sam3_chip_details all_sam3_details[] = {
                {
 /*             .bank[0] = { */
                  {
-                       .probed = 0,
+                       .probed = false,
                        .pChip  = NULL,
                        .pBank  = NULL,
                        .bank_number = 0,
@@ -1795,7 +1795,7 @@ static const struct sam3_chip_details all_sam3_details[] = {
                  },
 /*             .bank[1] = { */
                  {
-                       .probed = 0,
+                       .probed = false,
                        .pChip  = NULL,
                        .pBank  = NULL,
                        .bank_number = 1,
@@ -1822,7 +1822,7 @@ static const struct sam3_chip_details all_sam3_details[] = {
                {
 /*             .bank[0] = { */
                  {
-                       .probed = 0,
+                       .probed = false,
                        .pChip  = NULL,
                        .pBank  = NULL,
                        .bank_number = 0,
@@ -1837,7 +1837,7 @@ static const struct sam3_chip_details all_sam3_details[] = {
                  },
 /*             .bank[1] = { */
                  {
-                       .probed = 0,
+                       .probed = false,
                        .pChip  = NULL,
                        .pBank  = NULL,
                        .bank_number = 1,
@@ -1863,7 +1863,7 @@ static const struct sam3_chip_details all_sam3_details[] = {
                {
 /*             .bank[0] = { */
                  {
-                       .probed = 0,
+                       .probed = false,
                        .pChip  = NULL,
                        .pBank  = NULL,
                        .bank_number = 0,
@@ -1878,7 +1878,7 @@ static const struct sam3_chip_details all_sam3_details[] = {
                  },
 /*             .bank[1] = { */
                  {
-                       .probed = 0,
+                       .probed = false,
                        .pChip  = NULL,
                        .pBank  = NULL,
                        .bank_number = 1,
@@ -1904,7 +1904,7 @@ static const struct sam3_chip_details all_sam3_details[] = {
                {
 /*             .bank[0] = { */
                  {
-                       .probed = 0,
+                       .probed = false,
                        .pChip  = NULL,
                        .pBank  = NULL,
                        .bank_number = 0,
@@ -1919,11 +1919,11 @@ static const struct sam3_chip_details all_sam3_details[] = {
                  },
 /*             .bank[1] = { */
                  {
-                       .probed = 0,
+                       .probed = false,
                        .pChip  = NULL,
                        .pBank  = NULL,
                        .bank_number = 1,
-                       .base_address = FLASH_BANK1_BASE_512K_AX ,
+                       .base_address = FLASH_BANK1_BASE_512K_AX,
                        .controller_address = 0x400e0c00,
                        .flash_wait_states = 6, /* workaround silicon bug */
                        .present = 1,
@@ -1945,7 +1945,7 @@ static const struct sam3_chip_details all_sam3_details[] = {
                {
 /*             .bank[0] = { */
                  {
-                       .probed = 0,
+                       .probed = false,
                        .pChip  = NULL,
                        .pBank  = NULL,
                        .bank_number = 0,
@@ -1960,7 +1960,7 @@ static const struct sam3_chip_details all_sam3_details[] = {
                  },
 /*             .bank[1] = { */
                  {
-                       .probed = 0,
+                       .probed = false,
                        .pChip  = NULL,
                        .pBank  = NULL,
                        .bank_number = 1,
@@ -1986,7 +1986,7 @@ static const struct sam3_chip_details all_sam3_details[] = {
                {
 /*             .bank[0] = { */
                  {
-                       .probed = 0,
+                       .probed = false,
                        .pChip  = NULL,
                        .pBank  = NULL,
                        .bank_number = 0,
@@ -2001,7 +2001,7 @@ static const struct sam3_chip_details all_sam3_details[] = {
                  },
 /*             .bank[1] = { */
                  {
-                       .probed = 0,
+                       .probed = false,
                        .pChip  = NULL,
                        .pBank  = NULL,
                        .bank_number = 1,
@@ -2991,28 +2991,6 @@ static int sam3_GetInfo(struct sam3_chip *pChip)
        return ERROR_OK;
 }
 
-static int sam3_erase_check(struct flash_bank *bank)
-{
-       int x;
-
-       LOG_DEBUG("Here");
-       if (bank->target->state != TARGET_HALTED) {
-               LOG_ERROR("Target not halted");
-               return ERROR_TARGET_NOT_HALTED;
-       }
-       if (0 == bank->num_sectors) {
-               LOG_ERROR("Target: not supported/not probed");
-               return ERROR_FAIL;
-       }
-
-       LOG_INFO("sam3 - supports auto-erase, erase_check ignored");
-       for (x = 0; x < bank->num_sectors; x++)
-               bank->sectors[x].is_erased = 1;
-
-       LOG_DEBUG("Done");
-       return ERROR_OK;
-}
-
 static int sam3_protect_check(struct flash_bank *bank)
 {
        int r;
@@ -3073,7 +3051,7 @@ FLASH_BANK_COMMAND_HANDLER(sam3_flash_bank_command)
                pChip->target = bank->target;
                /* assumption is this runs at 32khz */
                pChip->cfg.slow_freq = 32768;
-               pChip->probed = 0;
+               pChip->probed = false;
        }
 
        switch (bank->base) {
@@ -3090,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*/
@@ -3118,7 +3095,7 @@ FLASH_BANK_COMMAND_HANDLER(sam3_flash_bank_command)
 }
 
 /**
- * Remove all chips from the internal list without distingushing which one
+ * Remove all chips from the internal list without distinguishing which one
  * is owned by this bank. This simplification works only for one shot
  * deallocation like current flash_free_all_banks()
  */
@@ -3194,12 +3171,11 @@ static int sam3_GetDetails(struct sam3_bank_private *pPrivate)
 
 static int _sam3_probe(struct flash_bank *bank, int noise)
 {
-       unsigned x;
        int r;
        struct sam3_bank_private *pPrivate;
 
 
-       LOG_DEBUG("Begin: Bank: %d, Noise: %d", bank->bank_number, noise);
+       LOG_DEBUG("Begin: Bank: %u, Noise: %d", bank->bank_number, noise);
        if (bank->target->state != TARGET_HALTED) {
                LOG_ERROR("Target not halted");
                return ERROR_TARGET_NOT_HALTED;
@@ -3224,7 +3200,7 @@ static int _sam3_probe(struct flash_bank *bank, int noise)
                return r;
 
        /* update the flash bank size */
-       for (x = 0; x < SAM3_MAX_FLASH_BANKS; x++) {
+       for (unsigned int x = 0; x < SAM3_MAX_FLASH_BANKS; x++) {
                if (bank->base == pPrivate->pChip->details.bank[x].base_address) {
                        bank->size = pPrivate->pChip->details.bank[x].size_bytes;
                        break;
@@ -3239,7 +3215,7 @@ static int _sam3_probe(struct flash_bank *bank, int noise)
                }
                bank->num_sectors = pPrivate->nsectors;
 
-               for (x = 0; ((int)(x)) < bank->num_sectors; x++) {
+               for (unsigned int x = 0; x < bank->num_sectors; x++) {
                        bank->sectors[x].size = pPrivate->sector_size;
                        bank->sectors[x].offset = x * (pPrivate->sector_size);
                        /* mark as unknown */
@@ -3248,7 +3224,7 @@ static int _sam3_probe(struct flash_bank *bank, int noise)
                }
        }
 
-       pPrivate->probed = 1;
+       pPrivate->probed = true;
 
        r = sam3_protect_check(bank);
        if (r != ERROR_OK)
@@ -3275,7 +3251,8 @@ static int sam3_auto_probe(struct flash_bank *bank)
        return _sam3_probe(bank, 0);
 }
 
-static int sam3_erase(struct flash_bank *bank, int first, int last)
+static int sam3_erase(struct flash_bank *bank, unsigned int first,
+               unsigned int last)
 {
        struct sam3_bank_private *pPrivate;
        int r;
@@ -3296,7 +3273,7 @@ static int sam3_erase(struct flash_bank *bank, int first, int last)
        if (!(pPrivate->probed))
                return ERROR_FLASH_BANK_NOT_PROBED;
 
-       if ((first == 0) && ((last + 1) == ((int)(pPrivate->nsectors)))) {
+       if ((first == 0) && ((last + 1) == pPrivate->nsectors)) {
                /* whole chip */
                LOG_DEBUG("Here");
                return FLASHD_EraseEntireBank(pPrivate);
@@ -3305,7 +3282,8 @@ static int sam3_erase(struct flash_bank *bank, int first, int last)
        return ERROR_OK;
 }
 
-static int sam3_protect(struct flash_bank *bank, int set, int first, int last)
+static int sam3_protect(struct flash_bank *bank, int set, unsigned int first,
+               unsigned int last)
 {
        struct sam3_bank_private *pPrivate;
        int r;
@@ -3321,9 +3299,9 @@ static int sam3_protect(struct flash_bank *bank, int set, int first, int last)
                return ERROR_FLASH_BANK_NOT_PROBED;
 
        if (set)
-               r = FLASHD_Lock(pPrivate, (unsigned)(first), (unsigned)(last));
+               r = FLASHD_Lock(pPrivate, first, last);
        else
-               r = FLASHD_Unlock(pPrivate, (unsigned)(first), (unsigned)(last));
+               r = FLASHD_Unlock(pPrivate, first, last);
        LOG_DEBUG("End: r=%d", r);
 
        return r;
@@ -3420,7 +3398,7 @@ static int sam3_write(struct flash_bank *bank,
        struct sam3_bank_private *pPrivate;
        uint8_t *pagebuffer;
 
-       /* incase we bail further below, set this to null */
+       /* in case we bail further below, set this to null */
        pagebuffer = NULL;
 
        /* ignore dumb requests */
@@ -3552,15 +3530,14 @@ static int sam3_write(struct flash_bank *bank,
        LOG_DEBUG("Done!");
        r = ERROR_OK;
 done:
-       if (pagebuffer)
-               free(pagebuffer);
+       free(pagebuffer);
        return r;
 }
 
 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;
 
@@ -3571,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);
@@ -3620,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;
 
@@ -3630,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;
        }
@@ -3643,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;
@@ -3669,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;
        }
 
@@ -3694,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;
@@ -3704,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;
 
@@ -3719,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;
@@ -3727,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;
@@ -3751,8 +3726,9 @@ 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 = "",
        },
        {
                .name = "slowclk",
@@ -3775,7 +3751,7 @@ static const struct command_registration at91sam3_command_handlers[] = {
        COMMAND_REGISTRATION_DONE
 };
 
-struct flash_driver at91sam3_flash = {
+const struct flash_driver at91sam3_flash = {
        .name = "at91sam3",
        .commands = at91sam3_command_handlers,
        .flash_bank_command = sam3_flash_bank_command,
@@ -3785,7 +3761,7 @@ struct flash_driver at91sam3_flash = {
        .read = default_flash_read,
        .probe = sam3_probe,
        .auto_probe = sam3_auto_probe,
-       .erase_check = sam3_erase_check,
+       .erase_check = default_flash_blank_check,
        .protect_check = sam3_protect_check,
        .free_driver_priv = sam3_free_driver_priv,
 };