Merge master.kernel.org:/pub/scm/linux/kernel/git/lethal/sh64-2.6
[powerpc.git] / drivers / ide / arm / icside.c
index e2953fc..66f8262 100644 (file)
@@ -342,7 +342,7 @@ static int icside_dma_check(ide_drive_t *drive)
         * Enable DMA on any drive that has multiword DMA
         */
        if (id->field_valid & 2) {
-               xfer_mode = ide_dma_speed(drive, 0);
+               xfer_mode = ide_max_dma_mode(drive);
                goto out;
        }
 
@@ -565,8 +565,7 @@ icside_register_v5(struct icside_state *state, struct expansion_card *ec)
        ide_hwif_t *hwif;
        void __iomem *base;
 
-       base = ioremap(ecard_resource_start(ec, ECARD_RES_MEMC),
-                      ecard_resource_len(ec, ECARD_RES_MEMC));
+       base = ecardm_iomap(ec, ECARD_RES_MEMC, 0, 0);
        if (!base)
                return -ENOMEM;
 
@@ -574,8 +573,8 @@ icside_register_v5(struct icside_state *state, struct expansion_card *ec)
 
        ec->irqaddr  = base + ICS_ARCIN_V5_INTRSTAT;
        ec->irqmask  = 1;
-       ec->irq_data = state;
-       ec->ops      = &icside_ops_arcin_v5;
+
+       ecard_setirq(ec, &icside_ops_arcin_v5, state);
 
        /*
         * Be on the safe side - disable interrupts
@@ -583,15 +582,14 @@ icside_register_v5(struct icside_state *state, struct expansion_card *ec)
        icside_irqdisable_arcin_v5(ec, 0);
 
        hwif = icside_setup(base, &icside_cardinfo_v5, ec);
-       if (!hwif) {
-               iounmap(base);
+       if (!hwif)
                return -ENODEV;
-       }
 
        state->hwif[0] = hwif;
 
        probe_hwif_init(hwif);
-       create_proc_ide_interfaces();
+
+       ide_proc_register_port(hwif);
 
        return 0;
 }
@@ -604,8 +602,7 @@ icside_register_v6(struct icside_state *state, struct expansion_card *ec)
        unsigned int sel = 0;
        int ret;
 
-       ioc_base = ioremap(ecard_resource_start(ec, ECARD_RES_IOCFAST),
-                          ecard_resource_len(ec, ECARD_RES_IOCFAST));
+       ioc_base = ecardm_iomap(ec, ECARD_RES_IOCFAST, 0, 0);
        if (!ioc_base) {
                ret = -ENOMEM;
                goto out;
@@ -614,11 +611,10 @@ icside_register_v6(struct icside_state *state, struct expansion_card *ec)
        easi_base = ioc_base;
 
        if (ecard_resource_flags(ec, ECARD_RES_EASI)) {
-               easi_base = ioremap(ecard_resource_start(ec, ECARD_RES_EASI),
-                                   ecard_resource_len(ec, ECARD_RES_EASI));
+               easi_base = ecardm_iomap(ec, ECARD_RES_EASI, 0, 0);
                if (!easi_base) {
                        ret = -ENOMEM;
-                       goto unmap_slot;
+                       goto out;
                }
 
                /*
@@ -629,8 +625,7 @@ icside_register_v6(struct icside_state *state, struct expansion_card *ec)
 
        writeb(sel, ioc_base);
 
-       ec->irq_data      = state;
-       ec->ops           = &icside_ops_arcin_v6;
+       ecard_setirq(ec, &icside_ops_arcin_v6, state);
 
        state->irq_port   = easi_base;
        state->ioc_base   = ioc_base;
@@ -648,7 +643,7 @@ icside_register_v6(struct icside_state *state, struct expansion_card *ec)
 
        if (!hwif || !mate) {
                ret = -ENODEV;
-               goto unmap_port;
+               goto out;
        }
 
        state->hwif[0]    = hwif;
@@ -679,15 +674,12 @@ icside_register_v6(struct icside_state *state, struct expansion_card *ec)
 
        probe_hwif_init(hwif);
        probe_hwif_init(mate);
-       create_proc_ide_interfaces();
+
+       ide_proc_register_port(hwif);
+       ide_proc_register_port(mate);
 
        return 0;
 
- unmap_port:
-       if (easi_base != ioc_base)
-               iounmap(easi_base);
- unmap_slot:
-       iounmap(ioc_base);
  out:
        return ret;
 }
@@ -713,8 +705,7 @@ icside_probe(struct expansion_card *ec, const struct ecard_id *id)
        state->type     = ICS_TYPE_NOTYPE;
        state->dev      = &ec->dev;
 
-       idmem = ioremap(ecard_resource_start(ec, ECARD_RES_IOCFAST),
-                       ecard_resource_len(ec, ECARD_RES_IOCFAST));
+       idmem = ecardm_iomap(ec, ECARD_RES_IOCFAST, 0, 0);
        if (idmem) {
                unsigned int type;
 
@@ -722,7 +713,7 @@ icside_probe(struct expansion_card *ec, const struct ecard_id *id)
                type |= (readb(idmem + ICS_IDENT_OFFSET + 4) & 1) << 1;
                type |= (readb(idmem + ICS_IDENT_OFFSET + 8) & 1) << 2;
                type |= (readb(idmem + ICS_IDENT_OFFSET + 12) & 1) << 3;
-               iounmap(idmem);
+               ecardm_iounmap(ec, idmem);
 
                state->type = type;
        }
@@ -790,13 +781,6 @@ static void __devexit icside_remove(struct expansion_card *ec)
        }
 
        ecard_set_drvdata(ec, NULL);
-       ec->ops = NULL;
-       ec->irq_data = NULL;
-
-       if (state->ioc_base)
-               iounmap(state->ioc_base);
-       if (state->ioc_base != state->irq_port)
-               iounmap(state->irq_port);
 
        kfree(state);
        ecard_release_resources(ec);