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;
}
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;
}