Kinetis: give a reasonable default for max_flash_prog_size
max_flash_prog_size euals to pflash_sector_size_bytes for most of devices. There is no point setting max_flash_prog_size for devices without FS_PROGRAM_SECTOR capability. Check for zero sector_size to avoid div by zero exception in case of device has FlexNVM but the driver does not define nvm_sector_size_bytes Change-Id: Iaf4e007fb1ec3d24c373350410e4bebe504a4c3e Signed-off-by: Tomas Vanek <vanekt@fbl.cz> Reviewed-on: http://openocd.zylin.com/2958 Tested-by: jenkins Reviewed-by: Thomas Schmid <thomas@rfranging.com> Reviewed-by: Paul Fertser <fercerpav@gmail.com> Reviewed-by: Patrick Stewart <patstew@gmail.com>__archive__
parent
37e2fdcc95
commit
087ce864f4
|
@ -1072,7 +1072,6 @@ static int kinetis_read_part_info(struct flash_bank *bank)
|
|||
nvm_sector_size_bytes = 1<<10;
|
||||
num_blocks = 2;
|
||||
kinfo->flash_support = FS_PROGRAM_LONGWORD | FS_PROGRAM_SECTOR;
|
||||
kinfo->max_flash_prog_size = 1<<10;
|
||||
break;
|
||||
case KINETIS_K_SDID_K10_M72:
|
||||
case KINETIS_K_SDID_K20_M72:
|
||||
|
@ -1102,7 +1101,6 @@ static int kinetis_read_part_info(struct flash_bank *bank)
|
|||
nvm_sector_size_bytes = 2<<10;
|
||||
num_blocks = 2;
|
||||
kinfo->flash_support = FS_PROGRAM_LONGWORD | FS_PROGRAM_SECTOR;
|
||||
kinfo->max_flash_prog_size = 2<<10;
|
||||
break;
|
||||
case KINETIS_K_SDID_K10_M120:
|
||||
case KINETIS_K_SDID_K20_M120:
|
||||
|
@ -1115,7 +1113,6 @@ static int kinetis_read_part_info(struct flash_bank *bank)
|
|||
nvm_sector_size_bytes = 4<<10;
|
||||
num_blocks = 4;
|
||||
kinfo->flash_support = FS_PROGRAM_PHRASE | FS_PROGRAM_SECTOR;
|
||||
kinfo->max_flash_prog_size = 4<<10;
|
||||
break;
|
||||
default:
|
||||
LOG_ERROR("Unsupported K-family FAMID");
|
||||
|
@ -1151,7 +1148,6 @@ static int kinetis_read_part_info(struct flash_bank *bank)
|
|||
pflash_sector_size_bytes = 4<<10;
|
||||
num_blocks = 1;
|
||||
kinfo->flash_support = FS_PROGRAM_LONGWORD;
|
||||
kinfo->max_flash_prog_size = 1<<10;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
@ -1163,7 +1159,6 @@ static int kinetis_read_part_info(struct flash_bank *bank)
|
|||
nvm_sector_size_bytes = 1<<10;
|
||||
num_blocks = 1;
|
||||
kinfo->flash_support = FS_PROGRAM_LONGWORD;
|
||||
kinfo->max_flash_prog_size = 1<<10;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
@ -1372,6 +1367,17 @@ static int kinetis_read_part_info(struct flash_bank *bank)
|
|||
bank->sectors = NULL;
|
||||
}
|
||||
|
||||
if (kinfo->sector_size == 0) {
|
||||
LOG_ERROR("Unknown sector size for bank %d", bank->bank_number);
|
||||
return ERROR_FLASH_BANK_INVALID;
|
||||
}
|
||||
|
||||
if (kinfo->flash_support & FS_PROGRAM_SECTOR
|
||||
&& kinfo->max_flash_prog_size == 0) {
|
||||
kinfo->max_flash_prog_size = kinfo->sector_size;
|
||||
/* Program section size is equal to sector size by default */
|
||||
}
|
||||
|
||||
bank->num_sectors = bank->size / kinfo->sector_size;
|
||||
assert(bank->num_sectors > 0);
|
||||
bank->sectors = malloc(sizeof(struct flash_sector) * bank->num_sectors);
|
||||
|
|
Loading…
Reference in New Issue