+ } else if (lpc2000_info->variant == lpc4300) {
+ switch (bank->size) {
+ case 256 * 1024:
+ bank->num_sectors = 11;
+ break;
+ case 384 * 1024:
+ bank->num_sectors = 13;
+ break;
+ case 512 * 1024:
+ bank->num_sectors = 15;
+ break;
+ default:
+ LOG_ERROR("BUG: unknown bank->size encountered");
+ exit(-1);
+ }
+
+ bank->sectors = malloc(sizeof(struct flash_sector) * bank->num_sectors);
+
+ for (int i = 0; i < bank->num_sectors; i++) {
+ bank->sectors[i].offset = offset;
+ /* sectors 0-7 are 8kB-sized, 8 and above are 64kB-sized for LPC43xx devices */
+ bank->sectors[i].size = (i < 8) ? 8 * 1024 : 64 * 1024;
+ offset += bank->sectors[i].size;
+ bank->sectors[i].is_erased = -1;
+ bank->sectors[i].is_protected = 1;
+ }
+
+ } else if (lpc2000_info->variant == lpc800) {
+ lpc2000_info->cmd51_max_buffer = 1024;
+ switch (bank->size) {
+ case 4 * 1024:
+ bank->num_sectors = 4;
+ break;
+ case 8 * 1024:
+ bank->num_sectors = 8;
+ break;
+ case 16 * 1024:
+ bank->num_sectors = 16;
+ break;
+ default:
+ LOG_ERROR("BUG: unknown bank->size encountered");
+ exit(-1);
+ }
+
+ bank->sectors = malloc(sizeof(struct flash_sector) * bank->num_sectors);
+
+ for (int i = 0; i < bank->num_sectors; i++) {
+ bank->sectors[i].offset = offset;
+ /* sectors 0-15 are 1kB-sized for LPC8xx devices */
+ bank->sectors[i].size = 1 * 1024;
+ offset += bank->sectors[i].size;
+ bank->sectors[i].is_erased = -1;
+ bank->sectors[i].is_protected = 1;
+ }
+
+ } else {