X-Git-Url: https://review.openocd.org/gitweb?a=blobdiff_plain;f=src%2Fflash%2Fnor%2Fmdr.c;h=c4a4458f9e68b35ea129acedd3c5f3dd37ab43c6;hb=21ef7e30d4f47a78e2b3aacedd425f0966465352;hp=68eaf13760043b4497bce59bc0339210b106e871;hpb=d0e763ac7ef6aa17b17bd00ccdfbccfb4eacda69;p=openocd.git diff --git a/src/flash/nor/mdr.c b/src/flash/nor/mdr.c index 68eaf13760..c4a4458f9e 100644 --- a/src/flash/nor/mdr.c +++ b/src/flash/nor/mdr.c @@ -86,11 +86,6 @@ FLASH_BANK_COMMAND_HANDLER(mdr_flash_bank_command) return ERROR_OK; } -static int mdr_protect_check(struct flash_bank *bank) -{ - return ERROR_OK; -} - static int mdr_mass_erase(struct flash_bank *bank) { struct target *target = bank->target; @@ -171,7 +166,8 @@ static int mdr_erase(struct flash_bank *bank, int first, int last) if (retval != ERROR_OK) goto reset_pg_and_lock; - if ((first == 0) && (last == (bank->num_sectors - 1))) { + if ((first == 0) && (last == (bank->num_sectors - 1)) && + !mdr_info->mem_type) { retval = mdr_mass_erase(bank); goto reset_pg_and_lock; } @@ -216,11 +212,6 @@ reset_pg_and_lock: return retval; } -static int mdr_protect(struct flash_bank *bank, int set, int first, int last) -{ - return ERROR_OK; -} - static int mdr_write_block(struct flash_bank *bank, const uint8_t *buffer, uint32_t offset, uint32_t count) { @@ -469,6 +460,13 @@ free_buffer: if (new_buffer) free(new_buffer); + /* read some bytes bytes to flush buffer in flash accelerator. + * See errata for 1986VE1T and 1986VE3. Error 0007 */ + if ((retval == ERROR_OK) && (!mdr_info->mem_type)) { + uint32_t tmp; + target_checksum_memory(bank->target, bank->base, 64, &tmp); + } + return retval; } @@ -617,12 +615,11 @@ struct flash_driver mdr_flash = { ": 0 for main memory, 1 for info memory", .flash_bank_command = mdr_flash_bank_command, .erase = mdr_erase, - .protect = mdr_protect, .write = mdr_write, .read = mdr_read, .probe = mdr_probe, .auto_probe = mdr_auto_probe, .erase_check = default_flash_blank_check, - .protect_check = mdr_protect_check, .info = get_mdr_info, + .free_driver_priv = default_flash_free_driver_priv, };