#ifndef CPQFCTS_H
#define CPQFCTS_H
#include "cpqfcTSstructs.h"
// These functions are required by the Linux SCSI layers
extern int cpqfcTS_detect(Scsi_Host_Template *);
extern int cpqfcTS_release(struct Scsi_Host *);
extern const char * cpqfcTS_info(struct Scsi_Host *);
extern int cpqfcTS_proc_info(char *, char **, off_t, int, int, int);
extern int cpqfcTS_queuecommand(Scsi_Cmnd *, void (* done)(Scsi_Cmnd *));
extern int cpqfcTS_abort(Scsi_Cmnd *);
extern int cpqfcTS_reset(Scsi_Cmnd *, unsigned int);
extern int cpqfcTS_eh_abort(Scsi_Cmnd *Cmnd);
extern int cpqfcTS_eh_device_reset(Scsi_Cmnd *);
extern int cpqfcTS_biosparam(Disk *, kdev_t, int[]);
extern int cpqfcTS_ioctl( Scsi_Device *ScsiDev, int Cmnd, void *arg);
// note: since Tachyon TS supports an extended scatter/gather
// linked list of infinite length (with linked Ext S/G pages,
// limited only by available physical memory) we use SG_ALL.
#define CPQFCTS { \
detect: cpqfcTS_detect, \
release: cpqfcTS_release, \
info: cpqfcTS_info, \
proc_info: cpqfcTS_proc_info, \
ioctl: cpqfcTS_ioctl, \
queuecommand: cpqfcTS_queuecommand, \
eh_device_reset_handler: cpqfcTS_eh_device_reset, \
eh_abort_handler: cpqfcTS_eh_abort, \
reset: cpqfcTS_reset, \
abort: cpqfcTS_abort, \
bios_param: cpqfcTS_biosparam, \
can_queue: CPQFCTS_REQ_QUEUE_LEN, \
this_id: -1, \
sg_tablesize: SG_ALL, \
cmd_per_lun: CPQFCTS_CMD_PER_LUN, \
present: 0, \
unchecked_isa_dma: 0, \
use_clustering: ENABLE_CLUSTERING, \
use_new_eh_code: 1 \
}
#endif /* CPQFCTS_H */