X-Git-Url: https://review.openocd.org/gitweb?p=openocd.git;a=blobdiff_plain;f=src%2Fflash%2Fnor%2Fmdr.c;h=3796259948a5f25124dc49672cd076c8f38e9049;hp=f3916ded98fe9f4a5e02397fcb167cd0a2960b28;hb=HEAD;hpb=7690a74b094347ec393c280414a182b7361d7b17 diff --git a/src/flash/nor/mdr.c b/src/flash/nor/mdr.c index f3916ded98..f6285de5b8 100644 --- a/src/flash/nor/mdr.c +++ b/src/flash/nor/mdr.c @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: GPL-2.0-or-later + /*************************************************************************** * Copyright (C) 2005 by Dominic Rath * * Dominic.Rath@gmx.de * @@ -10,19 +12,6 @@ * * * Copyright (C) 2013 by Paul Fertser * * fercerpav@gmail.com * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see . * ***************************************************************************/ #ifdef HAVE_CONFIG_H @@ -62,7 +51,7 @@ #define KEY 0x8AAA5551 struct mdr_flash_bank { - int probed; + bool probed; unsigned int mem_type; unsigned int page_count; unsigned int sec_count; @@ -79,18 +68,13 @@ FLASH_BANK_COMMAND_HANDLER(mdr_flash_bank_command) mdr_info = malloc(sizeof(struct mdr_flash_bank)); bank->driver_priv = mdr_info; - mdr_info->probed = 0; + mdr_info->probed = false; COMMAND_PARSE_NUMBER(uint, CMD_ARGV[6], mdr_info->mem_type); COMMAND_PARSE_NUMBER(uint, CMD_ARGV[7], mdr_info->page_count); COMMAND_PARSE_NUMBER(uint, CMD_ARGV[8], mdr_info->sec_count); 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; @@ -129,11 +113,12 @@ static int mdr_mass_erase(struct flash_bank *bank) return retval; } -static int mdr_erase(struct flash_bank *bank, int first, int last) +static int mdr_erase(struct flash_bank *bank, unsigned int first, + unsigned int last) { struct target *target = bank->target; struct mdr_flash_bank *mdr_info = bank->driver_priv; - int i, retval, retval2; + int retval, retval2; unsigned int j; uint32_t flash_cmd, cur_per_clock; @@ -178,7 +163,7 @@ static int mdr_erase(struct flash_bank *bank, int first, int last) } unsigned int page_size = bank->size / mdr_info->page_count; - for (i = first; i <= last; i++) { + for (unsigned int i = first; i <= last; i++) { for (j = 0; j < mdr_info->sec_count; j++) { retval = target_write_u32(target, FLASH_ADR, (i * page_size) | (j << 2)); if (retval != ERROR_OK) @@ -201,7 +186,6 @@ static int mdr_erase(struct flash_bank *bank, int first, int last) if (retval != ERROR_OK) goto reset_pg_and_lock; } - bank->sectors[i].is_erased = 1; } reset_pg_and_lock: @@ -217,11 +201,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) { @@ -337,7 +316,7 @@ static int mdr_write(struct flash_bank *bank, const uint8_t *buffer, int rem = count % 4; if (rem) { new_buffer = malloc(count + rem); - if (new_buffer == NULL) { + if (!new_buffer) { LOG_ERROR("odd number of bytes to write and no memory for padding buffer"); return ERROR_FAIL; } @@ -467,8 +446,7 @@ reset_pg_and_lock: retval = retval2; free_buffer: - if (new_buffer) - free(new_buffer); + free(new_buffer); /* read some bytes bytes to flush buffer in flash accelerator. * See errata for 1986VE1T and 1986VE3. Error 0007 */ @@ -582,10 +560,7 @@ static int mdr_probe(struct flash_bank *bank) page_count = mdr_info->page_count; page_size = bank->size / page_count; - if (bank->sectors) { - free(bank->sectors); - bank->sectors = NULL; - } + free(bank->sectors); bank->num_sectors = page_count; bank->sectors = malloc(sizeof(struct flash_sector) * page_count); @@ -597,7 +572,7 @@ static int mdr_probe(struct flash_bank *bank) bank->sectors[i].is_protected = 0; } - mdr_info->probed = 1; + mdr_info->probed = true; return ERROR_OK; } @@ -610,28 +585,26 @@ static int mdr_auto_probe(struct flash_bank *bank) return mdr_probe(bank); } -static int get_mdr_info(struct flash_bank *bank, char *buf, int buf_size) +static int get_mdr_info(struct flash_bank *bank, struct command_invocation *cmd) { struct mdr_flash_bank *mdr_info = bank->driver_priv; - snprintf(buf, buf_size, "MDR32Fx - %s", - mdr_info->mem_type ? "info memory" : "main memory"); + command_print_sameline(cmd, "MDR32Fx - %s", + mdr_info->mem_type ? "info memory" : "main memory"); return ERROR_OK; } -struct flash_driver mdr_flash = { +const struct flash_driver mdr_flash = { .name = "mdr", .usage = "flash bank mdr 0 0 \n" ": 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, };