Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ee127fec authored by Al Viro's avatar Al Viro
Browse files

sym53c8xx_2: switch to ->show_info()



Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent 0ffddfbb
Loading
Loading
Loading
Loading
+21 −94
Original line number Original line Diff line number Diff line
@@ -1171,112 +1171,36 @@ printk("sym_user_command: data=%ld\n", uc->data);
#endif	/* SYM_LINUX_USER_COMMAND_SUPPORT */
#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.
 *  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 sym_data *sym_data = shost_priv(shost);
	struct pci_dev *pdev = sym_data->pdev;
	struct pci_dev *pdev = sym_data->pdev;
	struct sym_hcb *np = sym_data->ncb;
	struct sym_hcb *np = sym_data->ncb;
	struct info_str info;


	info.buffer	= ptr;
	seq_printf(m, "Chip " NAME53C "%s, device id 0x%x, "
	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,
		 "revision id 0x%x\n", np->s.chip_name,
		 pdev->device, pdev->revision);
		 pdev->device, pdev->revision);
	copy_info(&info, "At PCI address %s, IRQ %u\n",
	seq_printf(m, "At PCI address %s, IRQ %u\n",
			 pci_name(pdev), pdev->irq);
			 pci_name(pdev), pdev->irq);
	copy_info(&info, "Min. period factor %d, %s SCSI BUS%s\n",
	seq_printf(m, "Min. period factor %d, %s SCSI BUS%s\n",
		 (int) (np->minsync_dt ? np->minsync_dt : np->minsync),
		 (int) (np->minsync_dt ? np->minsync_dt : np->minsync),
		 np->maxwide ? "Wide" : "Narrow",
		 np->maxwide ? "Wide" : "Narrow",
		 np->minsync_dt ? ", DT capable" : "");
		 np->minsync_dt ? ", DT capable" : "");


	copy_info(&info, "Max. started commands %d, "
	seq_printf(m, "Max. started commands %d, "
		 "max. commands per LUN %d\n",
		 "max. commands per LUN %d\n",
		 SYM_CONF_MAX_START, SYM_CONF_MAX_TAG);
		 SYM_CONF_MAX_START, SYM_CONF_MAX_TAG);


	return info.pos > info.offset? info.pos - info.offset : 0;
	return 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);
#else
#else
		retv = -EINVAL;
	return -EINVAL;
#endif
#endif /* SYM_LINUX_USER_INFO_SUPPORT */
}
}


	return retv;
}
#endif /* SYM_LINUX_PROC_INFO_SUPPORT */
#endif /* SYM_LINUX_PROC_INFO_SUPPORT */


/*
/*
@@ -1742,7 +1666,10 @@ static struct scsi_host_template sym2_template = {
	.use_clustering		= ENABLE_CLUSTERING,
	.use_clustering		= ENABLE_CLUSTERING,
	.max_sectors		= 0xFFFF,
	.max_sectors		= 0xFFFF,
#ifdef SYM_LINUX_PROC_INFO_SUPPORT
#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,
	.proc_name		= NAME53C8XX,
#endif
#endif
};
};