#define FLASH_DQ5 0x20 /* Time limit exceeding flag bit (TLOV) position */
enum fm3_variant {
- mb9bfxx1, /* Flash Type '1' */
- mb9bfxx2,
- mb9bfxx3,
- mb9bfxx4,
- mb9bfxx5,
- mb9bfxx6,
- mb9bfxx7,
- mb9bfxx8,
-
- mb9afxx1, /* Flash Type '2' */
- mb9afxx2,
- mb9afxx3,
- mb9afxx4,
- mb9afxx5,
- mb9afxx6,
- mb9afxx7,
- mb9afxx8,
+ MB9BFXX1, /* Flash Type '1' */
+ MB9BFXX2,
+ MB9BFXX3,
+ MB9BFXX4,
+ MB9BFXX5,
+ MB9BFXX6,
+ MB9BFXX7,
+ MB9BFXX8,
+
+ MB9AFXX1, /* Flash Type '2' */
+ MB9AFXX2,
+ MB9AFXX3,
+ MB9AFXX4,
+ MB9AFXX5,
+ MB9AFXX6,
+ MB9AFXX7,
+ MB9AFXX8,
};
enum fm3_flash_type {
- fm3_no_flash_type = 0,
- fm3_flash_type1 = 1,
- fm3_flash_type2 = 2
+ FM3_NO_FLASH_TYPE = 0,
+ FM3_FLASH_TYPE1 = 1,
+ FM3_FLASH_TYPE2 = 2
};
struct fm3_flash_bank {
/* Flash type '1' */
if (strcmp(CMD_ARGV[5], "mb9bfxx1.cpu") == 0) {
- fm3_info->variant = mb9bfxx1;
- fm3_info->flashtype = fm3_flash_type1;
+ fm3_info->variant = MB9BFXX1;
+ fm3_info->flashtype = FM3_FLASH_TYPE1;
} else if (strcmp(CMD_ARGV[5], "mb9bfxx2.cpu") == 0) {
- fm3_info->variant = mb9bfxx2;
- fm3_info->flashtype = fm3_flash_type1;
+ fm3_info->variant = MB9BFXX2;
+ fm3_info->flashtype = FM3_FLASH_TYPE1;
} else if (strcmp(CMD_ARGV[5], "mb9bfxx3.cpu") == 0) {
- fm3_info->variant = mb9bfxx3;
- fm3_info->flashtype = fm3_flash_type1;
+ fm3_info->variant = MB9BFXX3;
+ fm3_info->flashtype = FM3_FLASH_TYPE1;
} else if (strcmp(CMD_ARGV[5], "mb9bfxx4.cpu") == 0) {
- fm3_info->variant = mb9bfxx4;
- fm3_info->flashtype = fm3_flash_type1;
+ fm3_info->variant = MB9BFXX4;
+ fm3_info->flashtype = FM3_FLASH_TYPE1;
} else if (strcmp(CMD_ARGV[5], "mb9bfxx5.cpu") == 0) {
- fm3_info->variant = mb9bfxx5;
- fm3_info->flashtype = fm3_flash_type1;
+ fm3_info->variant = MB9BFXX5;
+ fm3_info->flashtype = FM3_FLASH_TYPE1;
} else if (strcmp(CMD_ARGV[5], "mb9bfxx6.cpu") == 0) {
- fm3_info->variant = mb9bfxx6;
- fm3_info->flashtype = fm3_flash_type1;
+ fm3_info->variant = MB9BFXX6;
+ fm3_info->flashtype = FM3_FLASH_TYPE1;
} else if (strcmp(CMD_ARGV[5], "mb9bfxx7.cpu") == 0) {
- fm3_info->variant = mb9bfxx7;
- fm3_info->flashtype = fm3_flash_type1;
+ fm3_info->variant = MB9BFXX7;
+ fm3_info->flashtype = FM3_FLASH_TYPE1;
} else if (strcmp(CMD_ARGV[5], "mb9bfxx8.cpu") == 0) {
- fm3_info->variant = mb9bfxx8;
- fm3_info->flashtype = fm3_flash_type1;
+ fm3_info->variant = MB9BFXX8;
+ fm3_info->flashtype = FM3_FLASH_TYPE1;
} else if (strcmp(CMD_ARGV[5], "mb9afxx1.cpu") == 0) { /* Flash type '2' */
- fm3_info->variant = mb9afxx1;
- fm3_info->flashtype = fm3_flash_type2;
+ fm3_info->variant = MB9AFXX1;
+ fm3_info->flashtype = FM3_FLASH_TYPE2;
} else if (strcmp(CMD_ARGV[5], "mb9afxx2.cpu") == 0) {
- fm3_info->variant = mb9afxx2;
- fm3_info->flashtype = fm3_flash_type2;
+ fm3_info->variant = MB9AFXX2;
+ fm3_info->flashtype = FM3_FLASH_TYPE2;
} else if (strcmp(CMD_ARGV[5], "mb9afxx3.cpu") == 0) {
- fm3_info->variant = mb9afxx3;
- fm3_info->flashtype = fm3_flash_type2;
+ fm3_info->variant = MB9AFXX3;
+ fm3_info->flashtype = FM3_FLASH_TYPE2;
} else if (strcmp(CMD_ARGV[5], "mb9afxx4.cpu") == 0) {
- fm3_info->variant = mb9afxx4;
- fm3_info->flashtype = fm3_flash_type2;
+ fm3_info->variant = MB9AFXX4;
+ fm3_info->flashtype = FM3_FLASH_TYPE2;
} else if (strcmp(CMD_ARGV[5], "mb9afxx5.cpu") == 0) {
- fm3_info->variant = mb9afxx5;
- fm3_info->flashtype = fm3_flash_type2;
+ fm3_info->variant = MB9AFXX5;
+ fm3_info->flashtype = FM3_FLASH_TYPE2;
} else if (strcmp(CMD_ARGV[5], "mb9afxx6.cpu") == 0) {
- fm3_info->variant = mb9afxx6;
- fm3_info->flashtype = fm3_flash_type2;
+ fm3_info->variant = MB9AFXX6;
+ fm3_info->flashtype = FM3_FLASH_TYPE2;
} else if (strcmp(CMD_ARGV[5], "mb9afxx7.cpu") == 0) {
- fm3_info->variant = mb9afxx7;
- fm3_info->flashtype = fm3_flash_type2;
+ fm3_info->variant = MB9AFXX7;
+ fm3_info->flashtype = FM3_FLASH_TYPE2;
} else if (strcmp(CMD_ARGV[5], "mb9afxx8.cpu") == 0) {
- fm3_info->variant = mb9afxx8;
- fm3_info->flashtype = fm3_flash_type2;
+ fm3_info->variant = MB9AFXX8;
+ fm3_info->flashtype = FM3_FLASH_TYPE2;
}
/* unknown Flash type */
u32_flash_type = (uint32_t) fm3_info->flashtype;
- if (u32_flash_type == fm3_flash_type1) {
+ if (u32_flash_type == FM3_FLASH_TYPE1) {
u32_flash_seq_address1 = 0x00001550;
u32_flash_seq_address2 = 0x00000AA8;
- } else if (u32_flash_type == fm3_flash_type2) {
+ } else if (u32_flash_type == FM3_FLASH_TYPE2) {
u32_flash_seq_address1 = 0x00000AA8;
u32_flash_seq_address2 = 0x00000554;
} else {
if (retval != ERROR_OK)
return retval;
}
- bank->sectors[sector].is_erased = 1;
}
target_free_working_area(target, write_algorithm);
u32_flash_type = (uint32_t) fm3_info->flashtype;
- if (u32_flash_type == fm3_flash_type1) {
+ if (u32_flash_type == FM3_FLASH_TYPE1) {
u32_flash_seq_address1 = 0x00001550;
u32_flash_seq_address2 = 0x00000AA8;
- } else if (u32_flash_type == fm3_flash_type2) {
+ } else if (u32_flash_type == FM3_FLASH_TYPE2) {
u32_flash_seq_address1 = 0x00000AA8;
u32_flash_seq_address2 = 0x00000554;
} else {
bank->sectors[1].is_erased = -1;
bank->sectors[1].is_protected = -1;
- if ((fm3_info->variant == mb9bfxx1)
- || (fm3_info->variant == mb9afxx1)) {
+ if ((fm3_info->variant == MB9BFXX1)
+ || (fm3_info->variant == MB9AFXX1)) {
num_pages = 3;
bank->size = 64 * 1024; /* bytes */
bank->num_sectors = num_pages;
bank->sectors[2].is_protected = -1;
}
- if ((fm3_info->variant == mb9bfxx2)
- || (fm3_info->variant == mb9bfxx4)
- || (fm3_info->variant == mb9bfxx5)
- || (fm3_info->variant == mb9bfxx6)
- || (fm3_info->variant == mb9bfxx7)
- || (fm3_info->variant == mb9bfxx8)
- || (fm3_info->variant == mb9afxx2)
- || (fm3_info->variant == mb9afxx4)
- || (fm3_info->variant == mb9afxx5)
- || (fm3_info->variant == mb9afxx6)
- || (fm3_info->variant == mb9afxx7)
- || (fm3_info->variant == mb9afxx8)) {
+ if ((fm3_info->variant == MB9BFXX2)
+ || (fm3_info->variant == MB9BFXX4)
+ || (fm3_info->variant == MB9BFXX5)
+ || (fm3_info->variant == MB9BFXX6)
+ || (fm3_info->variant == MB9BFXX7)
+ || (fm3_info->variant == MB9BFXX8)
+ || (fm3_info->variant == MB9AFXX2)
+ || (fm3_info->variant == MB9AFXX4)
+ || (fm3_info->variant == MB9AFXX5)
+ || (fm3_info->variant == MB9AFXX6)
+ || (fm3_info->variant == MB9AFXX7)
+ || (fm3_info->variant == MB9AFXX8)) {
num_pages = 3;
bank->size = 128 * 1024; /* bytes */
bank->num_sectors = num_pages;
bank->sectors[2].is_protected = -1;
}
- if ((fm3_info->variant == mb9bfxx4)
- || (fm3_info->variant == mb9bfxx5)
- || (fm3_info->variant == mb9bfxx6)
- || (fm3_info->variant == mb9bfxx7)
- || (fm3_info->variant == mb9bfxx8)
- || (fm3_info->variant == mb9afxx4)
- || (fm3_info->variant == mb9afxx5)
- || (fm3_info->variant == mb9afxx6)
- || (fm3_info->variant == mb9afxx7)
- || (fm3_info->variant == mb9afxx8)) {
+ if ((fm3_info->variant == MB9BFXX4)
+ || (fm3_info->variant == MB9BFXX5)
+ || (fm3_info->variant == MB9BFXX6)
+ || (fm3_info->variant == MB9BFXX7)
+ || (fm3_info->variant == MB9BFXX8)
+ || (fm3_info->variant == MB9AFXX4)
+ || (fm3_info->variant == MB9AFXX5)
+ || (fm3_info->variant == MB9AFXX6)
+ || (fm3_info->variant == MB9AFXX7)
+ || (fm3_info->variant == MB9AFXX8)) {
num_pages = 4;
bank->size = 256 * 1024; /* bytes */
bank->num_sectors = num_pages;
bank->sectors[3].is_protected = -1;
}
- if ((fm3_info->variant == mb9bfxx5)
- || (fm3_info->variant == mb9bfxx6)
- || (fm3_info->variant == mb9bfxx7)
- || (fm3_info->variant == mb9bfxx8)
- || (fm3_info->variant == mb9afxx5)
- || (fm3_info->variant == mb9afxx6)
- || (fm3_info->variant == mb9afxx7)
- || (fm3_info->variant == mb9afxx8)) {
+ if ((fm3_info->variant == MB9BFXX5)
+ || (fm3_info->variant == MB9BFXX6)
+ || (fm3_info->variant == MB9BFXX7)
+ || (fm3_info->variant == MB9BFXX8)
+ || (fm3_info->variant == MB9AFXX5)
+ || (fm3_info->variant == MB9AFXX6)
+ || (fm3_info->variant == MB9AFXX7)
+ || (fm3_info->variant == MB9AFXX8)) {
num_pages = 5;
bank->size = 384 * 1024; /* bytes */
bank->num_sectors = num_pages;
bank->sectors[4].is_protected = -1;
}
- if ((fm3_info->variant == mb9bfxx6)
- || (fm3_info->variant == mb9bfxx7)
- || (fm3_info->variant == mb9bfxx8)
- || (fm3_info->variant == mb9afxx6)
- || (fm3_info->variant == mb9afxx7)
- || (fm3_info->variant == mb9afxx8)) {
+ if ((fm3_info->variant == MB9BFXX6)
+ || (fm3_info->variant == MB9BFXX7)
+ || (fm3_info->variant == MB9BFXX8)
+ || (fm3_info->variant == MB9AFXX6)
+ || (fm3_info->variant == MB9AFXX7)
+ || (fm3_info->variant == MB9AFXX8)) {
num_pages = 6;
bank->size = 512 * 1024; /* bytes */
bank->num_sectors = num_pages;
bank->sectors[5].is_protected = -1;
}
- if ((fm3_info->variant == mb9bfxx7)
- || (fm3_info->variant == mb9bfxx8)
- || (fm3_info->variant == mb9afxx7)
- || (fm3_info->variant == mb9afxx8)) {
+ if ((fm3_info->variant == MB9BFXX7)
+ || (fm3_info->variant == MB9BFXX8)
+ || (fm3_info->variant == MB9AFXX7)
+ || (fm3_info->variant == MB9AFXX8)) {
num_pages = 8;
bank->size = 768 * 1024; /* bytes */
bank->num_sectors = num_pages;
bank->sectors[7].is_protected = -1;
}
- if ((fm3_info->variant == mb9bfxx8)
- || (fm3_info->variant == mb9afxx8)) {
+ if ((fm3_info->variant == MB9BFXX8)
+ || (fm3_info->variant == MB9AFXX8)) {
num_pages = 10;
bank->size = 1024 * 1024; /* bytes */
bank->num_sectors = num_pages;
u32_flash_type = (uint32_t) fm3_info2->flashtype;
- if (u32_flash_type == fm3_flash_type1) {
+ if (u32_flash_type == FM3_FLASH_TYPE1) {
LOG_INFO("*** Erasing mb9bfxxx type");
u32_flash_seq_address1 = 0x00001550;
u32_flash_seq_address2 = 0x00000AA8;
- } else if (u32_flash_type == fm3_flash_type2) {
+ } else if (u32_flash_type == FM3_FLASH_TYPE2) {
LOG_INFO("*** Erasing mb9afxxx type");
u32_flash_seq_address1 = 0x00000AA8;
u32_flash_seq_address2 = 0x00000554;
struct flash_bank *bank;
int retval = CALL_COMMAND_HANDLER(flash_command_get_bank, 0, &bank);
- if (ERROR_OK != retval)
+ if (retval != ERROR_OK)
return retval;
if (fm3_chip_erase(bank) == ERROR_OK) {
- /* set all sectors as erased */
- for (unsigned int i = 0; i < bank->num_sectors; i++)
- bank->sectors[i].is_erased = 1;
-
command_print(CMD, "fm3 chip erase complete");
} else {
command_print(CMD, "fm3 chip erase failed");