goto release;
        }
 
-       hwif = ide_find_port();
-       if (hwif) {
-               memset(&hw, 0, sizeof(hw));
-               rapide_setup_ports(&hw, base, base + 0x818, 1 << 6, ec->irq);
-               hw.chipset = ide_generic;
-               hw.dev = &ec->dev;
+       memset(&hw, 0, sizeof(hw));
+       rapide_setup_ports(&hw, base, base + 0x818, 1 << 6, ec->irq);
+       hw.chipset = ide_generic;
+       hw.dev = &ec->dev;
 
-               ide_init_port_hw(hwif, &hw);
+       hwif = ide_find_port();
+       if (hwif == NULL) {
+               ret = -ENOENT;
+               goto release;
+       }
 
-               default_hwif_mmiops(hwif);
+       ide_init_port_hw(hwif, &hw);
+       default_hwif_mmiops(hwif);
 
-               idx[0] = hwif->index;
+       idx[0] = hwif->index;
 
-               ide_device_add(idx, &rapide_port_info);
+       ide_device_add(idx, &rapide_port_info);
 
-               ecard_set_drvdata(ec, hwif);
-               goto out;
-       }
+       ecard_set_drvdata(ec, hwif);
+       goto out;
 
  release:
        ecard_release_resources(ec);