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 /******************************************************************************
25Note:
26*******************************************************************************
27Module Name:
28  agdef.h
29Abstract:
30  Linux iSCSI/FC Initiator driver module constant define header file
31Authors:
32  EW - Yiding(Eddie) Wang
33Environment:
34  Kernel or loadable module
35
36Version Control Information:
37  $ver. 1.0.0
38
39Revision 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
44Notes:
45**************************** MODIFICATION HISTORY *****************************
46NAME     DATE         Rev.          DESCRIPTION
47----     ----         ----          -----------
48EW     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