diff options
Diffstat (limited to 'drivers/scsi/imm.c')
| -rw-r--r-- | drivers/scsi/imm.c | 46 | 
1 files changed, 15 insertions, 31 deletions
diff --git a/drivers/scsi/imm.c b/drivers/scsi/imm.c index 4734ab0b3ff..89a8266560d 100644 --- a/drivers/scsi/imm.c +++ b/drivers/scsi/imm.c @@ -3,7 +3,7 @@   *    * (The IMM is the embedded controller in the ZIP Plus drive.)   *  - * My unoffical company acronym list is 21 pages long: + * My unofficial company acronym list is 21 pages long:   *      FLA:    Four letter acronym with built in facility for   *              future expansion to five letters.   */ @@ -121,45 +121,26 @@ static inline void imm_pb_release(imm_struct *dev)   * testing...   * Also gives a method to use a script to obtain optimum timings (TODO)   */ -static inline int imm_proc_write(imm_struct *dev, char *buffer, int length) +static int imm_write_info(struct Scsi_Host *host, char *buffer, int length)  { -	unsigned long x; +	imm_struct *dev = imm_dev(host);  	if ((length > 5) && (strncmp(buffer, "mode=", 5) == 0)) { -		x = simple_strtoul(buffer + 5, NULL, 0); -		dev->mode = x; +		dev->mode = simple_strtoul(buffer + 5, NULL, 0);  		return length;  	}  	printk("imm /proc: invalid variable\n"); -	return (-EINVAL); +	return -EINVAL;  } -static int imm_proc_info(struct Scsi_Host *host, char *buffer, char **start, -			off_t offset, int length, int inout) +static int imm_show_info(struct seq_file *m, struct Scsi_Host *host)  {  	imm_struct *dev = imm_dev(host); -	int len = 0; - -	if (inout) -		return imm_proc_write(dev, buffer, length); -	len += sprintf(buffer + len, "Version : %s\n", IMM_VERSION); -	len += -	    sprintf(buffer + len, "Parport : %s\n", -		    dev->dev->port->name); -	len += -	    sprintf(buffer + len, "Mode    : %s\n", -		    IMM_MODE_STRING[dev->mode]); - -	/* Request for beyond end of buffer */ -	if (offset > len) -		return 0; - -	*start = buffer + offset; -	len -= offset; -	if (len > length) -		len = length; -	return len; +	seq_printf(m, "Version : %s\n", IMM_VERSION); +	seq_printf(m, "Parport : %s\n", dev->dev->port->name); +	seq_printf(m, "Mode    : %s\n", IMM_MODE_STRING[dev->mode]); +	return 0;  }  #if IMM_DEBUG > 0 @@ -926,7 +907,7 @@ static int imm_engine(imm_struct *dev, struct scsi_cmnd *cmd)  	return 0;  } -static int imm_queuecommand(struct scsi_cmnd *cmd, +static int imm_queuecommand_lck(struct scsi_cmnd *cmd,  		void (*done)(struct scsi_cmnd *))  {  	imm_struct *dev = imm_dev(cmd->device->host); @@ -949,6 +930,8 @@ static int imm_queuecommand(struct scsi_cmnd *cmd,  	return 0;  } +static DEF_SCSI_QCMD(imm_queuecommand) +  /*   * Apparently the disk->capacity attribute is off by 1 sector    * for all disk drives.  We add the one here, but it should really @@ -1116,7 +1099,8 @@ static int imm_adjust_queue(struct scsi_device *device)  static struct scsi_host_template imm_template = {  	.module			= THIS_MODULE,  	.proc_name		= "imm", -	.proc_info		= imm_proc_info, +	.show_info		= imm_show_info, +	.write_info		= imm_write_info,  	.name			= "Iomega VPI2 (imm) interface",  	.queuecommand		= imm_queuecommand,  	.eh_abort_handler	= imm_abort,  | 
