1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48#ifndef SCSIHOST_H_INCLUDED
49#define SCSIHOST_H_INCLUDED
50
51
52
53
54
55
56#define MPT_SCANDV_GOOD (0x00000000)
57#define MPT_SCANDV_DID_RESET (0x00000001)
58#define MPT_SCANDV_SENSE (0x00000002)
59#define MPT_SCANDV_SOME_ERROR (0x00000004)
60#define MPT_SCANDV_SELECTION_TIMEOUT (0x00000008)
61#define MPT_SCANDV_ISSUE_SENSE (0x00000010)
62#define MPT_SCANDV_FALLBACK (0x00000020)
63
64#define MPT_SCANDV_MAX_RETRIES (10)
65
66#define MPT_ICFLAG_BUF_CAP 0x01
67#define MPT_ICFLAG_ECHO 0x02
68#define MPT_ICFLAG_EBOS 0x04
69#define MPT_ICFLAG_PHYS_DISK 0x08
70#define MPT_ICFLAG_TAGGED_CMD 0x10
71#define MPT_ICFLAG_DID_RESET 0x20
72#define MPT_ICFLAG_RESERVED 0x40
73
74#define MPT_SCSI_CMD_PER_DEV_HIGH 64
75#define MPT_SCSI_CMD_PER_DEV_LOW 32
76
77#define MPT_SCSI_CMD_PER_LUN 7
78
79#define MPT_SCSI_MAX_SECTORS 8192
80
81
82
83
84#define MPTSCSIH_DOMAIN_VALIDATION 1
85#define MPTSCSIH_MAX_WIDTH 1
86#define MPTSCSIH_MIN_SYNC 0x08
87#define MPTSCSIH_SAF_TE 0
88#define MPTSCSIH_PT_CLEAR 0
89
90#endif
91
92typedef struct _internal_cmd {
93 char *data;
94 dma_addr_t data_dma;
95 int size;
96 u8 cmd;
97 u8 channel;
98 u8 id;
99 int lun;
100 u8 flags;
101 u8 physDiskNum;
102 u8 rsvd2;
103 u8 rsvd;
104} INTERNAL_CMD;
105
106extern void mptscsih_remove(struct pci_dev *);
107extern void mptscsih_shutdown(struct pci_dev *);
108#ifdef CONFIG_PM
109extern int mptscsih_suspend(struct pci_dev *pdev, pm_message_t state);
110extern int mptscsih_resume(struct pci_dev *pdev);
111#endif
112extern int mptscsih_proc_info(struct Scsi_Host *host, char *buffer, char **start, off_t offset, int length, int func);
113extern const char * mptscsih_info(struct Scsi_Host *SChost);
114extern int mptscsih_qcmd(struct scsi_cmnd *SCpnt, void (*done)(struct scsi_cmnd *));
115extern void mptscsih_slave_destroy(struct scsi_device *device);
116extern int mptscsih_slave_configure(struct scsi_device *device);
117extern int mptscsih_abort(struct scsi_cmnd * SCpnt);
118extern int mptscsih_dev_reset(struct scsi_cmnd * SCpnt);
119extern int mptscsih_bus_reset(struct scsi_cmnd * SCpnt);
120extern int mptscsih_host_reset(struct scsi_cmnd *SCpnt);
121extern int mptscsih_bios_param(struct scsi_device * sdev, struct block_device *bdev, sector_t capacity, int geom[]);
122extern int mptscsih_io_done(MPT_ADAPTER *ioc, MPT_FRAME_HDR *mf, MPT_FRAME_HDR *r);
123extern int mptscsih_taskmgmt_complete(MPT_ADAPTER *ioc, MPT_FRAME_HDR *mf, MPT_FRAME_HDR *r);
124extern int mptscsih_scandv_complete(MPT_ADAPTER *ioc, MPT_FRAME_HDR *mf, MPT_FRAME_HDR *r);
125extern int mptscsih_event_process(MPT_ADAPTER *ioc, EventNotificationReply_t *pEvReply);
126extern int mptscsih_ioc_reset(MPT_ADAPTER *ioc, int post_reset);
127extern int mptscsih_change_queue_depth(struct scsi_device *sdev, int qdepth);
128extern void mptscsih_timer_expired(unsigned long data);
129extern int mptscsih_TMHandler(MPT_SCSI_HOST *hd, u8 type, u8 channel, u8 id, int lun, int ctx2abort, ulong timeout);
130extern u8 mptscsih_raid_id_to_num(MPT_ADAPTER *ioc, u8 channel, u8 id);
131extern int mptscsih_is_phys_disk(MPT_ADAPTER *ioc, u8 channel, u8 id);
132extern struct device_attribute *mptscsih_host_attrs[];
133