|
|
1.1 root 1: #ifndef _LINUX_SCSI_H
2: #define _LINUX_SCSI_H
3:
4: /*
5: * This header file contains public constants and structures used by
6: * the scsi code for linux.
7: */
8:
9: /*
1.1.1.2 ! root 10: $Header: /cvs/gnumach/linux/src/include/scsi/scsi.h,v 1.1 1999/04/26 05:58:14 tb Exp $
1.1 root 11:
12: For documentation on the OPCODES, MESSAGES, and SENSE values,
13: please consult the SCSI standard.
14:
15: */
16:
17: /*
18: * SCSI opcodes
19: */
20:
21: #define TEST_UNIT_READY 0x00
22: #define REZERO_UNIT 0x01
23: #define REQUEST_SENSE 0x03
24: #define FORMAT_UNIT 0x04
25: #define READ_BLOCK_LIMITS 0x05
26: #define REASSIGN_BLOCKS 0x07
27: #define READ_6 0x08
28: #define WRITE_6 0x0a
29: #define SEEK_6 0x0b
30: #define READ_REVERSE 0x0f
31: #define WRITE_FILEMARKS 0x10
32: #define SPACE 0x11
33: #define INQUIRY 0x12
34: #define RECOVER_BUFFERED_DATA 0x14
35: #define MODE_SELECT 0x15
36: #define RESERVE 0x16
37: #define RELEASE 0x17
38: #define COPY 0x18
39: #define ERASE 0x19
40: #define MODE_SENSE 0x1a
41: #define START_STOP 0x1b
42: #define RECEIVE_DIAGNOSTIC 0x1c
43: #define SEND_DIAGNOSTIC 0x1d
44: #define ALLOW_MEDIUM_REMOVAL 0x1e
45:
46: #define SET_WINDOW 0x24
47: #define READ_CAPACITY 0x25
48: #define READ_10 0x28
49: #define WRITE_10 0x2a
50: #define SEEK_10 0x2b
51: #define WRITE_VERIFY 0x2e
52: #define VERIFY 0x2f
53: #define SEARCH_HIGH 0x30
54: #define SEARCH_EQUAL 0x31
55: #define SEARCH_LOW 0x32
56: #define SET_LIMITS 0x33
57: #define PRE_FETCH 0x34
58: #define READ_POSITION 0x34
59: #define SYNCHRONIZE_CACHE 0x35
60: #define LOCK_UNLOCK_CACHE 0x36
61: #define READ_DEFECT_DATA 0x37
62: #define MEDIUM_SCAN 0x38
63: #define COMPARE 0x39
64: #define COPY_VERIFY 0x3a
65: #define WRITE_BUFFER 0x3b
66: #define READ_BUFFER 0x3c
67: #define UPDATE_BLOCK 0x3d
68: #define READ_LONG 0x3e
69: #define WRITE_LONG 0x3f
70: #define CHANGE_DEFINITION 0x40
71: #define WRITE_SAME 0x41
72: #define READ_TOC 0x43
73: #define LOG_SELECT 0x4c
74: #define LOG_SENSE 0x4d
75: #define MODE_SELECT_10 0x55
76: #define MODE_SENSE_10 0x5a
77: #define MOVE_MEDIUM 0xa5
78: #define READ_12 0xa8
79: #define WRITE_12 0xaa
80: #define WRITE_VERIFY_12 0xae
81: #define SEARCH_HIGH_12 0xb0
82: #define SEARCH_EQUAL_12 0xb1
83: #define SEARCH_LOW_12 0xb2
84: #define READ_ELEMENT_STATUS 0xb8
85: #define SEND_VOLUME_TAG 0xb6
86: #define WRITE_LONG_2 0xea
87:
88: /*
89: * Status codes
90: */
91:
92: #define GOOD 0x00
93: #define CHECK_CONDITION 0x01
94: #define CONDITION_GOOD 0x02
95: #define BUSY 0x04
96: #define INTERMEDIATE_GOOD 0x08
97: #define INTERMEDIATE_C_GOOD 0x0a
98: #define RESERVATION_CONFLICT 0x0c
99: #define COMMAND_TERMINATED 0x11
100: #define QUEUE_FULL 0x14
101:
102: #define STATUS_MASK 0x3e
103:
104: /*
105: * SENSE KEYS
106: */
107:
108: #define NO_SENSE 0x00
109: #define RECOVERED_ERROR 0x01
110: #define NOT_READY 0x02
111: #define MEDIUM_ERROR 0x03
112: #define HARDWARE_ERROR 0x04
113: #define ILLEGAL_REQUEST 0x05
114: #define UNIT_ATTENTION 0x06
115: #define DATA_PROTECT 0x07
116: #define BLANK_CHECK 0x08
117: #define COPY_ABORTED 0x0a
118: #define ABORTED_COMMAND 0x0b
119: #define VOLUME_OVERFLOW 0x0d
120: #define MISCOMPARE 0x0e
121:
122:
123: /*
124: * DEVICE TYPES
125: */
126:
127: #define TYPE_DISK 0x00
128: #define TYPE_TAPE 0x01
129: #define TYPE_PROCESSOR 0x03 /* HP scanners use this */
130: #define TYPE_WORM 0x04 /* Treated as ROM by our system */
131: #define TYPE_ROM 0x05
132: #define TYPE_SCANNER 0x06
133: #define TYPE_MOD 0x07 /* Magneto-optical disk -
134: * - treated as TYPE_DISK */
135: #define TYPE_MEDIUM_CHANGER 0x08
136: #define TYPE_NO_LUN 0x7f
137:
138:
139: /*
140: * MESSAGE CODES
141: */
142:
143: #define COMMAND_COMPLETE 0x00
144: #define EXTENDED_MESSAGE 0x01
145: #define EXTENDED_MODIFY_DATA_POINTER 0x00
146: #define EXTENDED_SDTR 0x01
147: #define EXTENDED_EXTENDED_IDENTIFY 0x02 /* SCSI-I only */
148: #define EXTENDED_WDTR 0x03
149: #define SAVE_POINTERS 0x02
150: #define RESTORE_POINTERS 0x03
151: #define DISCONNECT 0x04
152: #define INITIATOR_ERROR 0x05
153: #define ABORT 0x06
154: #define MESSAGE_REJECT 0x07
155: #define NOP 0x08
156: #define MSG_PARITY_ERROR 0x09
157: #define LINKED_CMD_COMPLETE 0x0a
158: #define LINKED_FLG_CMD_COMPLETE 0x0b
159: #define BUS_DEVICE_RESET 0x0c
160:
161: #define INITIATE_RECOVERY 0x0f /* SCSI-II only */
162: #define RELEASE_RECOVERY 0x10 /* SCSI-II only */
163:
164: #define SIMPLE_QUEUE_TAG 0x20
165: #define HEAD_OF_QUEUE_TAG 0x21
166: #define ORDERED_QUEUE_TAG 0x22
167:
168: /*
169: * Here are some scsi specific ioctl commands which are sometimes useful.
170: */
171: /* These are a few other constants only used by scsi devices */
172:
173: #define SCSI_IOCTL_GET_IDLUN 0x5382
174:
175: /* Used to turn on and off tagged queuing for scsi devices */
176:
177: #define SCSI_IOCTL_TAGGED_ENABLE 0x5383
178: #define SCSI_IOCTL_TAGGED_DISABLE 0x5384
179:
180: /* Used to obtain the host number of a device. */
181: #define SCSI_IOCTL_PROBE_HOST 0x5385
182:
183: /* Used to get the bus number for a device */
184: #define SCSI_IOCTL_GET_BUS_NUMBER 0x5386
185:
186: /*
187: * Overrides for Emacs so that we follow Linus's tabbing style.
188: * Emacs will notice this stuff at the end of the file and automatically
189: * adjust the settings for this buffer only. This must remain at the end
190: * of the file.
191: * ---------------------------------------------------------------------------
192: * Local variables:
193: * c-indent-level: 4
194: * c-brace-imaginary-offset: 0
195: * c-brace-offset: -4
196: * c-argdecl-indent: 4
197: * c-label-offset: -4
198: * c-continued-statement-offset: 4
199: * c-continued-brace-offset: 0
200: * indent-tabs-mode: nil
201: * tab-width: 8
202: * End:
203: */
204:
205: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.