diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/flash/nor/dsp5680xx_flash.c | 23 |
1 files changed, 9 insertions, 14 deletions
diff --git a/src/flash/nor/dsp5680xx_flash.c b/src/flash/nor/dsp5680xx_flash.c index 9fa7b06f..b919f564 100644 --- a/src/flash/nor/dsp5680xx_flash.c +++ b/src/flash/nor/dsp5680xx_flash.c @@ -96,18 +96,10 @@ static int dsp5680xx_flash_protect_check(struct flash_bank *bank){ static int dsp5680xx_flash_protect(struct flash_bank *bank, int set, int first, int last){ // This applies security to flash module after next reset, it does not actually apply protection (protection refers to undesired access from the core) int retval; - if(set){ + if(set) retval = dsp5680xx_f_lock(bank->target); - if(retval == ERROR_OK){ - for(int i = first;i<last;i++) - bank->sectors[i].is_protected = 1; - } - }else{ + else retval = dsp5680xx_f_unlock(bank->target); - if(retval == ERROR_OK) - for(int i = first;i<last;i++) - bank->sectors[i].is_protected = 0; - } return retval; } @@ -140,10 +132,13 @@ static int dsp5680xx_flash_write(struct flash_bank *bank, uint8_t *buffer, uint3 return ERROR_FAIL; } retval = dsp5680xx_f_wr(bank->target, buffer, bank->base + offset/2, count); - if(retval == ERROR_OK) - bank->sectors[0].is_erased = 0; - else - bank->sectors[0].is_erased = -1; + uint32_t addr_word; + for(addr_word = bank->base + offset/2;addr_word<count/2;addr_word+=(HFM_SECTOR_SIZE/2)){ + if(retval == ERROR_OK) + bank->sectors[addr_word/(HFM_SECTOR_SIZE/2)].is_erased = 0; + else + bank->sectors[addr_word/(HFM_SECTOR_SIZE/2)].is_erased = -1; + } return retval; } |