/* pluto.h: SparcSTORAGE Array SCSI host adapter driver definitions.
 *
 * Copyright (C) 1997 Jakub Jelinek (jj@sunsite.mff.cuni.cz)
 */

#ifndef _PLUTO_H
#define _PLUTO_H

#include "../fc4/fcp_scsi.h"

struct pluto {
	/* This must be first */
	fc_channel	*fc;
	char		rev_str[5];
	char		fw_rev_str[5];
	char		serial_str[13];
};

struct pluto_inquiry {
	u8	dtype;
	u8	removable:1, qualifier:7;
	u8	iso:2, ecma:3, ansi:3;
	u8	aenc:1, trmiop:1, :2, rdf:4;
	u8	len;
	u8	xxx1;
	u8	xxx2;
	u8	reladdr:1, wbus32:1, wbus16:1, sync:1, linked:1, :1, cmdque:1, softreset:1;
	u8	vendor_id[8];
	u8	product_id[16];
	u8	revision[4];
	u8	fw_revision[4];
	u8	serial[12];
	u8	xxx3[2];
	u8	channels;
	u8	targets;
};

/* This is the max number of outstanding SCSI commands per pluto */
#define PLUTO_CAN_QUEUE		254

int pluto_detect(Scsi_Host_Template *);
int pluto_release(struct Scsi_Host *);
const char * pluto_info(struct Scsi_Host *);

#define PLUTO {							\
	name:			"Sparc Storage Array 100/200",	\
	detect:			pluto_detect,			\
	release:		pluto_release,			\
	info:			pluto_info,			\
	queuecommand:		fcp_scsi_queuecommand,		\
	can_queue:		PLUTO_CAN_QUEUE,		\
	this_id:		-1,				\
	sg_tablesize:		1,				\
	cmd_per_lun:		1,				\
	use_clustering:		ENABLE_CLUSTERING,		\
	use_new_eh_code:	FCP_SCSI_USE_NEW_EH_CODE,	\
	abort:			fcp_old_abort,			\
	eh_abort_handler:	fcp_scsi_abort,			\
	eh_device_reset_handler:fcp_scsi_dev_reset,		\
	eh_bus_reset_handler:	fcp_scsi_bus_reset,		\
	eh_host_reset_handler:	fcp_scsi_host_reset,		\
}	

#endif /* !(_PLUTO_H) */

