+ int bank_index = efm32x_get_bank_index(bank->base);
+ if (bank_index < 0) {
+ LOG_ERROR("Flash bank with base address %" PRIx32 " is not supported",
+ (uint32_t) bank->base);
+ return ERROR_FAIL;
+ }
+
+ /* look for an existing flash structure matching target */
+ for (struct flash_bank *bank_iter = flash_bank_list(); bank_iter; bank_iter = bank_iter->next) {
+ if (bank_iter->driver == &efm32_flash
+ && bank_iter->target == bank->target
+ && bank->driver_priv) {
+ efm32x_info = bank->driver_priv;
+ break;
+ }
+ }
+
+ if (!efm32x_info) {
+ /* target not matched, make a new one */
+ efm32x_info = calloc(1, sizeof(struct efm32x_flash_chip));
+
+ memset(efm32x_info->lb_page, 0xff, LOCKWORDS_SZ);
+ }