X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=drivers%2Fscsi%2Fsim710.c;h=255886a9ac55c29b88660dd4dfdc7f7a09b0ef81;hb=43bc926fffd92024b46cafaf7350d669ba9ca884;hp=add007a81e0e673bd3b260e235ecdc4e27458dae;hpb=6a77f38946aaee1cd85eeec6cf4229b204c15071;p=linux-2.6.git diff --git a/drivers/scsi/sim710.c b/drivers/scsi/sim710.c index add007a81..255886a9a 100644 --- a/drivers/scsi/sim710.c +++ b/drivers/scsi/sim710.c @@ -47,7 +47,7 @@ #define MAX_SLOTS 8 static __u8 __initdata id_array[MAX_SLOTS] = { [0 ... MAX_SLOTS-1] = 7 }; -char *sim710; /* command line passed by insmod */ +static char *sim710; /* command line passed by insmod */ MODULE_AUTHOR("Richard Hirst"); MODULE_DESCRIPTION("Simple NCR53C710 driver"); @@ -61,7 +61,7 @@ module_param(sim710, charp, 0); #define ARG_SEP ',' #endif -__init int +static __init int param_setup(char *str) { char *pos = str, *next; @@ -75,7 +75,7 @@ param_setup(char *str) else if(!strncmp(pos, "id:", 3)) { if(slot == -1) { printk(KERN_WARNING "sim710: Must specify slot for id parameter\n"); - } else if(slot > MAX_SLOTS) { + } else if(slot >= MAX_SLOTS) { printk(KERN_WARNING "sim710: Illegal slot %d for id %d\n", slot, val); } else { id_array[slot] = val; @@ -120,25 +120,33 @@ sim710_probe_common(struct device *dev, unsigned long base_addr, } /* Fill in the three required pieces of hostdata */ - hostdata->base = base_addr; + hostdata->base = ioport_map(base_addr, 64); hostdata->differential = differential; hostdata->clock = clock; hostdata->chip710 = 1; - NCR_700_set_io_mapped(hostdata); /* and register the chip */ - if((host = NCR_700_detect(&sim710_driver_template, hostdata, dev, irq, - scsi_id)) == NULL) { + if((host = NCR_700_detect(&sim710_driver_template, hostdata, dev)) + == NULL) { printk(KERN_ERR "sim710: No host detected; card configuration problem?\n"); goto out_release; } + host->this_id = scsi_id; + host->base = base_addr; + host->irq = irq; + if (request_irq(irq, NCR_700_intr, SA_SHIRQ, "sim710", host)) { + printk(KERN_ERR "sim710: request_irq failed\n"); + goto out_put_host; + } scsi_scan_host(host); return 0; + out_put_host: + scsi_host_put(host); out_release: - release_region(host->base, 64); + release_region(base_addr, 64); out_free: kfree(hostdata); out: @@ -156,6 +164,7 @@ sim710_device_remove(struct device *dev) NCR_700_release(host); kfree(hostdata); free_irq(host->irq, host); + release_region(host->base, 64); return 0; } @@ -314,7 +323,7 @@ sim710_eisa_probe(struct device *dev) differential, scsi_id); } -struct eisa_driver sim710_eisa_driver = { +static struct eisa_driver sim710_eisa_driver = { .id_table = sim710_eisa_ids, .driver = { .name = "sim710",