mirror of
https://github.com/torvalds/linux.git
synced 2024-11-26 06:02:05 +00:00
ips: switch to ->show_info()
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
parent
56b8e8e535
commit
aacce706fa
@ -326,10 +326,9 @@ static void ips_scmd_buf_write(struct scsi_cmnd * scmd, void *data,
|
||||
static void ips_scmd_buf_read(struct scsi_cmnd * scmd, void *data,
|
||||
unsigned int count);
|
||||
|
||||
static int ips_proc_info(struct Scsi_Host *, char *, char **, off_t, int, int);
|
||||
static int ips_host_info(ips_ha_t *, char *, off_t, int);
|
||||
static void copy_mem_info(IPS_INFOSTR *, char *, int);
|
||||
static int copy_info(IPS_INFOSTR *, char *, ...);
|
||||
static int ips_write_info(struct Scsi_Host *, char *, int);
|
||||
static int ips_show_info(struct seq_file *, struct Scsi_Host *);
|
||||
static int ips_host_info(ips_ha_t *, struct seq_file *);
|
||||
static int ips_abort_init(ips_ha_t * ha, int index);
|
||||
static int ips_init_phase2(int index);
|
||||
|
||||
@ -367,7 +366,8 @@ static struct scsi_host_template ips_driver_template = {
|
||||
.eh_abort_handler = ips_eh_abort,
|
||||
.eh_host_reset_handler = ips_eh_reset,
|
||||
.proc_name = "ips",
|
||||
.proc_info = ips_proc_info,
|
||||
.show_info = ips_show_info,
|
||||
.write_info = ips_write_info,
|
||||
.slave_configure = ips_slave_configure,
|
||||
.bios_param = ips_biosparam,
|
||||
.this_id = -1,
|
||||
@ -1433,25 +1433,12 @@ ips_info(struct Scsi_Host *SH)
|
||||
return (bp);
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
/* */
|
||||
/* Routine Name: ips_proc_info */
|
||||
/* */
|
||||
/* Routine Description: */
|
||||
/* */
|
||||
/* The passthru interface for the driver */
|
||||
/* */
|
||||
/****************************************************************************/
|
||||
static int
|
||||
ips_proc_info(struct Scsi_Host *host, char *buffer, char **start, off_t offset,
|
||||
int length, int func)
|
||||
ips_write_info(struct Scsi_Host *host, char *buffer, int length)
|
||||
{
|
||||
int i;
|
||||
int ret;
|
||||
ips_ha_t *ha = NULL;
|
||||
|
||||
METHOD_TRACE("ips_proc_info", 1);
|
||||
|
||||
/* Find our host structure */
|
||||
for (i = 0; i < ips_next_controller; i++) {
|
||||
if (ips_sh[i]) {
|
||||
@ -1465,18 +1452,29 @@ ips_proc_info(struct Scsi_Host *host, char *buffer, char **start, off_t offset,
|
||||
if (!ha)
|
||||
return (-EINVAL);
|
||||
|
||||
if (func) {
|
||||
/* write */
|
||||
return (0);
|
||||
} else {
|
||||
/* read */
|
||||
if (start)
|
||||
*start = buffer;
|
||||
return 0;
|
||||
}
|
||||
|
||||
ret = ips_host_info(ha, buffer, offset, length);
|
||||
static int
|
||||
ips_show_info(struct seq_file *m, struct Scsi_Host *host)
|
||||
{
|
||||
int i;
|
||||
ips_ha_t *ha = NULL;
|
||||
|
||||
return (ret);
|
||||
/* Find our host structure */
|
||||
for (i = 0; i < ips_next_controller; i++) {
|
||||
if (ips_sh[i]) {
|
||||
if (ips_sh[i] == host) {
|
||||
ha = (ips_ha_t *) ips_sh[i]->hostdata;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!ha)
|
||||
return (-EINVAL);
|
||||
|
||||
return ips_host_info(ha, m);
|
||||
}
|
||||
|
||||
/*--------------------------------------------------------------------------*/
|
||||
@ -2035,183 +2033,113 @@ ips_cleanup_passthru(ips_ha_t * ha, ips_scb_t * scb)
|
||||
/* */
|
||||
/****************************************************************************/
|
||||
static int
|
||||
ips_host_info(ips_ha_t * ha, char *ptr, off_t offset, int len)
|
||||
ips_host_info(ips_ha_t *ha, struct seq_file *m)
|
||||
{
|
||||
IPS_INFOSTR info;
|
||||
|
||||
METHOD_TRACE("ips_host_info", 1);
|
||||
|
||||
info.buffer = ptr;
|
||||
info.length = len;
|
||||
info.offset = offset;
|
||||
info.pos = 0;
|
||||
info.localpos = 0;
|
||||
|
||||
copy_info(&info, "\nIBM ServeRAID General Information:\n\n");
|
||||
seq_printf(m, "\nIBM ServeRAID General Information:\n\n");
|
||||
|
||||
if ((le32_to_cpu(ha->nvram->signature) == IPS_NVRAM_P5_SIG) &&
|
||||
(le16_to_cpu(ha->nvram->adapter_type) != 0))
|
||||
copy_info(&info, "\tController Type : %s\n",
|
||||
seq_printf(m, "\tController Type : %s\n",
|
||||
ips_adapter_name[ha->ad_type - 1]);
|
||||
else
|
||||
copy_info(&info,
|
||||
seq_printf(m,
|
||||
"\tController Type : Unknown\n");
|
||||
|
||||
if (ha->io_addr)
|
||||
copy_info(&info,
|
||||
seq_printf(m,
|
||||
"\tIO region : 0x%lx (%d bytes)\n",
|
||||
ha->io_addr, ha->io_len);
|
||||
|
||||
if (ha->mem_addr) {
|
||||
copy_info(&info,
|
||||
seq_printf(m,
|
||||
"\tMemory region : 0x%lx (%d bytes)\n",
|
||||
ha->mem_addr, ha->mem_len);
|
||||
copy_info(&info,
|
||||
seq_printf(m,
|
||||
"\tShared memory address : 0x%lx\n",
|
||||
ha->mem_ptr);
|
||||
}
|
||||
|
||||
copy_info(&info, "\tIRQ number : %d\n", ha->pcidev->irq);
|
||||
seq_printf(m, "\tIRQ number : %d\n", ha->pcidev->irq);
|
||||
|
||||
/* For the Next 3 lines Check for Binary 0 at the end and don't include it if it's there. */
|
||||
/* That keeps everything happy for "text" operations on the proc file. */
|
||||
|
||||
if (le32_to_cpu(ha->nvram->signature) == IPS_NVRAM_P5_SIG) {
|
||||
if (ha->nvram->bios_low[3] == 0) {
|
||||
copy_info(&info,
|
||||
"\tBIOS Version : %c%c%c%c%c%c%c\n",
|
||||
ha->nvram->bios_high[0], ha->nvram->bios_high[1],
|
||||
ha->nvram->bios_high[2], ha->nvram->bios_high[3],
|
||||
ha->nvram->bios_low[0], ha->nvram->bios_low[1],
|
||||
ha->nvram->bios_low[2]);
|
||||
seq_printf(m,
|
||||
"\tBIOS Version : %c%c%c%c%c%c%c\n",
|
||||
ha->nvram->bios_high[0], ha->nvram->bios_high[1],
|
||||
ha->nvram->bios_high[2], ha->nvram->bios_high[3],
|
||||
ha->nvram->bios_low[0], ha->nvram->bios_low[1],
|
||||
ha->nvram->bios_low[2]);
|
||||
|
||||
} else {
|
||||
copy_info(&info,
|
||||
"\tBIOS Version : %c%c%c%c%c%c%c%c\n",
|
||||
ha->nvram->bios_high[0], ha->nvram->bios_high[1],
|
||||
ha->nvram->bios_high[2], ha->nvram->bios_high[3],
|
||||
ha->nvram->bios_low[0], ha->nvram->bios_low[1],
|
||||
ha->nvram->bios_low[2], ha->nvram->bios_low[3]);
|
||||
seq_printf(m,
|
||||
"\tBIOS Version : %c%c%c%c%c%c%c%c\n",
|
||||
ha->nvram->bios_high[0], ha->nvram->bios_high[1],
|
||||
ha->nvram->bios_high[2], ha->nvram->bios_high[3],
|
||||
ha->nvram->bios_low[0], ha->nvram->bios_low[1],
|
||||
ha->nvram->bios_low[2], ha->nvram->bios_low[3]);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (ha->enq->CodeBlkVersion[7] == 0) {
|
||||
copy_info(&info,
|
||||
"\tFirmware Version : %c%c%c%c%c%c%c\n",
|
||||
ha->enq->CodeBlkVersion[0], ha->enq->CodeBlkVersion[1],
|
||||
ha->enq->CodeBlkVersion[2], ha->enq->CodeBlkVersion[3],
|
||||
ha->enq->CodeBlkVersion[4], ha->enq->CodeBlkVersion[5],
|
||||
ha->enq->CodeBlkVersion[6]);
|
||||
seq_printf(m,
|
||||
"\tFirmware Version : %c%c%c%c%c%c%c\n",
|
||||
ha->enq->CodeBlkVersion[0], ha->enq->CodeBlkVersion[1],
|
||||
ha->enq->CodeBlkVersion[2], ha->enq->CodeBlkVersion[3],
|
||||
ha->enq->CodeBlkVersion[4], ha->enq->CodeBlkVersion[5],
|
||||
ha->enq->CodeBlkVersion[6]);
|
||||
} else {
|
||||
copy_info(&info,
|
||||
"\tFirmware Version : %c%c%c%c%c%c%c%c\n",
|
||||
ha->enq->CodeBlkVersion[0], ha->enq->CodeBlkVersion[1],
|
||||
ha->enq->CodeBlkVersion[2], ha->enq->CodeBlkVersion[3],
|
||||
ha->enq->CodeBlkVersion[4], ha->enq->CodeBlkVersion[5],
|
||||
ha->enq->CodeBlkVersion[6], ha->enq->CodeBlkVersion[7]);
|
||||
seq_printf(m,
|
||||
"\tFirmware Version : %c%c%c%c%c%c%c%c\n",
|
||||
ha->enq->CodeBlkVersion[0], ha->enq->CodeBlkVersion[1],
|
||||
ha->enq->CodeBlkVersion[2], ha->enq->CodeBlkVersion[3],
|
||||
ha->enq->CodeBlkVersion[4], ha->enq->CodeBlkVersion[5],
|
||||
ha->enq->CodeBlkVersion[6], ha->enq->CodeBlkVersion[7]);
|
||||
}
|
||||
|
||||
if (ha->enq->BootBlkVersion[7] == 0) {
|
||||
copy_info(&info,
|
||||
"\tBoot Block Version : %c%c%c%c%c%c%c\n",
|
||||
ha->enq->BootBlkVersion[0], ha->enq->BootBlkVersion[1],
|
||||
ha->enq->BootBlkVersion[2], ha->enq->BootBlkVersion[3],
|
||||
ha->enq->BootBlkVersion[4], ha->enq->BootBlkVersion[5],
|
||||
ha->enq->BootBlkVersion[6]);
|
||||
seq_printf(m,
|
||||
"\tBoot Block Version : %c%c%c%c%c%c%c\n",
|
||||
ha->enq->BootBlkVersion[0], ha->enq->BootBlkVersion[1],
|
||||
ha->enq->BootBlkVersion[2], ha->enq->BootBlkVersion[3],
|
||||
ha->enq->BootBlkVersion[4], ha->enq->BootBlkVersion[5],
|
||||
ha->enq->BootBlkVersion[6]);
|
||||
} else {
|
||||
copy_info(&info,
|
||||
"\tBoot Block Version : %c%c%c%c%c%c%c%c\n",
|
||||
ha->enq->BootBlkVersion[0], ha->enq->BootBlkVersion[1],
|
||||
ha->enq->BootBlkVersion[2], ha->enq->BootBlkVersion[3],
|
||||
ha->enq->BootBlkVersion[4], ha->enq->BootBlkVersion[5],
|
||||
ha->enq->BootBlkVersion[6], ha->enq->BootBlkVersion[7]);
|
||||
seq_printf(m,
|
||||
"\tBoot Block Version : %c%c%c%c%c%c%c%c\n",
|
||||
ha->enq->BootBlkVersion[0], ha->enq->BootBlkVersion[1],
|
||||
ha->enq->BootBlkVersion[2], ha->enq->BootBlkVersion[3],
|
||||
ha->enq->BootBlkVersion[4], ha->enq->BootBlkVersion[5],
|
||||
ha->enq->BootBlkVersion[6], ha->enq->BootBlkVersion[7]);
|
||||
}
|
||||
|
||||
copy_info(&info, "\tDriver Version : %s%s\n",
|
||||
seq_printf(m, "\tDriver Version : %s%s\n",
|
||||
IPS_VERSION_HIGH, IPS_VERSION_LOW);
|
||||
|
||||
copy_info(&info, "\tDriver Build : %d\n",
|
||||
seq_printf(m, "\tDriver Build : %d\n",
|
||||
IPS_BUILD_IDENT);
|
||||
|
||||
copy_info(&info, "\tMax Physical Devices : %d\n",
|
||||
seq_printf(m, "\tMax Physical Devices : %d\n",
|
||||
ha->enq->ucMaxPhysicalDevices);
|
||||
copy_info(&info, "\tMax Active Commands : %d\n",
|
||||
seq_printf(m, "\tMax Active Commands : %d\n",
|
||||
ha->max_cmds);
|
||||
copy_info(&info, "\tCurrent Queued Commands : %d\n",
|
||||
seq_printf(m, "\tCurrent Queued Commands : %d\n",
|
||||
ha->scb_waitlist.count);
|
||||
copy_info(&info, "\tCurrent Active Commands : %d\n",
|
||||
seq_printf(m, "\tCurrent Active Commands : %d\n",
|
||||
ha->scb_activelist.count - ha->num_ioctl);
|
||||
copy_info(&info, "\tCurrent Queued PT Commands : %d\n",
|
||||
seq_printf(m, "\tCurrent Queued PT Commands : %d\n",
|
||||
ha->copp_waitlist.count);
|
||||
copy_info(&info, "\tCurrent Active PT Commands : %d\n",
|
||||
seq_printf(m, "\tCurrent Active PT Commands : %d\n",
|
||||
ha->num_ioctl);
|
||||
|
||||
copy_info(&info, "\n");
|
||||
seq_printf(m, "\n");
|
||||
|
||||
return (info.localpos);
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
/* */
|
||||
/* Routine Name: copy_mem_info */
|
||||
/* */
|
||||
/* Routine Description: */
|
||||
/* */
|
||||
/* Copy data into an IPS_INFOSTR structure */
|
||||
/* */
|
||||
/****************************************************************************/
|
||||
static void
|
||||
copy_mem_info(IPS_INFOSTR * info, char *data, int len)
|
||||
{
|
||||
METHOD_TRACE("copy_mem_info", 1);
|
||||
|
||||
if (info->pos + len < info->offset) {
|
||||
info->pos += len;
|
||||
return;
|
||||
}
|
||||
|
||||
if (info->pos < info->offset) {
|
||||
data += (info->offset - info->pos);
|
||||
len -= (info->offset - info->pos);
|
||||
info->pos += (info->offset - info->pos);
|
||||
}
|
||||
|
||||
if (info->localpos + len > info->length)
|
||||
len = info->length - info->localpos;
|
||||
|
||||
if (len > 0) {
|
||||
memcpy(info->buffer + info->localpos, data, len);
|
||||
info->pos += len;
|
||||
info->localpos += len;
|
||||
}
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
/* */
|
||||
/* Routine Name: copy_info */
|
||||
/* */
|
||||
/* Routine Description: */
|
||||
/* */
|
||||
/* printf style wrapper for an info structure */
|
||||
/* */
|
||||
/****************************************************************************/
|
||||
static int
|
||||
copy_info(IPS_INFOSTR * info, char *fmt, ...)
|
||||
{
|
||||
va_list args;
|
||||
char buf[128];
|
||||
int len;
|
||||
|
||||
METHOD_TRACE("copy_info", 1);
|
||||
|
||||
va_start(args, fmt);
|
||||
len = vsprintf(buf, fmt, args);
|
||||
va_end(args);
|
||||
|
||||
copy_mem_info(info, buf, len);
|
||||
|
||||
return (len);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
@ -416,7 +416,6 @@
|
||||
/*
|
||||
* Scsi_Host Template
|
||||
*/
|
||||
static int ips_proc_info(struct Scsi_Host *, char *, char **, off_t, int, int);
|
||||
static int ips_biosparam(struct scsi_device *sdev, struct block_device *bdev,
|
||||
sector_t capacity, int geom[]);
|
||||
static int ips_slave_configure(struct scsi_device *SDptr);
|
||||
@ -959,14 +958,6 @@ typedef union {
|
||||
IPS_ENH_SG_LIST *enh_list;
|
||||
} IPS_SG_LIST;
|
||||
|
||||
typedef struct _IPS_INFOSTR {
|
||||
char *buffer;
|
||||
int length;
|
||||
int offset;
|
||||
int pos;
|
||||
int localpos;
|
||||
} IPS_INFOSTR;
|
||||
|
||||
typedef struct {
|
||||
char *option_name;
|
||||
int *option_flag;
|
||||
|
Loading…
Reference in New Issue
Block a user