]> err.no Git - linux-2.6/blobdiff - drivers/ide/legacy/gayle.c
Merge branch 'timers-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel...
[linux-2.6] / drivers / ide / legacy / gayle.c
index 7baeefa870fa29b713a6c4661c7ff721831681d1..51ba085d7aa8a42d34420591cac7df3a0b5ca65b 100644 (file)
@@ -127,9 +127,8 @@ static int __init gayle_init(void)
     unsigned long phys_base, res_start, res_n;
     unsigned long base, ctrlport, irqport;
     ide_ack_intr_t *ack_intr;
-    int a4000, i;
+    int a4000, i, rc;
     hw_regs_t hw[GAYLE_NUM_HWIFS], *hws[] = { NULL, NULL, NULL, NULL };
-    u8 idx[4] = { 0xff, 0xff, 0xff, 0xff };
 
     if (!MACH_IS_AMIGA)
        return -ENODEV;
@@ -172,25 +171,19 @@ found:
                return -EBUSY;
 
     for (i = 0; i < GAYLE_NUM_PROBE_HWIFS; i++) {
-       ide_hwif_t *hwif;
-
        base = (unsigned long)ZTWO_VADDR(phys_base + i * GAYLE_NEXT_PORT);
        ctrlport = GAYLE_HAS_CONTROL_REG ? (base + GAYLE_CONTROL) : 0;
 
        gayle_setup_ports(&hw[i], base, ctrlport, irqport, ack_intr);
 
-       hwif = ide_find_port();
-       if (hwif) {
-           hwif->chipset = ide_generic;
-
-           hws[i] = &hw[i];
-           idx[i] = hwif->index;
-       }
+       hws[i] = &hw[i];
     }
 
-    ide_device_add(idx, NULL, hws);
+    rc = ide_host_add(NULL, hws, NULL);
+    if (rc)
+       release_mem_region(res_start, res_n);
 
-    return 0;
+    return rc;
 }
 
 module_init(gayle_init);