X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=drivers%2Fscsi%2FNCR_Q720.c;h=6237de419ba9c04dbd8ee48bd06e146a08b6b8bd;hb=6a77f38946aaee1cd85eeec6cf4229b204c15071;hp=862014d7b93bbd48b11b2ef5b00468c5eba7e8be;hpb=87fc8d1bb10cd459024a742c6a10961fefcef18f;p=linux-2.6.git diff --git a/drivers/scsi/NCR_Q720.c b/drivers/scsi/NCR_Q720.c index 862014d7b..6237de419 100644 --- a/drivers/scsi/NCR_Q720.c +++ b/drivers/scsi/NCR_Q720.c @@ -39,7 +39,7 @@ MODULE_LICENSE("GPL"); /* We needs this helper because we have up to four hosts per struct device */ struct NCR_Q720_private { struct device *dev; - __u32 mem_base; + void __iomem * mem_base; __u32 phys_mem_base; __u32 mem_size; __u8 irq; @@ -48,7 +48,7 @@ struct NCR_Q720_private { struct Scsi_Host *hosts[4]; }; -struct scsi_host_template NCR_Q720_tpnt = { +static struct scsi_host_template NCR_Q720_tpnt = { .module = THIS_MODULE, .proc_name = "NCR_Q720", }; @@ -75,7 +75,7 @@ NCR_Q720_intr(int irq, void *data, struct pt_regs * regs) static int __init NCR_Q720_probe_one(struct NCR_Q720_private *p, int siop, - int irq, int slot, __u32 paddr, __u32 vaddr) + int irq, int slot, __u32 paddr, void __iomem *vaddr) { struct ncr_device device; __u8 scsi_id; @@ -146,7 +146,7 @@ NCR_Q720_probe(struct device *dev) __u8 pos2, pos4, asr2, asr9, asr10; __u16 io_base; __u32 base_addr, mem_size; - __u32 mem_base; + void __iomem *mem_base; p = kmalloc(sizeof(*p), GFP_KERNEL); if (!p) @@ -227,7 +227,7 @@ NCR_Q720_probe(struct device *dev) */ mem_base = (__u32)dma_mark_declared_memory_occupied(dev, base_addr, 1024); - if (IS_ERR((void *)mem_base)) { + if (IS_ERR(mem_base)) { printk("NCR_Q720 failed to reserve memory mapped region\n"); goto out_release; } @@ -271,7 +271,7 @@ NCR_Q720_probe(struct device *dev) } /* disable all the siop interrupts */ for(i = 0; i < siops; i++) { - __u32 reg_scsr1 = mem_base + NCR_Q720_CHIP_REGISTER_OFFSET + void __iomem *reg_scsr1 = mem_base + NCR_Q720_CHIP_REGISTER_OFFSET + i*NCR_Q720_SIOP_SHIFT + NCR_Q720_SCSR_OFFSET + 1; __u8 scsr1 = readb(reg_scsr1); scsr1 |= 0x01; @@ -280,7 +280,7 @@ NCR_Q720_probe(struct device *dev) /* plumb in all 720 chips */ for (i = 0; i < siops; i++) { - __u32 siop_v_base = mem_base + NCR_Q720_CHIP_REGISTER_OFFSET + void __iomem *siop_v_base = mem_base + NCR_Q720_CHIP_REGISTER_OFFSET + i*NCR_Q720_SIOP_SHIFT; __u32 siop_p_base = base_addr + NCR_Q720_CHIP_REGISTER_OFFSET + i*NCR_Q720_SIOP_SHIFT; @@ -345,7 +345,7 @@ NCR_Q720_remove(struct device *dev) static short NCR_Q720_id_table[] = { NCR_Q720_MCA_ID, 0 }; -struct mca_driver NCR_Q720_driver = { +static struct mca_driver NCR_Q720_driver = { .id_table = NCR_Q720_id_table, .driver = { .name = "NCR_Q720", @@ -358,13 +358,19 @@ struct mca_driver NCR_Q720_driver = { static int __init NCR_Q720_init(void) { - return mca_register_driver(&NCR_Q720_driver); + int ret = ncr53c8xx_init(); + if (!ret) + ret = mca_register_driver(&NCR_Q720_driver); + if (ret) + ncr53c8xx_exit(); + return ret; } static void __exit NCR_Q720_exit(void) { mca_unregister_driver(&NCR_Q720_driver); + ncr53c8xx_exit(); } module_init(NCR_Q720_init);