fedora core 6 1.2949 + vserver 2.2.0
[linux-2.6.git] / drivers / scsi / aacraid / sa.c
index cd586cc..511b0a9 100644 (file)
@@ -46,7 +46,7 @@
 
 #include "aacraid.h"
 
-static irqreturn_t aac_sa_intr(int irq, void *dev_id, struct pt_regs *regs)
+static irqreturn_t aac_sa_intr(int irq, void *dev_id)
 {
        struct aac_dev *dev = dev_id;
        unsigned short intstat, mask;
@@ -280,6 +280,21 @@ static int aac_sa_check_health(struct aac_dev *dev)
        return 0;
 }
 
+/**
+ *     aac_sa_ioremap
+ *     @size: mapping resize request
+ *
+ */
+static int aac_sa_ioremap(struct aac_dev * dev, u32 size)
+{
+       if (!size) {
+               iounmap(dev->regs.sa);
+               return 0;
+       }
+       dev->base = dev->regs.sa = ioremap(dev->scsi_host_ptr->base, size);
+       return (dev->base == NULL) ? -1 : 0;
+}
+
 /**
  *     aac_sa_init     -       initialize an ARM based AAC card
  *     @dev: device to configure
@@ -299,6 +314,11 @@ int aac_sa_init(struct aac_dev *dev)
        instance = dev->id;
        name     = dev->name;
 
+       if (aac_sa_ioremap(dev, dev->base_size)) {
+               printk(KERN_WARNING "%s: unable to map adapter.\n", name);
+               goto error_iounmap;
+       }
+
        /*
         *      Check to see if the board failed any self tests.
         */
@@ -341,6 +361,7 @@ int aac_sa_init(struct aac_dev *dev)
        dev->a_ops.adapter_notify = aac_sa_notify_adapter;
        dev->a_ops.adapter_sync_cmd = sa_sync_cmd;
        dev->a_ops.adapter_check_health = aac_sa_check_health;
+       dev->a_ops.adapter_ioremap = aac_sa_ioremap;
 
        /*
         *      First clear out all interrupts.  Then enable the one's that