]> git.sur5r.net Git - openocd/commitdiff
flash/at91sam4: run probe just once
authorTomas Vanek <vanekt@fbl.cz>
Sat, 21 Jul 2018 08:28:48 +0000 (10:28 +0200)
committerTomas Vanek <vanekt@fbl.cz>
Tue, 21 Aug 2018 18:25:45 +0000 (19:25 +0100)
Reread registers in sam4_GetInfo()

Change-Id: I3b023b3e642a9c052b5c41673d196317f7e7f2e3
Signed-off-by: Tomas Vanek <vanekt@fbl.cz>
Reviewed-on: http://openocd.zylin.com/4609
Tested-by: jenkins
Reviewed-by: Erwin Oegema <blablaechthema@hotmail.com>
Reviewed-by: Svetoslav Enchev <svetoslav.enchev@gmail.com>
src/flash/nor/at91sam4.c

index c5b31e964208d996c30b7bbd2da58a56f2dfd238..f922c762bcf475b022d85ef940d95740341ce39b 100644 (file)
@@ -2376,6 +2376,11 @@ static int sam4_GetInfo(struct sam4_chip *pChip)
 {
        const struct sam4_reg_list *pReg;
        uint32_t regval;
 {
        const struct sam4_reg_list *pReg;
        uint32_t regval;
+       int r;
+
+       r = sam4_ReadAllRegs(pChip);
+       if (r != ERROR_OK)
+               return r;
 
        pReg = &(sam4_all_regs[0]);
        while (pReg->name) {
 
        pReg = &(sam4_all_regs[0]);
        while (pReg->name) {
@@ -2581,14 +2586,14 @@ static int sam4_GetDetails(struct sam4_bank_private *pPrivate)
        return ERROR_OK;
 }
 
        return ERROR_OK;
 }
 
-static int _sam4_probe(struct flash_bank *bank, int noise)
+static int sam4_probe(struct flash_bank *bank)
 {
        unsigned x;
        int r;
        struct sam4_bank_private *pPrivate;
 
 
 {
        unsigned x;
        int r;
        struct sam4_bank_private *pPrivate;
 
 
-       LOG_DEBUG("Begin: Bank: %d, Noise: %d", bank->bank_number, noise);
+       LOG_DEBUG("Begin: Bank: %d", bank->bank_number);
        if (bank->target->state != TARGET_HALTED) {
                LOG_ERROR("Target not halted");
                return ERROR_TARGET_NOT_HALTED;
        if (bank->target->state != TARGET_HALTED) {
                LOG_ERROR("Target not halted");
                return ERROR_TARGET_NOT_HALTED;
@@ -2655,14 +2660,15 @@ static int _sam4_probe(struct flash_bank *bank, int noise)
        return r;
 }
 
        return r;
 }
 
-static int sam4_probe(struct flash_bank *bank)
-{
-       return _sam4_probe(bank, 1);
-}
-
 static int sam4_auto_probe(struct flash_bank *bank)
 {
 static int sam4_auto_probe(struct flash_bank *bank)
 {
-       return _sam4_probe(bank, 0);
+       struct sam4_bank_private *pPrivate;
+
+       pPrivate = get_sam4_bank_private(bank);
+       if (pPrivate && pPrivate->probed)
+               return ERROR_OK;
+
+       return sam4_probe(bank);
 }
 
 static int sam4_erase(struct flash_bank *bank, int first, int last)
 }
 
 static int sam4_erase(struct flash_bank *bank, int first, int last)