xref: /freebsd/sys/dev/pms/freebsd/driver/ini/src/agdef.h (revision 19261079)
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 * $FreeBSD$
22 *
23 **
24 *******************************************************************************/
25  /******************************************************************************
26 Note:
27 *******************************************************************************
28 Module Name:
29   agdef.h
30 Abstract:
31   Linux iSCSI/FC Initiator driver module constant define header file
32 Authors:
33   EW - Yiding(Eddie) Wang
34 Environment:
35   Kernel or loadable module
36 
37 Version Control Information:
38   $ver. 1.0.0
39 
40 Revision History:
41   $Revision: 115514 $0.1.0
42   $Date: 2012-01-06 17:12:27 -0800 (Fri, 06 Jan 2012) $09-27-2001
43   $Modtime: 11/12/01 11:15a $15:56:00
44 
45 Notes:
46 **************************** MODIFICATION HISTORY *****************************
47 NAME     DATE         Rev.          DESCRIPTION
48 ----     ----         ----          -----------
49 EW     09-17-2004     1.0.0     Constant definitions
50 ******************************************************************************/
51 
52 
53 #ifndef __AGTIAPI_DEF_H__
54 #define __AGTIAPI_DEF_H__
55 
56 /*
57 ** Max device supported
58 */
59 #define AGTIAPI_HW_LIMIT_DEVICE     4096
60 #define AGTIAPI_MAX_LUN             256    /* Max # luns per target */
61 #define AGTIAPI_MAX_DEVICE          128 //64 //2048//1024 /* Max # device per channel */
62 #define AGTIAPI_MAX_DEVICE_7H       256 /*Max devices per channel in 7H */
63 #define AGTIAPI_MAX_DEVICE_8H       512 /*Max devices per channel in 8H*/
64 #define AGTIAPI_MAX_CAM_Q_DEPTH     1024
65 #define AGTIAPI_NSEGS               (MIN(btoc(maxphys), 64) + 1)
66 /*
67 ** Adapter specific defines
68 */
69 #define AGTIAPI_IO_RANGE  256      /* IO mapped address range */
70 
71 /*
72 **  Scatter/Gather DMA Segment Descriptor
73 **  Note, MAX_Q_DEPTH could be set larger for iscsi "AcceptQueueSize"
74 **  parameter matching.  One thing to do is to make it to be an adjustable
75 **  parameter.  Currently suggest this value set to be same as
76 **  "AcceptQueueSize" but not required.
77 */
78 
79 #define AGTIAPI_MAX_DMA_SEGS     128//256
80 #define AGTIAPI_DEFAULT_Q_DEPTH  4
81 #define AGTIAPI_MAX_Q_DEPTH      AGSA_MAX_INBOUND_Q * 512 // *INBOUND_DEPTH_SIZE
82 
83 /*
84 ** CCB and device flags defines
85 */
86 #define ACTIVE           0x00000001
87 #define TIMEDOUT         0x00000002
88 #define REQ_DONE         0x00000004
89 #define AGTIAPI_INQUIRY  0x00000008
90 #define AGTIAPI_ABORT    0x00000010
91 #define AGTIAPI_RETRY    0x00000020
92 #define TASK_SUCCESS     0x00000040
93 /* reserved for card flag
94 #define AGTIAPI_RESERVED 0x00000080
95 */
96 #define AGTIAPI_CNX_UP   0x00000100
97 #define DEV_RESET        0x00000400    /* device reset */
98 #define DEV_SHIFT        0x00000800    /* device shift physical position */
99 #define AGTIAPI_YAM      0x00001000
100 #define TASK_TIMEOUT     0x00002000
101 #define ENCRYPTED_IO     0x00010000    /* encrypted IO */
102 #define SATA_DIF         0x00020000    /* SATA DIF */
103 #define EDC_DATA         0x00040000
104 #define EDC_DATA_CRC     0x00080000
105 #define TAG_SMP          0x40000000
106 #define TASK_MANAGEMENT  0x80000000
107 
108 #define AGTIAPI_CCB_PER_DEVICE  64
109 #define AGTIAPI_CMD_PER_LUN     512
110 
111 /*
112 ** Max time to call agtiapi_GetDevHandle
113 ** to make sure that no devices are attached
114 */
115 #define AGTIAPI_GET_DEV_MAX  2
116 
117 /*
118 ** Device address mode
119 */
120 #define AGTIAPI_ADDRMODE_SHIFT  6
121 #define AGTIAPI_PERIPHERAL   0x00
122 #define AGTIAPI_VOLUME_SET   0x01
123 #define AGTIAPI_LUN_ADDR     0x02
124 
125 /*
126 ** Device mapping method
127 */
128 #define SOFT_MAPPED        0x0001
129 #define HARD_MAPPED        0x0002
130 
131 /*
132 ** bd_dev_type definitions
133 */
134 #define DIRECT_DEVICE        0x00
135 #define TAPE_DEVICE          0x01
136 #define SLOW_DEVICE          0x02
137 #define ARRAY_DEVICE         0x04
138 
139 /*
140 ** SCSI CDB
141 */
142 #define SCSI_CDB_SIZE        16
143 
144 /*
145 ** SCSI status
146 */
147 #define SCSI_GOOD                   0x00
148 #define SCSI_CHECK_CONDITION        0x02
149 #define SCSI_CONDITION_MET          0x04
150 #define SCSI_BUSY                   0x08
151 #define SCSI_INTERMEDIATE           0x10
152 #define SCSI_INTERMEDIATE_COND_MET  0x14
153 #define SCSI_RESERVATION_CONFLICT   0x18
154 #define SCSI_TASK_ABORTED           0x40
155 #define SCSI_TASK_SET_FULL          0x28
156 #define SCSI_ACA_ACTIVE             0x30
157 
158 /*
159 ** Peripheral device types
160 */
161 #define DTYPE_DIRECT         0x00
162 #define DTYPE_SEQUENTIAL     0x01
163 #define DTYPE_PRINTER        0x02
164 #define DTYPE_PROCESSOR      0x03
165 #define DTYPE_WORM           0x04
166 #define DTYPE_RODIRECT       0x05
167 #define DTYPE_SCANNER        0x06
168 #define DTYPE_OPTICAL        0x07
169 #define DTYPE_CHANGER        0x08
170 #define DTYPE_COMM           0x09
171 #define DTYPE_ARRAY_CTRL     0x0C
172 #define DTYPE_ESI            0x0D
173 /*
174 ** Device types 0x0E-0x1E are reserved
175 */
176 #define DTYPE_MASK           0x1F
177 
178 /*
179 ** Driver capability defines
180 */
181 #define AGTIAPI_TIMEOUT_SECS        10            /* Default timer interval */
182 #define AGTIAPI_RESET_MAX           0x7FFFFFFF    /* Default max. reset */
183 #define AGTIAPI_DEV_RESET_MAX       0x10          /* Default max. reset */
184 #define AGTIAPI_RETRY_MAX           10            /* Default ccb retry cnt */
185 #define AGTIAPI_MAX_CHANNEL_NUM     0             /* Max channel # per card */
186 #define AGTIAPI_PERIPHERAL_CHANNEL  0
187 #define AGTIAPI_VOLUMESET_CHANNEL   1
188 #define AGTIAPI_LUNADDR_CHANNEL     2
189 #define AGTIAPI_EXTRA_DELAY         10000         /* extra 10 seconds delay */
190 
191 /*
192 ** Scsi ioctl test case only
193 */
194 #define AGTIAPI_TEST_ABORT          0xabcd
195 #define AGTIAPI_TEST_ABORT_DONE     0xabce
196 #define AGTIAPI_IOCTL_SIGNATURE     "AGTIAPI_IOCTL"
197 
198 #define AGTIAPI_HBA_SCSI_ID         (AGTIAPI_MAX_DEVICE - 1)
199 #define AGTIAPI_NO_RESEND           0x01   /* Don't resend command */
200 #define AGTIAPI_RESEND              0x02   /* Resend command */
201 //#define AGTIAPI_UPPER               0x04   /* Call from upper layer */
202 #define AGTIAPI_CALLBACK            0x08   /* CMD call back required */
203 
204 #endif  /* __AGTIAPI_DEF_H__ */
205