|
@@ -25,8 +25,6 @@
|
|
|
|
|
|
***********************************************************************/
|
|
|
|
|
|
-/* $Id: nsp_cs.c,v 1.23 2003/08/18 11:09:19 elca Exp $ */
|
|
|
-
|
|
|
#include <linux/version.h>
|
|
|
#include <linux/module.h>
|
|
|
#include <linux/kernel.h>
|
|
@@ -59,7 +57,7 @@
|
|
|
#include "nsp_cs.h"
|
|
|
|
|
|
MODULE_AUTHOR("YOKOTA Hiroshi <yokota@netlab.is.tsukuba.ac.jp>");
|
|
|
-MODULE_DESCRIPTION("WorkBit NinjaSCSI-3 / NinjaSCSI-32Bi(16bit) PCMCIA SCSI host adapter module $Revision: 1.23 $");
|
|
|
+MODULE_DESCRIPTION("WorkBit NinjaSCSI-3 / NinjaSCSI-32Bi(16bit) PCMCIA SCSI host adapter module");
|
|
|
MODULE_SUPPORTED_DEVICE("sd,sr,sg,st");
|
|
|
#ifdef MODULE_LICENSE
|
|
|
MODULE_LICENSE("GPL");
|
|
@@ -83,10 +81,6 @@ static struct scsi_host_template nsp_driver_template = {
|
|
|
.proc_name = "nsp_cs",
|
|
|
.proc_info = nsp_proc_info,
|
|
|
.name = "WorkBit NinjaSCSI-3/32Bi(16bit)",
|
|
|
-#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0))
|
|
|
- .detect = nsp_detect_old,
|
|
|
- .release = nsp_release_old,
|
|
|
-#endif
|
|
|
.info = nsp_info,
|
|
|
.queuecommand = nsp_queuecommand,
|
|
|
/* .eh_abort_handler = nsp_eh_abort,*/
|
|
@@ -97,9 +91,6 @@ static struct scsi_host_template nsp_driver_template = {
|
|
|
.sg_tablesize = SG_ALL,
|
|
|
.cmd_per_lun = 1,
|
|
|
.use_clustering = DISABLE_CLUSTERING,
|
|
|
-#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,2))
|
|
|
- .use_new_eh_code = 1,
|
|
|
-#endif
|
|
|
};
|
|
|
|
|
|
static nsp_hw_data nsp_data_base; /* attach <-> detect glue */
|
|
@@ -1313,11 +1304,7 @@ static struct Scsi_Host *nsp_detect(struct scsi_host_template *sht)
|
|
|
nsp_hw_data *data_b = &nsp_data_base, *data;
|
|
|
|
|
|
nsp_dbg(NSP_DEBUG_INIT, "this_id=%d", sht->this_id);
|
|
|
-#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,5,73))
|
|
|
host = scsi_host_alloc(&nsp_driver_template, sizeof(nsp_hw_data));
|
|
|
-#else
|
|
|
- host = scsi_register(sht, sizeof(nsp_hw_data));
|
|
|
-#endif
|
|
|
if (host == NULL) {
|
|
|
nsp_dbg(NSP_DEBUG_INIT, "host failed");
|
|
|
return NULL;
|
|
@@ -1354,37 +1341,6 @@ static struct Scsi_Host *nsp_detect(struct scsi_host_template *sht)
|
|
|
return host; /* detect done. */
|
|
|
}
|
|
|
|
|
|
-#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0))
|
|
|
-static int nsp_detect_old(struct scsi_host_template *sht)
|
|
|
-{
|
|
|
- if (nsp_detect(sht) == NULL) {
|
|
|
- return 0;
|
|
|
- } else {
|
|
|
- //MOD_INC_USE_COUNT;
|
|
|
- return 1;
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-
|
|
|
-static int nsp_release_old(struct Scsi_Host *shpnt)
|
|
|
-{
|
|
|
- //nsp_hw_data *data = (nsp_hw_data *)shpnt->hostdata;
|
|
|
-
|
|
|
- /* PCMCIA Card Service dose same things below. */
|
|
|
- /* So we do nothing. */
|
|
|
- //if (shpnt->irq) {
|
|
|
- // free_irq(shpnt->irq, data->ScsiInfo);
|
|
|
- //}
|
|
|
- //if (shpnt->io_port) {
|
|
|
- // release_region(shpnt->io_port, shpnt->n_io_port);
|
|
|
- //}
|
|
|
-
|
|
|
- //MOD_DEC_USE_COUNT;
|
|
|
-
|
|
|
- return 0;
|
|
|
-}
|
|
|
-#endif
|
|
|
-
|
|
|
/*----------------------------------------------------------------*/
|
|
|
/* return info string */
|
|
|
/*----------------------------------------------------------------*/
|
|
@@ -1403,19 +1359,9 @@ static const char *nsp_info(struct Scsi_Host *shpnt)
|
|
|
nsp_dbg(NSP_DEBUG_PROC, "buffer=0x%p pos=0x%p length=%d %d\n", buffer, pos, length, length - (pos - buffer));\
|
|
|
} \
|
|
|
} while(0)
|
|
|
-static int
|
|
|
-nsp_proc_info(
|
|
|
-#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,5,73))
|
|
|
- struct Scsi_Host *host,
|
|
|
-#endif
|
|
|
- char *buffer,
|
|
|
- char **start,
|
|
|
- off_t offset,
|
|
|
- int length,
|
|
|
-#if !(LINUX_VERSION_CODE > KERNEL_VERSION(2,5,73))
|
|
|
- int hostno,
|
|
|
-#endif
|
|
|
- int inout)
|
|
|
+
|
|
|
+static int nsp_proc_info(struct Scsi_Host *host, char *buffer, char **start,
|
|
|
+ off_t offset, int length, int inout)
|
|
|
{
|
|
|
int id;
|
|
|
char *pos = buffer;
|
|
@@ -1423,24 +1369,13 @@ nsp_proc_info(
|
|
|
int speed;
|
|
|
unsigned long flags;
|
|
|
nsp_hw_data *data;
|
|
|
-#if !(LINUX_VERSION_CODE > KERNEL_VERSION(2,5,73))
|
|
|
- struct Scsi_Host *host;
|
|
|
-#else
|
|
|
int hostno;
|
|
|
-#endif
|
|
|
+
|
|
|
if (inout) {
|
|
|
return -EINVAL;
|
|
|
}
|
|
|
|
|
|
-#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,5,73))
|
|
|
hostno = host->host_no;
|
|
|
-#else
|
|
|
- /* search this HBA host */
|
|
|
- host = scsi_host_hn_get(hostno);
|
|
|
- if (host == NULL) {
|
|
|
- return -ESRCH;
|
|
|
- }
|
|
|
-#endif
|
|
|
data = (nsp_hw_data *)host->hostdata;
|
|
|
|
|
|
|
|
@@ -1675,10 +1610,6 @@ static int nsp_cs_config(struct pcmcia_device *link)
|
|
|
cistpl_cftable_entry_t dflt = { 0 };
|
|
|
struct Scsi_Host *host;
|
|
|
nsp_hw_data *data = &nsp_data_base;
|
|
|
-#if !(LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,74))
|
|
|
- struct scsi_device *dev;
|
|
|
- dev_node_t **tail, *node;
|
|
|
-#endif
|
|
|
|
|
|
nsp_dbg(NSP_DEBUG_INIT, "in");
|
|
|
|
|
@@ -1811,17 +1742,7 @@ static int nsp_cs_config(struct pcmcia_device *link)
|
|
|
goto cs_failed;
|
|
|
}
|
|
|
|
|
|
-#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,5,2))
|
|
|
host = nsp_detect(&nsp_driver_template);
|
|
|
-#else
|
|
|
- scsi_register_host(&nsp_driver_template);
|
|
|
- for (host = scsi_host_get_next(NULL); host != NULL;
|
|
|
- host = scsi_host_get_next(host)) {
|
|
|
- if (host->hostt == &nsp_driver_template) {
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
-#endif
|
|
|
|
|
|
if (host == NULL) {
|
|
|
nsp_dbg(NSP_DEBUG_INIT, "detect failed");
|
|
@@ -1829,7 +1750,6 @@ static int nsp_cs_config(struct pcmcia_device *link)
|
|
|
}
|
|
|
|
|
|
|
|
|
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,74))
|
|
|
ret = scsi_add_host (host, NULL);
|
|
|
if (ret)
|
|
|
goto cs_failed;
|
|
@@ -1840,52 +1760,6 @@ static int nsp_cs_config(struct pcmcia_device *link)
|
|
|
link->dev_node = &info->node;
|
|
|
info->host = host;
|
|
|
|
|
|
-#else
|
|
|
- nsp_dbg(NSP_DEBUG_INIT, "GET_SCSI_INFO");
|
|
|
- tail = &link->dev_node;
|
|
|
- info->ndev = 0;
|
|
|
-
|
|
|
- nsp_dbg(NSP_DEBUG_INIT, "host=0x%p", host);
|
|
|
-
|
|
|
- for (dev = host->host_queue; dev != NULL; dev = dev->next) {
|
|
|
- unsigned long id;
|
|
|
- id = (dev->id & 0x0f) + ((dev->lun & 0x0f) << 4) +
|
|
|
- ((dev->channel & 0x0f) << 8) +
|
|
|
- ((dev->host->host_no & 0x0f) << 12);
|
|
|
- node = &info->node[info->ndev];
|
|
|
- node->minor = 0;
|
|
|
- switch (dev->type) {
|
|
|
- case TYPE_TAPE:
|
|
|
- node->major = SCSI_TAPE_MAJOR;
|
|
|
- snprintf(node->dev_name, sizeof(node->dev_name), "st#%04lx", id);
|
|
|
- break;
|
|
|
- case TYPE_DISK:
|
|
|
- case TYPE_MOD:
|
|
|
- node->major = SCSI_DISK0_MAJOR;
|
|
|
- snprintf(node->dev_name, sizeof(node->dev_name), "sd#%04lx", id);
|
|
|
- break;
|
|
|
- case TYPE_ROM:
|
|
|
- case TYPE_WORM:
|
|
|
- node->major = SCSI_CDROM_MAJOR;
|
|
|
- snprintf(node->dev_name, sizeof(node->dev_name), "sr#%04lx", id);
|
|
|
- break;
|
|
|
- default:
|
|
|
- node->major = SCSI_GENERIC_MAJOR;
|
|
|
- snprintf(node->dev_name, sizeof(node->dev_name), "sg#%04lx", id);
|
|
|
- break;
|
|
|
- }
|
|
|
- *tail = node; tail = &node->next;
|
|
|
- info->ndev++;
|
|
|
- info->host = dev->host;
|
|
|
- }
|
|
|
-
|
|
|
- *tail = NULL;
|
|
|
- if (info->ndev == 0) {
|
|
|
- nsp_msg(KERN_INFO, "no SCSI devices found");
|
|
|
- }
|
|
|
- nsp_dbg(NSP_DEBUG_INIT, "host=0x%p", host);
|
|
|
-#endif
|
|
|
-
|
|
|
/* Finally, report what we've done */
|
|
|
printk(KERN_INFO "nsp_cs: index 0x%02x: ",
|
|
|
link->conf.ConfigIndex);
|
|
@@ -1938,13 +1812,9 @@ static void nsp_cs_release(struct pcmcia_device *link)
|
|
|
nsp_dbg(NSP_DEBUG_INIT, "link=0x%p", link);
|
|
|
|
|
|
/* Unlink the device chain */
|
|
|
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,2))
|
|
|
if (info->host != NULL) {
|
|
|
scsi_remove_host(info->host);
|
|
|
}
|
|
|
-#else
|
|
|
- scsi_unregister_host(&nsp_driver_template);
|
|
|
-#endif
|
|
|
link->dev_node = NULL;
|
|
|
|
|
|
if (link->win) {
|
|
@@ -1954,11 +1824,9 @@ static void nsp_cs_release(struct pcmcia_device *link)
|
|
|
}
|
|
|
pcmcia_disable_device(link);
|
|
|
|
|
|
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,2))
|
|
|
if (info->host != NULL) {
|
|
|
scsi_host_put(info->host);
|
|
|
}
|
|
|
-#endif
|
|
|
} /* nsp_cs_release */
|
|
|
|
|
|
static int nsp_cs_suspend(struct pcmcia_device *link)
|
|
@@ -2005,7 +1873,6 @@ static int nsp_cs_resume(struct pcmcia_device *link)
|
|
|
/*======================================================================*
|
|
|
* module entry point
|
|
|
*====================================================================*/
|
|
|
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,68))
|
|
|
static struct pcmcia_device_id nsp_cs_ids[] = {
|
|
|
PCMCIA_DEVICE_PROD_ID123("IO DATA", "CBSC16 ", "1", 0x547e66dc, 0x0d63a3fd, 0x51de003a),
|
|
|
PCMCIA_DEVICE_PROD_ID123("KME ", "SCSI-CARD-001", "1", 0x534c02bc, 0x52008408, 0x51de003a),
|
|
@@ -2029,28 +1896,12 @@ static struct pcmcia_driver nsp_driver = {
|
|
|
.suspend = nsp_cs_suspend,
|
|
|
.resume = nsp_cs_resume,
|
|
|
};
|
|
|
-#endif
|
|
|
|
|
|
static int __init nsp_cs_init(void)
|
|
|
{
|
|
|
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,68))
|
|
|
nsp_msg(KERN_INFO, "loading...");
|
|
|
|
|
|
return pcmcia_register_driver(&nsp_driver);
|
|
|
-#else
|
|
|
- servinfo_t serv;
|
|
|
-
|
|
|
- nsp_msg(KERN_INFO, "loading...");
|
|
|
- pcmcia_get_card_services_info(&serv);
|
|
|
- if (serv.Revision != CS_RELEASE_CODE) {
|
|
|
- nsp_msg(KERN_DEBUG, "Card Services release does not match!");
|
|
|
- return -EINVAL;
|
|
|
- }
|
|
|
- register_pcmcia_driver(&dev_info, &nsp_cs_attach, &nsp_cs_detach);
|
|
|
-
|
|
|
- nsp_dbg(NSP_DEBUG_INIT, "out");
|
|
|
- return 0;
|
|
|
-#endif
|
|
|
}
|
|
|
|
|
|
static void __exit nsp_cs_exit(void)
|