sym53c8xx_2: switch to ->show_info()
authorAl Viro <viro@zeniv.linux.org.uk>
Sun, 31 Mar 2013 04:10:16 +0000 (00:10 -0400)
committerAl Viro <viro@zeniv.linux.org.uk>
Tue, 9 Apr 2013 18:13:15 +0000 (14:13 -0400)
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
drivers/scsi/sym53c8xx_2/sym_glue.c

index 5995682..bac55f7 100644 (file)
@@ -1171,112 +1171,36 @@ printk("sym_user_command: data=%ld\n", uc->data);
 #endif /* SYM_LINUX_USER_COMMAND_SUPPORT */
 
 
-#ifdef SYM_LINUX_USER_INFO_SUPPORT
-/*
- *  Informations through the proc file system.
- */
-struct info_str {
-       char *buffer;
-       int length;
-       int offset;
-       int pos;
-};
-
-static void copy_mem_info(struct info_str *info, char *data, int len)
-{
-       if (info->pos + len > info->length)
-               len = info->length - info->pos;
-
-       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);
-       }
-
-       if (len > 0) {
-               memcpy(info->buffer + info->pos, data, len);
-               info->pos += len;
-       }
-}
-
-static int copy_info(struct info_str *info, char *fmt, ...)
-{
-       va_list args;
-       char buf[81];
-       int len;
-
-       va_start(args, fmt);
-       len = vsprintf(buf, fmt, args);
-       va_end(args);
-
-       copy_mem_info(info, buf, len);
-       return len;
-}
-
 /*
  *  Copy formatted information into the input buffer.
  */
-static int sym_host_info(struct Scsi_Host *shost, char *ptr, off_t offset, int len)
+static int sym_show_info(struct seq_file *m, struct Scsi_Host *shost)
 {
+#ifdef SYM_LINUX_USER_INFO_SUPPORT
        struct sym_data *sym_data = shost_priv(shost);
        struct pci_dev *pdev = sym_data->pdev;
        struct sym_hcb *np = sym_data->ncb;
-       struct info_str info;
-
-       info.buffer     = ptr;
-       info.length     = len;
-       info.offset     = offset;
-       info.pos        = 0;
 
-       copy_info(&info, "Chip " NAME53C "%s, device id 0x%x, "
-                        "revision id 0x%x\n", np->s.chip_name,
-                        pdev->device, pdev->revision);
-       copy_info(&info, "At PCI address %s, IRQ %u\n",
+       seq_printf(m, "Chip " NAME53C "%s, device id 0x%x, "
+                "revision id 0x%x\n", np->s.chip_name,
+                pdev->device, pdev->revision);
+       seq_printf(m, "At PCI address %s, IRQ %u\n",
                         pci_name(pdev), pdev->irq);
-       copy_info(&info, "Min. period factor %d, %s SCSI BUS%s\n",
-                        (int) (np->minsync_dt ? np->minsync_dt : np->minsync),
-                        np->maxwide ? "Wide" : "Narrow",
-                        np->minsync_dt ? ", DT capable" : "");
+       seq_printf(m, "Min. period factor %d, %s SCSI BUS%s\n",
+                (int) (np->minsync_dt ? np->minsync_dt : np->minsync),
+                np->maxwide ? "Wide" : "Narrow",
+                np->minsync_dt ? ", DT capable" : "");
 
-       copy_info(&info, "Max. started commands %d, "
-                        "max. commands per LUN %d\n",
-                        SYM_CONF_MAX_START, SYM_CONF_MAX_TAG);
+       seq_printf(m, "Max. started commands %d, "
+                "max. commands per LUN %d\n",
+                SYM_CONF_MAX_START, SYM_CONF_MAX_TAG);
 
-       return info.pos > info.offset? info.pos - info.offset : 0;
-}
-#endif /* SYM_LINUX_USER_INFO_SUPPORT */
-
-/*
- *  Entry point of the scsi proc fs of the driver.
- *  - func = 0 means read  (returns adapter infos)
- *  - func = 1 means write (not yet merget from sym53c8xx)
- */
-static int sym53c8xx_proc_info(struct Scsi_Host *shost, char *buffer,
-                       char **start, off_t offset, int length, int func)
-{
-       int retv;
-
-       if (func) {
-#ifdef SYM_LINUX_USER_COMMAND_SUPPORT
-               retv = sym_user_command(shost, buffer, length);
-#else
-               retv = -EINVAL;
-#endif
-       } else {
-               if (start)
-                       *start = buffer;
-#ifdef SYM_LINUX_USER_INFO_SUPPORT
-               retv = sym_host_info(shost, buffer, offset, length);
+       return 0;
 #else
-               retv = -EINVAL;
-#endif
-       }
-
-       return retv;
+       return -EINVAL;
+#endif /* SYM_LINUX_USER_INFO_SUPPORT */
 }
+
 #endif /* SYM_LINUX_PROC_INFO_SUPPORT */
 
 /*
@@ -1742,7 +1666,10 @@ static struct scsi_host_template sym2_template = {
        .use_clustering         = ENABLE_CLUSTERING,
        .max_sectors            = 0xFFFF,
 #ifdef SYM_LINUX_PROC_INFO_SUPPORT
-       .proc_info              = sym53c8xx_proc_info,
+       .show_info              = sym_show_info,
+#ifdef SYM_LINUX_USER_COMMAND_SUPPORT
+       .write_info             = sym_user_command,
+#endif
        .proc_name              = NAME53C8XX,
 #endif
 };