| #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, \ |
| } |
| |
| #endif /* CPQFCTS_H */ |