summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@penguin.transmeta.com>2002-10-17 22:01:26 -0700
committerLinus Torvalds <torvalds@home.transmeta.com>2002-10-17 22:01:26 -0700
commitf0212f495e32083de77cdbe8ba5ae93aa03148f5 (patch)
tree64690ce0b15a0323d8f36dd22a4fb5f16799efe7
parentd103bdbf34d5ab76a92fc0d1a4aae7b1af5c8493 (diff)
Fix up sym53c8xx driver for new scsi_host_hn_get()
infrastructure.
-rw-r--r--drivers/scsi/sym53c8xx.c41
1 files changed, 10 insertions, 31 deletions
diff --git a/drivers/scsi/sym53c8xx.c b/drivers/scsi/sym53c8xx.c
index 4e02050bd885..2085c6fc3ed1 100644
--- a/drivers/scsi/sym53c8xx.c
+++ b/drivers/scsi/sym53c8xx.c
@@ -1279,16 +1279,6 @@ static __inline__ int scsi_data_direction(Scsi_Cmnd *cmd)
#endif /* SCSI_DATA_UNKNOWN */
-/*
-** Head of list of NCR boards
-**
-** For kernel version < 1.3.70, host is retrieved by its irq level.
-** For later kernels, the internal host control block address
-** (struct ncb) is used as device id parameter of the irq stuff.
-*/
-
-static struct Scsi_Host *first_host = NULL;
-
/*
** /proc directory entry and proc_info function
@@ -5880,11 +5870,6 @@ ncr_attach (Scsi_Host_Template *tpnt, int unit, ncr_device *device)
/*
** Done.
- */
- if (!first_host)
- first_host = instance;
-
- /*
** Fill Linux host instance structure
** and return success.
*/
@@ -14228,36 +14213,30 @@ static int sym53c8xx_proc_info(char *buffer, char **start, off_t offset,
printk("sym53c8xx_proc_info: hostno=%d, func=%d\n", hostno, func);
#endif
- for (host = first_host; host; host = host->next) {
- if (host->hostt != first_host->hostt)
- continue;
- if (host->host_no == hostno) {
- host_data = (struct host_data *) host->hostdata;
- ncb = host_data->ncb;
- break;
- }
- }
+ host = scsi_host_hn_get(hostno);
+ if (!host)
+ return -EINVAL;
+ host_data = (struct host_data *) host->hostdata;
+ ncb = host_data->ncb;
+ retv = -EINVAL;
if (!ncb)
- return -EINVAL;
+ goto out;
if (func) {
#ifdef SCSI_NCR_USER_COMMAND_SUPPORT
retv = ncr_user_command(ncb, buffer, length);
-#else
- retv = -EINVAL;
#endif
- }
- else {
+ } else {
if (start)
*start = buffer;
#ifdef SCSI_NCR_USER_INFO_SUPPORT
retv = ncr_host_info(ncb, buffer, offset, length);
-#else
- retv = -EINVAL;
#endif
}
+out:
+ scsi_host_put(host);
return retv;
}