Restore the "GPL licensing not permitted" in GLUT license headers.
[haiku.git] / headers / os / device / scsi.h
blobcba040187c8c80a792769646df63929b938bbcae
1 /*
2 * Copyright 2009, Haiku Inc. All rights reserved.
3 * Distributed under the terms of the MIT License.
4 */
5 #ifndef _SCSI_H
6 #define _SCSI_H
9 #include <Drivers.h>
10 #include <OS.h>
11 #include <SupportDefs.h>
14 /* SCSI device types */
15 #define B_SCSI_DISK 0x00
16 #define B_SCSI_TAPE 0x01
17 #define B_SCSI_PRINTER 0x02
18 #define B_SCSI_CPU 0x03
19 #define B_SCSI_WORM 0x04
20 #define B_SCSI_CD 0x05
21 #define B_SCSI_SCANNER 0x06
22 #define B_SCSI_OPTICAL 0x07
23 #define B_SCSI_JUKEBOX 0x08
24 #define B_SCSI_NETWORK 0x09
27 /* SCSI device masks */
28 #define B_SCSI_ALL_DEVICES_MASK 0xffffffff
29 #define B_SCSI_DISK_MASK (1 << (B_SCSI_DISK))
30 #define B_SCSI_TAPE_MASK (1 << (B_SCSI_TAPE))
31 #define B_SCSI_PRINTER_MASK (1 << (B_SCSI_PRINTER))
32 #define B_SCSI_CPU_MASK (1 << (B_SCSI_CPU))
33 #define B_SCSI_WORM_MASK (1 << (B_SCSI_WORM))
34 #define B_SCSI_CD_MASK (1 << (B_SCSI_CD))
35 #define B_SCSI_SCANNER_MASK (1 << (B_SCSI_SCANNER))
36 #define B_SCSI_OPTICAL_MASK (1 << (B_SCSI_OPTICAL))
37 #define B_SCSI_JUKEBOX_MASK (1 << (B_SCSI_JUKEBOX))
38 #define B_SCSI_NETWORK_MASK (1 << (B_SCSI_NETWORK))
41 enum {
42 B_SCSI_SCAN_FOR_DEVICES = B_DEVICE_OP_CODES_END + 1,
43 B_SCSI_ENABLE_PROFILING
47 enum {
48 B_SCSI_INQUIRY = B_DEVICE_OP_CODES_END + 100,
49 B_SCSI_EJECT,
50 B_SCSI_PREVENT_ALLOW,
51 B_RAW_DEVICE_COMMAND
55 typedef struct {
56 uchar inquiry_data[36];
57 } scsi_inquiry;
60 enum {
61 B_SCSI_GET_TOC = B_DEVICE_OP_CODES_END + 200,
62 B_SCSI_PLAY_TRACK,
63 B_SCSI_PLAY_POSITION,
64 B_SCSI_STOP_AUDIO,
65 B_SCSI_PAUSE_AUDIO,
66 B_SCSI_RESUME_AUDIO,
67 B_SCSI_GET_POSITION,
68 B_SCSI_SET_VOLUME,
69 B_SCSI_GET_VOLUME,
70 B_SCSI_READ_CD,
71 B_SCSI_SCAN,
72 B_SCSI_DATA_MODE
76 typedef struct {
77 uchar toc_data[804];
78 } scsi_toc;
81 typedef struct {
82 uchar start_track;
83 uchar start_index;
84 uchar end_track;
85 uchar end_index;
86 } scsi_play_track;
89 typedef struct {
90 uchar start_m;
91 uchar start_s;
92 uchar start_f;
93 uchar end_m;
94 uchar end_s;
95 uchar end_f;
96 } scsi_play_position;
99 typedef struct {
100 uchar position[16];
101 } scsi_position;
104 typedef struct {
105 uchar flags;
106 uchar port0_channel;
107 uchar port0_volume;
108 uchar port1_channel;
109 uchar port1_volume;
110 uchar port2_channel;
111 uchar port2_volume;
112 uchar port3_channel;
113 uchar port3_volume;
114 } scsi_volume;
117 #define B_SCSI_PORT0_CHANNEL 0x01
118 #define B_SCSI_PORT0_VOLUME 0x02
119 #define B_SCSI_PORT1_CHANNEL 0x04
120 #define B_SCSI_PORT1_VOLUME 0x08
121 #define B_SCSI_PORT2_CHANNEL 0x10
122 #define B_SCSI_PORT2_VOLUME 0x20
123 #define B_SCSI_PORT3_CHANNEL 0x40
124 #define B_SCSI_PORT3_VOLUME 0x80
127 typedef struct {
128 uchar start_m;
129 uchar start_s;
130 uchar start_f;
131 uchar length_m;
132 uchar length_s;
133 uchar length_f;
134 long buffer_length;
135 char* buffer;
136 bool play;
137 } scsi_read_cd;
140 typedef struct {
141 char speed;
142 char direction;
143 } scsi_scan;
146 typedef struct {
147 off_t block;
148 int32 mode;
149 } scsi_data_mode;
152 typedef struct {
153 uint8 command[16];
154 uint8 command_length;
155 uint8 flags;
156 uint8 scsi_status;
157 uint8 cam_status;
158 void* data;
159 size_t data_length;
160 void* sense_data;
161 size_t sense_data_length;
162 bigtime_t timeout;
163 } raw_device_command;
166 enum {
167 B_RAW_DEVICE_DATA_IN = 0x01,
168 B_RAW_DEVICE_REPORT_RESIDUAL = 0x02,
169 B_RAW_DEVICE_SHORT_READ_VALID = 0x04
172 #endif /* _SCSI_H */