提交 dd7ab71b 编写于 作者: A Al Viro

NCR5830: switch to ->show_info()

Signed-off-by: NAl Viro <viro@zeniv.linux.org.uk>
上级 b7654914
...@@ -695,33 +695,35 @@ static void NCR5380_print_status(struct Scsi_Host *instance) ...@@ -695,33 +695,35 @@ static void NCR5380_print_status(struct Scsi_Host *instance)
* Return the number of bytes read from or written * Return the number of bytes read from or written
*/ */
static int __maybe_unused NCR5380_write_info(struct Scsi_Host *instance,
char *buffer, int length)
{
#ifdef DTC_PUBLIC_RELEASE
dtc_wmaxi = dtc_maxi = 0;
#endif
#ifdef PAS16_PUBLIC_RELEASE
pas_wmaxi = pas_maxi = 0;
#endif
return (-ENOSYS); /* Currently this is a no-op */
}
#undef SPRINTF #undef SPRINTF
#define SPRINTF(args...) do { if(pos < buffer + length-80) pos += sprintf(pos, ## args); } while(0) #define SPRINTF(args...) seq_printf(m, ## args)
static static
char *lprint_Scsi_Cmnd(Scsi_Cmnd * cmd, char *pos, char *buffer, int length); void lprint_Scsi_Cmnd(Scsi_Cmnd * cmd, struct seq_file *m);
static static
char *lprint_command(unsigned char *cmd, char *pos, char *buffer, int len); void lprint_command(unsigned char *cmd, struct seq_file *m);
static static
char *lprint_opcode(int opcode, char *pos, char *buffer, int length); void lprint_opcode(int opcode, struct seq_file *m);
static int __maybe_unused NCR5380_proc_info(struct Scsi_Host *instance, static int __maybe_unused NCR5380_show_info(struct seq_file *m,
char *buffer, char **start, off_t offset, int length, int inout) struct Scsi_Host *instance)
{ {
char *pos = buffer;
struct NCR5380_hostdata *hostdata; struct NCR5380_hostdata *hostdata;
Scsi_Cmnd *ptr; Scsi_Cmnd *ptr;
hostdata = (struct NCR5380_hostdata *) instance->hostdata; hostdata = (struct NCR5380_hostdata *) instance->hostdata;
if (inout) { /* Has data been written to the file ? */
#ifdef DTC_PUBLIC_RELEASE
dtc_wmaxi = dtc_maxi = 0;
#endif
#ifdef PAS16_PUBLIC_RELEASE
pas_wmaxi = pas_maxi = 0;
#endif
return (-ENOSYS); /* Currently this is a no-op */
}
SPRINTF("NCR5380 core release=%d. ", NCR5380_PUBLIC_RELEASE); SPRINTF("NCR5380 core release=%d. ", NCR5380_PUBLIC_RELEASE);
if (((struct NCR5380_hostdata *) instance->hostdata)->flags & FLAG_NCR53C400) if (((struct NCR5380_hostdata *) instance->hostdata)->flags & FLAG_NCR53C400)
SPRINTF("ncr53c400 release=%d. ", NCR53C400_PUBLIC_RELEASE); SPRINTF("ncr53c400 release=%d. ", NCR53C400_PUBLIC_RELEASE);
...@@ -755,46 +757,37 @@ static int __maybe_unused NCR5380_proc_info(struct Scsi_Host *instance, ...@@ -755,46 +757,37 @@ static int __maybe_unused NCR5380_proc_info(struct Scsi_Host *instance,
if (!hostdata->connected) if (!hostdata->connected)
SPRINTF("scsi%d: no currently connected command\n", instance->host_no); SPRINTF("scsi%d: no currently connected command\n", instance->host_no);
else else
pos = lprint_Scsi_Cmnd((Scsi_Cmnd *) hostdata->connected, pos, buffer, length); lprint_Scsi_Cmnd((Scsi_Cmnd *) hostdata->connected, m);
SPRINTF("scsi%d: issue_queue\n", instance->host_no); SPRINTF("scsi%d: issue_queue\n", instance->host_no);
for (ptr = (Scsi_Cmnd *) hostdata->issue_queue; ptr; ptr = (Scsi_Cmnd *) ptr->host_scribble) for (ptr = (Scsi_Cmnd *) hostdata->issue_queue; ptr; ptr = (Scsi_Cmnd *) ptr->host_scribble)
pos = lprint_Scsi_Cmnd(ptr, pos, buffer, length); lprint_Scsi_Cmnd(ptr, m);
SPRINTF("scsi%d: disconnected_queue\n", instance->host_no); SPRINTF("scsi%d: disconnected_queue\n", instance->host_no);
for (ptr = (Scsi_Cmnd *) hostdata->disconnected_queue; ptr; ptr = (Scsi_Cmnd *) ptr->host_scribble) for (ptr = (Scsi_Cmnd *) hostdata->disconnected_queue; ptr; ptr = (Scsi_Cmnd *) ptr->host_scribble)
pos = lprint_Scsi_Cmnd(ptr, pos, buffer, length); lprint_Scsi_Cmnd(ptr, m);
spin_unlock_irq(instance->host_lock); spin_unlock_irq(instance->host_lock);
return 0;
*start = buffer;
if (pos - buffer < offset)
return 0;
else if (pos - buffer - offset < length)
return pos - buffer - offset;
return length;
} }
static char *lprint_Scsi_Cmnd(Scsi_Cmnd * cmd, char *pos, char *buffer, int length) static void lprint_Scsi_Cmnd(Scsi_Cmnd * cmd, struct seq_file *m)
{ {
SPRINTF("scsi%d : destination target %d, lun %d\n", cmd->device->host->host_no, cmd->device->id, cmd->device->lun); SPRINTF("scsi%d : destination target %d, lun %d\n", cmd->device->host->host_no, cmd->device->id, cmd->device->lun);
SPRINTF(" command = "); SPRINTF(" command = ");
pos = lprint_command(cmd->cmnd, pos, buffer, length); lprint_command(cmd->cmnd, m);
return (pos);
} }
static char *lprint_command(unsigned char *command, char *pos, char *buffer, int length) static void lprint_command(unsigned char *command, struct seq_file *m)
{ {
int i, s; int i, s;
pos = lprint_opcode(command[0], pos, buffer, length); lprint_opcode(command[0], m);
for (i = 1, s = COMMAND_SIZE(command[0]); i < s; ++i) for (i = 1, s = COMMAND_SIZE(command[0]); i < s; ++i)
SPRINTF("%02x ", command[i]); SPRINTF("%02x ", command[i]);
SPRINTF("\n"); SPRINTF("\n");
return (pos);
} }
static char *lprint_opcode(int opcode, char *pos, char *buffer, int length) static void lprint_opcode(int opcode, struct seq_file *m)
{ {
SPRINTF("%2d (0x%02x)", opcode, opcode); SPRINTF("%2d (0x%02x)", opcode, opcode);
return (pos);
} }
......
...@@ -314,8 +314,10 @@ static void NCR5380_print(struct Scsi_Host *instance); ...@@ -314,8 +314,10 @@ static void NCR5380_print(struct Scsi_Host *instance);
static int NCR5380_abort(Scsi_Cmnd * cmd); static int NCR5380_abort(Scsi_Cmnd * cmd);
static int NCR5380_bus_reset(Scsi_Cmnd * cmd); static int NCR5380_bus_reset(Scsi_Cmnd * cmd);
static int NCR5380_queue_command(struct Scsi_Host *, struct scsi_cmnd *); static int NCR5380_queue_command(struct Scsi_Host *, struct scsi_cmnd *);
static int __maybe_unused NCR5380_proc_info(struct Scsi_Host *instance, static int __maybe_unused NCR5380_show_info(struct seq_file *,
char *buffer, char **start, off_t offset, int length, int inout); struct Scsi_Host *);
static int __maybe_unused NCR5380_write_info(struct Scsi_Host *instance,
char *buffer, int length);
static void NCR5380_reselect(struct Scsi_Host *instance); static void NCR5380_reselect(struct Scsi_Host *instance);
static int NCR5380_select(struct Scsi_Host *instance, Scsi_Cmnd * cmd, int tag); static int NCR5380_select(struct Scsi_Host *instance, Scsi_Cmnd * cmd, int tag);
......
...@@ -30,7 +30,6 @@ ...@@ -30,7 +30,6 @@
#define NCR5380_write(reg, value) cumanascsi_write(_instance, reg, value) #define NCR5380_write(reg, value) cumanascsi_write(_instance, reg, value)
#define NCR5380_intr cumanascsi_intr #define NCR5380_intr cumanascsi_intr
#define NCR5380_queue_command cumanascsi_queue_command #define NCR5380_queue_command cumanascsi_queue_command
#define NCR5380_proc_info cumanascsi_proc_info
#define NCR5380_implementation_fields \ #define NCR5380_implementation_fields \
unsigned ctrl; \ unsigned ctrl; \
......
...@@ -31,7 +31,8 @@ ...@@ -31,7 +31,8 @@
#define NCR5380_write(reg, value) writeb(value, _base + ((reg) << 2)) #define NCR5380_write(reg, value) writeb(value, _base + ((reg) << 2))
#define NCR5380_intr oakscsi_intr #define NCR5380_intr oakscsi_intr
#define NCR5380_queue_command oakscsi_queue_command #define NCR5380_queue_command oakscsi_queue_command
#define NCR5380_proc_info oakscsi_proc_info #define NCR5380_show_info oakscsi_show_info
#define NCR5380_write_info oakscsi_write_info
#define NCR5380_implementation_fields \ #define NCR5380_implementation_fields \
void __iomem *base void __iomem *base
...@@ -115,7 +116,8 @@ printk("reading %p len %d\n", addr, len); ...@@ -115,7 +116,8 @@ printk("reading %p len %d\n", addr, len);
static struct scsi_host_template oakscsi_template = { static struct scsi_host_template oakscsi_template = {
.module = THIS_MODULE, .module = THIS_MODULE,
.proc_info = oakscsi_proc_info, .show_info = oakscsi_show_info,
.write_info = oakscsi_write_info,
.name = "Oak 16-bit SCSI", .name = "Oak 16-bit SCSI",
.info = oakscsi_info, .info = oakscsi_info,
.queuecommand = oakscsi_queue_command, .queuecommand = oakscsi_queue_command,
......
...@@ -216,7 +216,8 @@ static int __init dtc_detect(struct scsi_host_template * tpnt) ...@@ -216,7 +216,8 @@ static int __init dtc_detect(struct scsi_host_template * tpnt)
int sig, count; int sig, count;
tpnt->proc_name = "dtc3x80"; tpnt->proc_name = "dtc3x80";
tpnt->proc_info = &dtc_proc_info; tpnt->show_info = dtc_show_info;
tpnt->write_info = dtc_write_info;
for (count = 0; current_override < NO_OVERRIDES; ++current_override) { for (count = 0; current_override < NO_OVERRIDES; ++current_override) {
addr = 0; addr = 0;
......
...@@ -88,7 +88,8 @@ static int dtc_bus_reset(Scsi_Cmnd *); ...@@ -88,7 +88,8 @@ static int dtc_bus_reset(Scsi_Cmnd *);
#define NCR5380_queue_command dtc_queue_command #define NCR5380_queue_command dtc_queue_command
#define NCR5380_abort dtc_abort #define NCR5380_abort dtc_abort
#define NCR5380_bus_reset dtc_bus_reset #define NCR5380_bus_reset dtc_bus_reset
#define NCR5380_proc_info dtc_proc_info #define NCR5380_show_info dtc_show_info
#define NCR5380_write_info dtc_write_info
/* 15 12 11 10 /* 15 12 11 10
1001 1100 0000 0000 */ 1001 1100 0000 0000 */
......
...@@ -745,42 +745,36 @@ static inline int NCR5380_pwrite(struct Scsi_Host *instance, unsigned char *src, ...@@ -745,42 +745,36 @@ static inline int NCR5380_pwrite(struct Scsi_Host *instance, unsigned char *src,
#include "NCR5380.c" #include "NCR5380.c"
#define PRINTP(x) len += sprintf(buffer+len, x) #define PRINTP(x) seq_printf(m, x)
#define ANDP , #define ANDP ,
static int sprint_opcode(char *buffer, int len, int opcode) static void sprint_opcode(struct seq_file *m, int opcode)
{ {
int start = len;
PRINTP("0x%02x " ANDP opcode); PRINTP("0x%02x " ANDP opcode);
return len - start;
} }
static int sprint_command(char *buffer, int len, unsigned char *command) static void sprint_command(struct seq_file *m, unsigned char *command)
{ {
int i, s, start = len; int i, s;
len += sprint_opcode(buffer, len, command[0]); sprint_opcode(m, command[0]);
for (i = 1, s = COMMAND_SIZE(command[0]); i < s; ++i) for (i = 1, s = COMMAND_SIZE(command[0]); i < s; ++i)
PRINTP("%02x " ANDP command[i]); PRINTP("%02x " ANDP command[i]);
PRINTP("\n"); PRINTP("\n");
return len - start;
} }
/** /**
* sprintf_Scsi_Cmnd - print a scsi command * sprintf_Scsi_Cmnd - print a scsi command
* @buffer: buffr to print into * @m: seq_fil to print into
* @len: buffer length
* @cmd: SCSI command block * @cmd: SCSI command block
* *
* Print out the target and command data in hex * Print out the target and command data in hex
*/ */
static int sprint_Scsi_Cmnd(char *buffer, int len, Scsi_Cmnd * cmd) static void sprint_Scsi_Cmnd(struct seq_file *m, Scsi_Cmnd * cmd)
{ {
int start = len;
PRINTP("host number %d destination target %d, lun %d\n" ANDP cmd->device->host->host_no ANDP cmd->device->id ANDP cmd->device->lun); PRINTP("host number %d destination target %d, lun %d\n" ANDP cmd->device->host->host_no ANDP cmd->device->id ANDP cmd->device->lun);
PRINTP(" command = "); PRINTP(" command = ");
len += sprint_command(buffer, len, cmd->cmnd); sprint_command(m, cmd->cmnd);
return len - start;
} }
/** /**
...@@ -800,9 +794,8 @@ static int sprint_Scsi_Cmnd(char *buffer, int len, Scsi_Cmnd * cmd) ...@@ -800,9 +794,8 @@ static int sprint_Scsi_Cmnd(char *buffer, int len, Scsi_Cmnd * cmd)
* Locks: global cli/lock for queue walk * Locks: global cli/lock for queue walk
*/ */
static int generic_NCR5380_proc_info(struct Scsi_Host *scsi_ptr, char *buffer, char **start, off_t offset, int length, int inout) static int generic_NCR5380_show_info(struct seq_file *m, struct Scsi_Host *scsi_ptr)
{ {
int len = 0;
NCR5380_local_declare(); NCR5380_local_declare();
unsigned long flags; unsigned long flags;
unsigned char status; unsigned char status;
...@@ -853,16 +846,16 @@ static int generic_NCR5380_proc_info(struct Scsi_Host *scsi_ptr, char *buffer, c ...@@ -853,16 +846,16 @@ static int generic_NCR5380_proc_info(struct Scsi_Host *scsi_ptr, char *buffer, c
PRINTP(" T:%d %s " ANDP dev->id ANDP scsi_device_type(dev->type)); PRINTP(" T:%d %s " ANDP dev->id ANDP scsi_device_type(dev->type));
for (i = 0; i < 8; i++) for (i = 0; i < 8; i++)
if (dev->vendor[i] >= 0x20) if (dev->vendor[i] >= 0x20)
*(buffer + (len++)) = dev->vendor[i]; seq_putc(m, dev->vendor[i]);
*(buffer + (len++)) = ' '; seq_putc(m, ' ');
for (i = 0; i < 16; i++) for (i = 0; i < 16; i++)
if (dev->model[i] >= 0x20) if (dev->model[i] >= 0x20)
*(buffer + (len++)) = dev->model[i]; seq_putc(m, dev->model[i]);
*(buffer + (len++)) = ' '; seq_putc(m, ' ');
for (i = 0; i < 4; i++) for (i = 0; i < 4; i++)
if (dev->rev[i] >= 0x20) if (dev->rev[i] >= 0x20)
*(buffer + (len++)) = dev->rev[i]; seq_putc(m, dev->rev[i]);
*(buffer + (len++)) = ' '; seq_putc(m, ' ');
PRINTP("\n%10ld kb read in %5ld secs" ANDP br / 1024 ANDP tr); PRINTP("\n%10ld kb read in %5ld secs" ANDP br / 1024 ANDP tr);
if (tr) if (tr)
...@@ -886,32 +879,28 @@ static int generic_NCR5380_proc_info(struct Scsi_Host *scsi_ptr, char *buffer, c ...@@ -886,32 +879,28 @@ static int generic_NCR5380_proc_info(struct Scsi_Host *scsi_ptr, char *buffer, c
if (!hostdata->connected) { if (!hostdata->connected) {
PRINTP("No currently connected command\n"); PRINTP("No currently connected command\n");
} else { } else {
len += sprint_Scsi_Cmnd(buffer, len, (Scsi_Cmnd *) hostdata->connected); sprint_Scsi_Cmnd(m, (Scsi_Cmnd *) hostdata->connected);
} }
PRINTP("issue_queue\n"); PRINTP("issue_queue\n");
for (ptr = (Scsi_Cmnd *) hostdata->issue_queue; ptr; ptr = (Scsi_Cmnd *) ptr->host_scribble) for (ptr = (Scsi_Cmnd *) hostdata->issue_queue; ptr; ptr = (Scsi_Cmnd *) ptr->host_scribble)
len += sprint_Scsi_Cmnd(buffer, len, ptr); sprint_Scsi_Cmnd(m, ptr);
PRINTP("disconnected_queue\n"); PRINTP("disconnected_queue\n");
for (ptr = (Scsi_Cmnd *) hostdata->disconnected_queue; ptr; ptr = (Scsi_Cmnd *) ptr->host_scribble) for (ptr = (Scsi_Cmnd *) hostdata->disconnected_queue; ptr; ptr = (Scsi_Cmnd *) ptr->host_scribble)
len += sprint_Scsi_Cmnd(buffer, len, ptr); sprint_Scsi_Cmnd(m, ptr);
*start = buffer + offset;
len -= offset;
if (len > length)
len = length;
spin_unlock_irqrestore(scsi_ptr->host_lock, flags); spin_unlock_irqrestore(scsi_ptr->host_lock, flags);
return len; return 0;
} }
#undef PRINTP #undef PRINTP
#undef ANDP #undef ANDP
static struct scsi_host_template driver_template = { static struct scsi_host_template driver_template = {
.proc_info = generic_NCR5380_proc_info, .show_info = generic_NCR5380_show_info,
.name = "Generic NCR5380/NCR53C400 Scsi Driver", .name = "Generic NCR5380/NCR53C400 Scsi Driver",
.detect = generic_NCR5380_detect, .detect = generic_NCR5380_detect,
.release = generic_NCR5380_release_resources, .release = generic_NCR5380_release_resources,
......
...@@ -561,7 +561,8 @@ static int macscsi_pwrite (struct Scsi_Host *instance, ...@@ -561,7 +561,8 @@ static int macscsi_pwrite (struct Scsi_Host *instance,
static struct scsi_host_template driver_template = { static struct scsi_host_template driver_template = {
.proc_name = "Mac5380", .proc_name = "Mac5380",
.proc_info = macscsi_proc_info, .show_info = macscsi_show_info,
.write_info = macscsi_write_info,
.name = "Macintosh NCR5380 SCSI", .name = "Macintosh NCR5380 SCSI",
.detect = macscsi_detect, .detect = macscsi_detect,
.release = macscsi_release, .release = macscsi_release,
......
...@@ -72,7 +72,8 @@ ...@@ -72,7 +72,8 @@
#define NCR5380_queue_command macscsi_queue_command #define NCR5380_queue_command macscsi_queue_command
#define NCR5380_abort macscsi_abort #define NCR5380_abort macscsi_abort
#define NCR5380_bus_reset macscsi_bus_reset #define NCR5380_bus_reset macscsi_bus_reset
#define NCR5380_proc_info macscsi_proc_info #define NCR5380_show_info macscsi_show_info
#define NCR5380_write_info macscsi_write_info
#define BOARD_NORMAL 0 #define BOARD_NORMAL 0
#define BOARD_NCR53C400 1 #define BOARD_NCR53C400 1
......
...@@ -388,7 +388,8 @@ int __init pas16_detect(struct scsi_host_template * tpnt) ...@@ -388,7 +388,8 @@ int __init pas16_detect(struct scsi_host_template * tpnt)
int count; int count;
tpnt->proc_name = "pas16"; tpnt->proc_name = "pas16";
tpnt->proc_info = &pas16_proc_info; tpnt->show_info = pas16_show_info;
tpnt->write_info = pas16_write_info;
if (pas16_addr != 0) { if (pas16_addr != 0) {
overrides[0].io_port = pas16_addr; overrides[0].io_port = pas16_addr;
......
...@@ -163,7 +163,8 @@ static int pas16_bus_reset(Scsi_Cmnd *); ...@@ -163,7 +163,8 @@ static int pas16_bus_reset(Scsi_Cmnd *);
#define NCR5380_queue_command pas16_queue_command #define NCR5380_queue_command pas16_queue_command
#define NCR5380_abort pas16_abort #define NCR5380_abort pas16_abort
#define NCR5380_bus_reset pas16_bus_reset #define NCR5380_bus_reset pas16_bus_reset
#define NCR5380_proc_info pas16_proc_info #define NCR5380_show_info pas16_show_info
#define NCR5380_write_info pas16_write_info
/* 15 14 12 10 7 5 3 /* 15 14 12 10 7 5 3
1101 0100 1010 1000 */ 1101 0100 1010 1000 */
......
...@@ -201,7 +201,8 @@ int __init t128_detect(struct scsi_host_template * tpnt){ ...@@ -201,7 +201,8 @@ int __init t128_detect(struct scsi_host_template * tpnt){
int sig, count; int sig, count;
tpnt->proc_name = "t128"; tpnt->proc_name = "t128";
tpnt->proc_info = &t128_proc_info; tpnt->show_info = t128_show_info;
tpnt->write_info = t128_write_info;
for (count = 0; current_override < NO_OVERRIDES; ++current_override) { for (count = 0; current_override < NO_OVERRIDES; ++current_override) {
base = 0; base = 0;
......
...@@ -140,7 +140,8 @@ static int t128_bus_reset(struct scsi_cmnd *); ...@@ -140,7 +140,8 @@ static int t128_bus_reset(struct scsi_cmnd *);
#define NCR5380_queue_command t128_queue_command #define NCR5380_queue_command t128_queue_command
#define NCR5380_abort t128_abort #define NCR5380_abort t128_abort
#define NCR5380_bus_reset t128_bus_reset #define NCR5380_bus_reset t128_bus_reset
#define NCR5380_proc_info t128_proc_info #define NCR5380_show_info t128_show_info
#define NCR5380_write_info t128_write_info
/* 15 14 12 10 7 5 3 /* 15 14 12 10 7 5 3
1101 0100 1010 1000 */ 1101 0100 1010 1000 */
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册