vserver 1.9.5.x5
[linux-2.6.git] / drivers / scsi / arm / arxescsi.c
index cd5a63c..8397c63 100644 (file)
@@ -286,14 +286,12 @@ arxescsi_probe(struct expansion_card *ec, const struct ecard_id *id)
        unsigned char *base;
        int ret;
 
-       resbase = ecard_resource_start(ec, ECARD_RES_MEMC);
-       reslen = ecard_resource_len(ec, ECARD_RES_MEMC);
-
-       if (!request_mem_region(resbase, reslen, "arxescsi")) {
-               ret = -EBUSY;
+       ret = ecard_request_resources(ec);
+       if (ret)
                goto out;
-       }
 
+       resbase = ecard_resource_start(ec, ECARD_RES_MEMC);
+       reslen = ecard_resource_len(ec, ECARD_RES_MEMC);
        base = ioremap(resbase, reslen);
        if (!base) {
                ret = -ENOMEM;
@@ -345,7 +343,7 @@ arxescsi_probe(struct expansion_card *ec, const struct ecard_id *id)
  out_unmap:
        iounmap(base);
  out_region:
-       release_mem_region(resbase, reslen);
+       ecard_release_resources(ec);
  out:
        return ret;
 }
@@ -353,20 +351,15 @@ arxescsi_probe(struct expansion_card *ec, const struct ecard_id *id)
 static void __devexit arxescsi_remove(struct expansion_card *ec)
 {
        struct Scsi_Host *host = ecard_get_drvdata(ec);
-       unsigned long resbase, reslen;
 
        ecard_set_drvdata(ec, NULL);
        fas216_remove(host);
 
        iounmap((void *)host->base);
 
-       resbase = ecard_resource_start(ec, ECARD_RES_MEMC);
-       reslen = ecard_resource_len(ec, ECARD_RES_MEMC);
-
-       release_mem_region(resbase, reslen);
-
        fas216_release(host);
        scsi_host_put(host);
+       ecard_release_resources(ec);
 }
 
 static const struct ecard_id arxescsi_cids[] = {