static int dtc_3181e = NCR_NOT_SET;
static struct override {
- NCR5380_implementation_fields;
+ NCR5380_map_type NCR5380_map_name;
int irq;
int dma;
int board; /* Use NCR53c400, Ricoh, etc. extensions ? */
* Locks: none
*/
-int __init generic_NCR5380_detect(Scsi_Host_Template * tpnt)
+int __init generic_NCR5380_detect(struct scsi_host_template * tpnt)
{
static int current_override = 0;
int count, i;
};
int flags = 0;
struct Scsi_Host *instance;
+#ifdef CONFIG_SCSI_G_NCR5380_MEM
+ unsigned long base;
+ void __iomem *iomem;
+#endif
if (ncr_irq != NCR_NOT_SET)
overrides[0].irq = ncr_irq;
region_size = NCR5380_region_size;
}
#else
- if(!request_mem_region(overrides[current_override].NCR5380_map_name, NCR5380_region_size, "ncr5380"))
+ base = overrides[current_override].NCR5380_map_name;
+ if (!request_mem_region(base, NCR5380_region_size, "ncr5380"))
+ continue;
+ iomem = ioremap(base, NCR5380_region_size);
+ if (!iomem) {
+ release_mem_region(base, NCR5380_region_size);
continue;
+ }
#endif
instance = scsi_register(tpnt, sizeof(struct NCR5380_hostdata));
if (instance == NULL) {
#ifndef CONFIG_SCSI_G_NCR5380_MEM
release_region(overrides[current_override].NCR5380_map_name, region_size);
#else
- release_mem_region(overrides[current_override].NCR5380_map_name, NCR5380_region_size);
+ iounmap(iomem);
+ release_mem_region(base, NCR5380_region_size);
#endif
continue;
}
instance->NCR5380_instance_name = overrides[current_override].NCR5380_map_name;
#ifndef CONFIG_SCSI_G_NCR5380_MEM
instance->n_io_port = region_size;
+#else
+ ((struct NCR5380_hostdata *)instance->hostdata).iomem = iomem;
#endif
NCR5380_init(instance, flags);
{
NCR5380_local_declare();
NCR5380_setup(instance);
+
+ if (instance->irq != SCSI_IRQ_NONE)
+ free_irq(instance->irq, NULL);
+ NCR5380_exit(instance);
#ifndef CONFIG_SCSI_G_NCR5380_MEM
release_region(instance->NCR5380_instance_name, instance->n_io_port);
#else
+ iounmap(((struct NCR5380_hostdata *)instance->hostdata).iomem);
release_mem_region(instance->NCR5380_instance_name, NCR5380_region_size);
#endif
- if (instance->irq != SCSI_IRQ_NONE)
- free_irq(instance->irq, NULL);
return 0;
}
}
#else
/* implies CONFIG_SCSI_G_NCR5380_MEM */
- isa_memcpy_fromio(dst + start, NCR53C400_host_buffer + NCR5380_map_name, 128);
+ memcpy_fromio(dst + start, iomem + NCR53C400_host_buffer, 128);
#endif
start += 128;
blocks--;
}
#else
/* implies CONFIG_SCSI_G_NCR5380_MEM */
- isa_memcpy_fromio(dst + start, NCR53C400_host_buffer + NCR5380_map_name, 128);
+ memcpy_fromio(dst + start, iomem + NCR53C400_host_buffer, 128);
#endif
start += 128;
blocks--;
}
#else
/* implies CONFIG_SCSI_G_NCR5380_MEM */
- isa_memcpy_toio(NCR53C400_host_buffer + NCR5380_map_name, src + start, 128);
+ memcpy_toio(iomem + NCR53C400_host_buffer, src + start, 128);
#endif
start += 128;
blocks--;
}
#else
/* implies CONFIG_SCSI_G_NCR5380_MEM */
- isa_memcpy_toio(NCR53C400_host_buffer + NCR5380_map_name, src + start, 128);
+ memcpy_toio(iomem + NCR53C400_host_buffer, src + start, 128);
#endif
start += 128;
blocks--;
Scsi_Cmnd *ptr;
struct NCR5380_hostdata *hostdata;
#ifdef NCR5380_STATS
- Scsi_Device *dev;
+ struct scsi_device *dev;
extern const char *const scsi_device_types[MAX_SCSI_DEVICE_CODE];
#endif
#undef PRINTP
#undef ANDP
-static Scsi_Host_Template driver_template = {
+static struct scsi_host_template driver_template = {
.proc_info = generic_NCR5380_proc_info,
.name = "Generic NCR5380/NCR53C400 Scsi Driver",
.detect = generic_NCR5380_detect,
.queuecommand = generic_NCR5380_queue_command,
.eh_abort_handler = generic_NCR5380_abort,
.eh_bus_reset_handler = generic_NCR5380_bus_reset,
- .eh_device_reset_handler = generic_NCR5380_device_reset,
- .eh_host_reset_handler = generic_NCR5380_host_reset,
.bios_param = NCR5380_BIOSPARAM,
.can_queue = CAN_QUEUE,
.this_id = 7,
#include <linux/module.h>
#include "scsi_module.c"
-MODULE_PARM(ncr_irq, "i");
-MODULE_PARM(ncr_dma, "i");
-MODULE_PARM(ncr_addr, "i");
-MODULE_PARM(ncr_5380, "i");
-MODULE_PARM(ncr_53c400, "i");
-MODULE_PARM(ncr_53c400a, "i");
-MODULE_PARM(dtc_3181e, "i");
+module_param(ncr_irq, int, 0);
+module_param(ncr_dma, int, 0);
+module_param(ncr_addr, int, 0);
+module_param(ncr_5380, int, 0);
+module_param(ncr_53c400, int, 0);
+module_param(ncr_53c400a, int, 0);
+module_param(dtc_3181e, int, 0);
MODULE_LICENSE("GPL");