0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036
0037
0038
0039
0040
0041
0042
0043
0044
0045
0046
0047
0048 #ifndef SCSIHOST_H_INCLUDED
0049 #define SCSIHOST_H_INCLUDED
0050
0051
0052
0053
0054
0055
0056 #define MPT_SCANDV_GOOD (0x00000000)
0057 #define MPT_SCANDV_DID_RESET (0x00000001)
0058 #define MPT_SCANDV_SENSE (0x00000002)
0059 #define MPT_SCANDV_SOME_ERROR (0x00000004)
0060 #define MPT_SCANDV_SELECTION_TIMEOUT (0x00000008)
0061 #define MPT_SCANDV_ISSUE_SENSE (0x00000010)
0062 #define MPT_SCANDV_FALLBACK (0x00000020)
0063 #define MPT_SCANDV_BUSY (0x00000040)
0064
0065 #define MPT_SCANDV_MAX_RETRIES (10)
0066
0067 #define MPT_ICFLAG_BUF_CAP 0x01
0068 #define MPT_ICFLAG_ECHO 0x02
0069 #define MPT_ICFLAG_EBOS 0x04
0070 #define MPT_ICFLAG_PHYS_DISK 0x08
0071 #define MPT_ICFLAG_TAGGED_CMD 0x10
0072 #define MPT_ICFLAG_DID_RESET 0x20
0073 #define MPT_ICFLAG_RESERVED 0x40
0074
0075 #define MPT_SCSI_CMD_PER_DEV_HIGH 64
0076 #define MPT_SCSI_CMD_PER_DEV_LOW 32
0077
0078 #define MPT_SCSI_CMD_PER_LUN 7
0079
0080 #define MPT_SCSI_MAX_SECTORS 8192
0081
0082
0083
0084
0085 #define MPTSCSIH_DOMAIN_VALIDATION 1
0086 #define MPTSCSIH_MAX_WIDTH 1
0087 #define MPTSCSIH_MIN_SYNC 0x08
0088 #define MPTSCSIH_SAF_TE 0
0089 #define MPTSCSIH_PT_CLEAR 0
0090
0091 #endif
0092
0093
0094 typedef struct _internal_cmd {
0095 char *data;
0096 dma_addr_t data_dma;
0097 int size;
0098 u8 cmd;
0099 u8 channel;
0100 u8 id;
0101 u64 lun;
0102 u8 flags;
0103 u8 physDiskNum;
0104 u8 rsvd2;
0105 u8 rsvd;
0106 } INTERNAL_CMD;
0107
0108 extern void mptscsih_remove(struct pci_dev *);
0109 extern void mptscsih_shutdown(struct pci_dev *);
0110 #ifdef CONFIG_PM
0111 extern int mptscsih_suspend(struct pci_dev *pdev, pm_message_t state);
0112 extern int mptscsih_resume(struct pci_dev *pdev);
0113 #endif
0114 extern int mptscsih_show_info(struct seq_file *, struct Scsi_Host *);
0115 extern const char * mptscsih_info(struct Scsi_Host *SChost);
0116 extern int mptscsih_qcmd(struct scsi_cmnd *SCpnt);
0117 extern int mptscsih_IssueTaskMgmt(MPT_SCSI_HOST *hd, u8 type, u8 channel,
0118 u8 id, u64 lun, int ctx2abort, ulong timeout);
0119 extern void mptscsih_slave_destroy(struct scsi_device *device);
0120 extern int mptscsih_slave_configure(struct scsi_device *device);
0121 extern int mptscsih_abort(struct scsi_cmnd * SCpnt);
0122 extern int mptscsih_dev_reset(struct scsi_cmnd * SCpnt);
0123 extern int mptscsih_bus_reset(struct scsi_cmnd * SCpnt);
0124 extern int mptscsih_host_reset(struct scsi_cmnd *SCpnt);
0125 extern int mptscsih_bios_param(struct scsi_device * sdev, struct block_device *bdev, sector_t capacity, int geom[]);
0126 extern int mptscsih_io_done(MPT_ADAPTER *ioc, MPT_FRAME_HDR *mf, MPT_FRAME_HDR *r);
0127 extern int mptscsih_taskmgmt_complete(MPT_ADAPTER *ioc, MPT_FRAME_HDR *mf, MPT_FRAME_HDR *r);
0128 extern int mptscsih_scandv_complete(MPT_ADAPTER *ioc, MPT_FRAME_HDR *mf, MPT_FRAME_HDR *r);
0129 extern int mptscsih_event_process(MPT_ADAPTER *ioc, EventNotificationReply_t *pEvReply);
0130 extern int mptscsih_ioc_reset(MPT_ADAPTER *ioc, int post_reset);
0131 extern int mptscsih_change_queue_depth(struct scsi_device *sdev, int qdepth);
0132 extern u8 mptscsih_raid_id_to_num(MPT_ADAPTER *ioc, u8 channel, u8 id);
0133 extern int mptscsih_is_phys_disk(MPT_ADAPTER *ioc, u8 channel, u8 id);
0134 extern const struct attribute_group *mptscsih_host_attr_groups[];
0135 extern struct scsi_cmnd *mptscsih_get_scsi_lookup(MPT_ADAPTER *ioc, int i);
0136 extern void mptscsih_taskmgmt_response_code(MPT_ADAPTER *ioc, u8 response_code);
0137 extern void mptscsih_flush_running_cmds(MPT_SCSI_HOST *hd);