enable CONFIG_VNET
[linux-2.6.git] / drivers / scsi / NCR_Q720.c
index c9e3a5f..862014d 100644 (file)
 #include <asm/io.h>
 
 #include "scsi.h"
-#include "hosts.h"
+#include <scsi/scsi_host.h>
 
 #include "ncr53c8xx.h"
 
 #include "NCR_Q720.h"
 
-static ncr_chip q720_chip __initdata = {
-       .device_id =    PSEUDO_720_ID,
+static struct ncr_chip q720_chip __initdata = {
        .revision_id =  0x0f,
-       .name =         "720",
        .burst_max =    3,
        .offset_max =   8,
        .nr_divisor =   4,
@@ -50,7 +48,7 @@ struct NCR_Q720_private {
        struct Scsi_Host        *hosts[4];
 };
 
-Scsi_Host_Template NCR_Q720_tpnt = {
+struct scsi_host_template NCR_Q720_tpnt = {
        .module                 = THIS_MODULE,
        .proc_name              = "NCR_Q720",
 };
@@ -218,7 +216,21 @@ NCR_Q720_probe(struct device *dev)
                goto out_free;
        }
        
-       mem_base = (__u32)ioremap(base_addr, mem_size);
+       if (dma_declare_coherent_memory(dev, base_addr, base_addr,
+                                       mem_size, DMA_MEMORY_MAP)
+           != DMA_MEMORY_MAP) {
+               printk(KERN_ERR "NCR_Q720: DMA declare memory failed\n");
+               goto out_release_region;
+       }
+
+       /* The first 1k of the memory buffer is a memory map of the registers
+        */
+       mem_base = (__u32)dma_mark_declared_memory_occupied(dev, base_addr,
+                                                           1024);
+       if (IS_ERR((void *)mem_base)) {
+               printk("NCR_Q720 failed to reserve memory mapped region\n");
+               goto out_release;
+       }
 
        /* now also enable accesses in asr 2 */
        asr2 = inb(io_base + 0x0a);
@@ -298,7 +310,8 @@ NCR_Q720_probe(struct device *dev)
        return 0;
 
  out_release:
-       iounmap((void *)mem_base);
+       dma_release_declared_memory(dev);
+ out_release_region:
        release_mem_region(base_addr, mem_size);
  out_free:
        kfree(p);
@@ -323,7 +336,7 @@ NCR_Q720_remove(struct device *dev)
                if(p->hosts[i])
                        NCR_Q720_remove_one(p->hosts[i]);
 
-       iounmap((void *)p->mem_base);
+       dma_release_declared_memory(dev);
        release_mem_region(p->phys_mem_base, p->mem_size);
        free_irq(p->irq, p);
        kfree(p);