xref: /freebsd/sys/dev/pms/freebsd/driver/ini/src/agdef.h (revision 1719886f6d08408b834d270c59ffcfd821c8f63a)
1 /*******************************************************************************
2  **
3  **
4 *Copyright (c) 2014 PMC-Sierra, Inc.  All rights reserved.
5  *
6 *Redistribution and use in source and binary forms, with or without modification, are permitted provided
7 *that the following conditions are met:
8 *1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
9 *2. Redistributions in binary form must reproduce the above copyright notice,
10 *this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
11 *
12 *THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
13 *
14 *INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
15 *ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
16 *SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
17 *OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
18 *WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
19 *THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE
20 *
21 *
22 **
23 *******************************************************************************/
24  /******************************************************************************
25 Note:
26 *******************************************************************************
27 Module Name:
28   agdef.h
29 Abstract:
30   Linux iSCSI/FC Initiator driver module constant define header file
31 Authors:
32   EW - Yiding(Eddie) Wang
33 Environment:
34   Kernel or loadable module
35 
36 Version Control Information:
37   $ver. 1.0.0
38 
39 Revision History:
40   $Revision: 115514 $0.1.0
41   $Date: 2012-01-06 17:12:27 -0800 (Fri, 06 Jan 2012) $09-27-2001
42   $Modtime: 11/12/01 11:15a $15:56:00
43 
44 Notes:
45 **************************** MODIFICATION HISTORY *****************************
46 NAME     DATE         Rev.          DESCRIPTION
47 ----     ----         ----          -----------
48 EW     09-17-2004     1.0.0     Constant definitions
49 ******************************************************************************/
50 
51 
52 #ifndef __AGTIAPI_DEF_H__
53 #define __AGTIAPI_DEF_H__
54 
55 /*
56 ** Max device supported
57 */
58 #define AGTIAPI_HW_LIMIT_DEVICE     4096
59 #define AGTIAPI_MAX_LUN             256    /* Max # luns per target */
60 #define AGTIAPI_MAX_DEVICE          128 //64 //2048//1024 /* Max # device per channel */
61 #define AGTIAPI_MAX_DEVICE_7H       256 /*Max devices per channel in 7H */
62 #define AGTIAPI_MAX_DEVICE_8H       512 /*Max devices per channel in 8H*/
63 #define AGTIAPI_MAX_CAM_Q_DEPTH     1024
64 #define AGTIAPI_NSEGS               (MIN(btoc(maxphys), 64) + 1)
65 /*
66 ** Adapter specific defines
67 */
68 #define AGTIAPI_IO_RANGE  256      /* IO mapped address range */
69 
70 /*
71 **  Scatter/Gather DMA Segment Descriptor
72 **  Note, MAX_Q_DEPTH could be set larger for iscsi "AcceptQueueSize"
73 **  parameter matching.  One thing to do is to make it to be an adjustable
74 **  parameter.  Currently suggest this value set to be same as
75 **  "AcceptQueueSize" but not required.
76 */
77 
78 #define AGTIAPI_MAX_DMA_SEGS     128//256
79 #define AGTIAPI_DEFAULT_Q_DEPTH  4
80 #define AGTIAPI_MAX_Q_DEPTH      AGSA_MAX_INBOUND_Q * 512 // *INBOUND_DEPTH_SIZE
81 
82 /*
83 ** CCB and device flags defines
84 */
85 #define ACTIVE           0x00000001
86 #define TIMEDOUT         0x00000002
87 #define REQ_DONE         0x00000004
88 #define AGTIAPI_INQUIRY  0x00000008
89 #define AGTIAPI_ABORT    0x00000010
90 #define AGTIAPI_RETRY    0x00000020
91 #define TASK_SUCCESS     0x00000040
92 /* reserved for card flag
93 #define AGTIAPI_RESERVED 0x00000080
94 */
95 #define AGTIAPI_CNX_UP   0x00000100
96 #define DEV_RESET        0x00000400    /* device reset */
97 #define DEV_SHIFT        0x00000800    /* device shift physical position */
98 #define AGTIAPI_YAM      0x00001000
99 #define TASK_TIMEOUT     0x00002000
100 #define ENCRYPTED_IO     0x00010000    /* encrypted IO */
101 #define SATA_DIF         0x00020000    /* SATA DIF */
102 #define EDC_DATA         0x00040000
103 #define EDC_DATA_CRC     0x00080000
104 #define TAG_SMP          0x40000000
105 #define TASK_MANAGEMENT  0x80000000
106 
107 #define AGTIAPI_CCB_PER_DEVICE  64
108 #define AGTIAPI_CMD_PER_LUN     512
109 
110 /*
111 ** Max time to call agtiapi_GetDevHandle
112 ** to make sure that no devices are attached
113 */
114 #define AGTIAPI_GET_DEV_MAX  2
115 
116 /*
117 ** Device address mode
118 */
119 #define AGTIAPI_ADDRMODE_SHIFT  6
120 #define AGTIAPI_PERIPHERAL   0x00
121 #define AGTIAPI_VOLUME_SET   0x01
122 #define AGTIAPI_LUN_ADDR     0x02
123 
124 /*
125 ** Device mapping method
126 */
127 #define SOFT_MAPPED        0x0001
128 #define HARD_MAPPED        0x0002
129 
130 /*
131 ** bd_dev_type definitions
132 */
133 #define DIRECT_DEVICE        0x00
134 #define TAPE_DEVICE          0x01
135 #define SLOW_DEVICE          0x02
136 #define ARRAY_DEVICE         0x04
137 
138 /*
139 ** SCSI CDB
140 */
141 #define SCSI_CDB_SIZE        16
142 
143 /*
144 ** SCSI status
145 */
146 #define SCSI_GOOD                   0x00
147 #define SCSI_CHECK_CONDITION        0x02
148 #define SCSI_CONDITION_MET          0x04
149 #define SCSI_BUSY                   0x08
150 #define SCSI_INTERMEDIATE           0x10
151 #define SCSI_INTERMEDIATE_COND_MET  0x14
152 #define SCSI_RESERVATION_CONFLICT   0x18
153 #define SCSI_TASK_ABORTED           0x40
154 #define SCSI_TASK_SET_FULL          0x28
155 #define SCSI_ACA_ACTIVE             0x30
156 
157 /*
158 ** Peripheral device types
159 */
160 #define DTYPE_DIRECT         0x00
161 #define DTYPE_SEQUENTIAL     0x01
162 #define DTYPE_PRINTER        0x02
163 #define DTYPE_PROCESSOR      0x03
164 #define DTYPE_WORM           0x04
165 #define DTYPE_RODIRECT       0x05
166 #define DTYPE_SCANNER        0x06
167 #define DTYPE_OPTICAL        0x07
168 #define DTYPE_CHANGER        0x08
169 #define DTYPE_COMM           0x09
170 #define DTYPE_ARRAY_CTRL     0x0C
171 #define DTYPE_ESI            0x0D
172 /*
173 ** Device types 0x0E-0x1E are reserved
174 */
175 #define DTYPE_MASK           0x1F
176 
177 /*
178 ** Driver capability defines
179 */
180 #define AGTIAPI_TIMEOUT_SECS        10            /* Default timer interval */
181 #define AGTIAPI_RESET_MAX           0x7FFFFFFF    /* Default max. reset */
182 #define AGTIAPI_DEV_RESET_MAX       0x10          /* Default max. reset */
183 #define AGTIAPI_RETRY_MAX           10            /* Default ccb retry cnt */
184 #define AGTIAPI_MAX_CHANNEL_NUM     0             /* Max channel # per card */
185 #define AGTIAPI_PERIPHERAL_CHANNEL  0
186 #define AGTIAPI_VOLUMESET_CHANNEL   1
187 #define AGTIAPI_LUNADDR_CHANNEL     2
188 #define AGTIAPI_EXTRA_DELAY         10000         /* extra 10 seconds delay */
189 
190 /*
191 ** Scsi ioctl test case only
192 */
193 #define AGTIAPI_TEST_ABORT          0xabcd
194 #define AGTIAPI_TEST_ABORT_DONE     0xabce
195 #define AGTIAPI_IOCTL_SIGNATURE     "AGTIAPI_IOCTL"
196 
197 #define AGTIAPI_HBA_SCSI_ID         (AGTIAPI_MAX_DEVICE - 1)
198 #define AGTIAPI_NO_RESEND           0x01   /* Don't resend command */
199 #define AGTIAPI_RESEND              0x02   /* Resend command */
200 //#define AGTIAPI_UPPER               0x04   /* Call from upper layer */
201 #define AGTIAPI_CALLBACK            0x08   /* CMD call back required */
202 
203 #endif  /* __AGTIAPI_DEF_H__ */
204