target->type->write_memory(target, flash_address(bank, 0, 0x0), bank->bus_width, 1, command);
                cfi_command(bank, 0xff, command);
                target->type->write_memory(target, flash_address(bank, 0, 0x0), bank->bus_width, 1, command);
+               LOG_ERROR("Could not read bank flash bank information");
                return ERROR_FLASH_BANK_INVALID;
        }
 
        {
                cfi_command(bank, 0xf0, command);
                target->type->write_memory(target, flash_address(bank, 0, 0x0), bank->bus_width, 1, command);
+               LOG_ERROR("Could not read spansion bank information");
                return ERROR_FLASH_BANK_INVALID;
        }
 
        {
                cfi_command(bank, 0xf0, command);
                target->type->write_memory(target, flash_address(bank, 0, 0x0), bank->bus_width, 1, command);
+               LOG_ERROR("Could not read atmel bank information");
                return ERROR_FLASH_BANK_INVALID;
        }
 
                        target->type->write_memory(target, flash_address(bank, 0, 0x0), bank->bus_width, 1, command);
                        cfi_command(bank, 0xff, command);
                        target->type->write_memory(target, flash_address(bank, 0, 0x0), bank->bus_width, 1, command);
+                       LOG_ERROR("Could not probe bank");
                        return ERROR_FLASH_BANK_INVALID;
                }
 
 
        image.base_address_set = 0;
        image.start_address_set = 0;
        target_t *target=info->target;
+       int retval;
        
-       if (image_open(&image, info->driverPath, NULL) != ERROR_OK)
+       if ((retval=image_open(&image, info->driverPath, NULL)) != ERROR_OK)
        {
-               return ERROR_FLASH_BANK_INVALID;
+               return retval;
        }
        
        info->start_address=image.start_address;