Annotation of sys/dev/ic/aic7xxx_cam.h, Revision 1.1.1.1
1.1 nbrk 1: /* $OpenBSD: aic7xxx_cam.h,v 1.6 2005/12/10 02:45:20 krw Exp $ */
2: /* $NetBSD: aic7xxx_cam.h,v 1.3 2003/04/20 11:17:20 fvdl Exp $ */
3:
4: /*
5: * Data structures and definitions for the CAM system.
6: *
7: * Copyright (c) 1997 Justin T. Gibbs.
8: * Copyright (c) 2000 Adaptec Inc.
9: * All rights reserved.
10: *
11: * Redistribution and use in source and binary forms, with or without
12: * modification, are permitted provided that the following conditions
13: * are met:
14: * 1. Redistributions of source code must retain the above copyright
15: * notice, this list of conditions, and the following disclaimer,
16: * without modification.
17: * 2. The name of the author may not be used to endorse or promote products
18: * derived from this software without specific prior written permission.
19: *
20: * Alternatively, this software may be distributed under the terms of the
21: * GNU General Public License ("GPL").
22: *
23: * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
24: * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
25: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
26: * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR
27: * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
28: * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
29: * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
30: * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
31: * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
32: * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
33: * SUCH DAMAGE.
34: *
35: */
36: /*
37: * Ported from FreeBSD by Pascal Renauld, Network Storage Solutions, Inc. - April 2003
38: */
39:
40: #ifndef _AIC7XXX_CAM_H
41: #define _AIC7XXX_CAM_H
42:
43: #define SCSI_REV_2 2
44:
45: #define CAM_BUS_WILDCARD ((u_int)~0)
46: #define CAM_TARGET_WILDCARD ((u_int)~0)
47: #define CAM_LUN_WILDCARD -1
48:
49: /*
50: * Translate FreeBSD names for SCSI status byte values to OpenBSD names.
51: */
52: #define SCSI_STATUS_OK SCSI_OK
53: #define SCSI_STATUS_CHECK_COND SCSI_CHECK
54: #define SCSI_STATUS_COND_MET SCSI_COND_MET
55: #define SCSI_STATUS_BUSY SCSI_BUSY
56: #define SCSI_STATUS_INTERMED SCSI_INTERM
57: #define SCSI_STATUS_INTERMED_COND_MET SCSI_INTERMED_COND_MET
58: #define SCSI_STATUS_RESERV_CONFLICT SCSI_RESERV_CONFLICT
59: #define SCSI_STATUS_CMD_TERMINATED SCSI_TERMINATED
60: #define SCSI_STATUS_QUEUE_FULL SCSI_QUEUE_FULL
61:
62: #define XS_CTL_DATA_IN SCSI_DATA_IN
63: #define XS_CTL_POLL SCSI_POLL
64: #define XS_CTL_RESET SCSI_RESET
65:
66: #define MSG_EXT_PPR_QAS_REQ MSG_EXT_PPR_PROT_QAS
67: #define MSG_EXT_PPR_IU_REQ MSG_EXT_PPR_PROT_IUS
68: #define MSG_EXT_PPR_DT_REQ MSG_EXT_PPR_PROT_DT
69: #define MSG_ORDERED_TASK MSG_ORDERED_Q_TAG
70: #define MSG_SIMPLE_TASK MSG_SIMPLE_Q_TAG
71: #define MSG_ABORT_TASK MSG_ABORT_TAG
72:
73: #define scsipi_channel scsi_link
74: #define scsipi_xfer scsi_xfer
75: #define scsipi_adapter scsi_adapter
76: #define scsipi_sense_data scsi_sense_data
77: #define scsipi_sense scsi_sense
78: #define scsipi_periph scsi_link
79:
80: #define callout_reset(timer, timeout, func, arg) do { \
81: if (!timeout_initialized((timer))) \
82: timeout_set((timer), (func), (arg)); \
83: timeout_add((timer), (timeout)); \
84: } while (0)
85:
86: #define aic_delay DELAY
87:
88: #define aic_htobe16(x) htobe16(x)
89: #define aic_htobe32(x) htobe32(x)
90: #define aic_htobe64(x) htobe64(x)
91: #define aic_htole16(x) htole16(x)
92: #define aic_htole32(x) htole32(x)
93: #define aic_htole64(x) htole64(x)
94:
95: #define aic_be16toh(x) be16toh(x)
96: #define aic_be32toh(x) be32toh(x)
97: #define aic_be64toh(x) be64toh(x)
98: #define aic_le16toh(x) letoh16(x)
99: #define aic_le32toh(x) letoh32(x)
100: #define aic_le64toh(x) letoh64(x)
101:
102: #define xs_control flags
103: #define xs_callout stimeout
104: #define xs_status status
105:
106: /* CAM Status field values */
107: typedef enum {
108: CAM_REQ_INPROG, /* CCB request is in progress */
109: CAM_REQ_CMP, /* CCB request completed without error */
110: CAM_REQ_ABORTED, /* CCB request aborted by the host */
111: CAM_UA_ABORT, /* Unable to abort CCB request */
112: CAM_REQ_CMP_ERR, /* CCB request completed with an error */
113: CAM_BUSY, /* CAM subsytem is busy */
114: CAM_REQ_INVALID, /* CCB request was invalid */
115: CAM_PATH_INVALID, /* Supplied Path ID is invalid */
116: CAM_SEL_TIMEOUT, /* Target Selection Timeout */
117: CAM_CMD_TIMEOUT, /* Command timeout */
118: CAM_SCSI_STATUS_ERROR, /* SCSI error, look at error code in CCB */
119: CAM_SCSI_BUS_RESET, /* SCSI Bus Reset Sent/Received */
120: CAM_UNCOR_PARITY, /* Uncorrectable parity error occurred */
121: CAM_AUTOSENSE_FAIL, /* Autosense: request sense cmd fail */
122: CAM_NO_HBA, /* No HBA Detected Error */
123: CAM_DATA_RUN_ERR, /* Data Overrun error */
124: CAM_UNEXP_BUSFREE, /* Unexpected Bus Free */
125: CAM_SEQUENCE_FAIL, /* Protocol Violation */
126: CAM_CCB_LEN_ERR, /* CCB length supplied is inadequate */
127: CAM_PROVIDE_FAIL, /* Unable to provide requested capability */
128: CAM_BDR_SENT, /* A SCSI BDR msg was sent to target */
129: CAM_REQ_TERMIO, /* CCB request terminated by the host */
130: CAM_UNREC_HBA_ERROR, /* Unrecoverable Host Bus Adapter Error */
131: CAM_REQ_TOO_BIG, /* The request was too large for this host */
132: CAM_UA_TERMIO, /* Unable to terminate I/O CCB request */
133: CAM_MSG_REJECT_REC, /* Message Reject Received */
134: CAM_DEV_NOT_THERE, /* SCSI Device Not Installed/there */
135: CAM_RESRC_UNAVAIL, /* Resource Unavailable */
136: /*
137: * This request should be requeued to preserve
138: * transaction ordering. This typically occurs
139: * when the SIM recognizes an error that should
140: * freeze the queue and must place additional
141: * requests for the target at the sim level
142: * back into the XPT queue.
143: */
144: CAM_REQUEUE_REQ,
145: CAM_DEV_QFRZN = 0x40,
146:
147: CAM_STATUS_MASK = 0x3F
148: } cam_status;
149:
150: typedef enum {
151: CAM_DIR_IN = SCSI_DATA_IN,
152: CAM_DIR_OUT = SCSI_DATA_OUT
153: } ccb_flags;
154:
155: typedef enum {
156: AC_BUS_RESET = 0x001,
157: AC_UNSOL_RESEL = 0x002,
158: AC_SCSI_AEN = 0x008,
159: AC_SENT_BDR = 0x010,
160: AC_PATH_REGISTERED = 0x020,
161: AC_PATH_DEREGISTERED = 0x040,
162: AC_FOUND_DEVICE = 0x080,
163: AC_LOST_DEVICE = 0x100,
164: AC_TRANSFER_NEG = 0x200,
165: AC_INQ_CHANGED = 0x400,
166: AC_GETDEV_CHANGED = 0x800
167: } ac_code;
168:
169: #endif /* _AIC7XXX_CAM_H */
CVSweb