xref: /haiku/src/add-ons/kernel/busses/scsi/usb/usb_scsi.h (revision b3d94504c208adafebbf2ba62ae7fc4e0b7d68f7)
1*b3d94504SStephan Aßmus /*
2*b3d94504SStephan Aßmus  * Copyright (c) 2003-2005 by Siarzhuk Zharski <imker@gmx.li>
3*b3d94504SStephan Aßmus  * Distributed under the terms of the BSD License.
4*b3d94504SStephan Aßmus  *
5*b3d94504SStephan Aßmus  */
6*b3d94504SStephan Aßmus 
7*b3d94504SStephan Aßmus #ifndef _USB_SCSI_H_
8*b3d94504SStephan Aßmus   #define _USB_SCSI_H_
9*b3d94504SStephan Aßmus 
10*b3d94504SStephan Aßmus #ifndef _OS_H
11*b3d94504SStephan Aßmus   #include <OS.h>
12*b3d94504SStephan Aßmus #endif //_OS_H
13*b3d94504SStephan Aßmus 
14*b3d94504SStephan Aßmus #ifndef _USB_V3_H
15*b3d94504SStephan Aßmus   #include "USB_v3.h"
16*b3d94504SStephan Aßmus #endif /* _USB_V3_H */
17*b3d94504SStephan Aßmus 
18*b3d94504SStephan Aßmus #ifndef _CAM_H
19*b3d94504SStephan Aßmus   #include <CAM.h>
20*b3d94504SStephan Aßmus #endif /*_CAM_H*/
21*b3d94504SStephan Aßmus 
22*b3d94504SStephan Aßmus #define MODULE_NAME "usb_scsi"
23*b3d94504SStephan Aßmus 
24*b3d94504SStephan Aßmus #define CONTROLLER_SCSI_BUS 0x00 /* Narrow SCSI bus. Use PI_* to alter this*/
25*b3d94504SStephan Aßmus #define MAX_DEVICES_COUNT   0x07 /* simulate Narrow SCSI bus - 8 devices*/
26*b3d94504SStephan Aßmus #define CONTROLLER_SCSI_ID  0x07 /* "controller" SCSI ID */
27*b3d94504SStephan Aßmus #define MAX_LUNS_COUNT      0x08
28*b3d94504SStephan Aßmus 
29*b3d94504SStephan Aßmus /* transport protocol definitions - are not bitmasks */
30*b3d94504SStephan Aßmus #define PROTO_NONE      0x00000000
31*b3d94504SStephan Aßmus #define PROTO_BULK_ONLY 0x00000001
32*b3d94504SStephan Aßmus #define PROTO_CB        0x00000002
33*b3d94504SStephan Aßmus #define PROTO_CBI       0x00000003
34*b3d94504SStephan Aßmus 
35*b3d94504SStephan Aßmus #define PROTO_VENDOR    0x0000000e
36*b3d94504SStephan Aßmus #define PROTO_MASK      0x0000000f
37*b3d94504SStephan Aßmus 
38*b3d94504SStephan Aßmus #define PROTO(__value) ((__value) & PROTO_MASK)
39*b3d94504SStephan Aßmus 
40*b3d94504SStephan Aßmus /* command set definitions  - are not bitmasks */
41*b3d94504SStephan Aßmus #define CMDSET_NONE     0x00000000
42*b3d94504SStephan Aßmus #define CMDSET_SCSI     0x00000010
43*b3d94504SStephan Aßmus #define CMDSET_UFI      0x00000020
44*b3d94504SStephan Aßmus #define CMDSET_ATAPI    0x00000030
45*b3d94504SStephan Aßmus #define CMDSET_RBC      0x00000040
46*b3d94504SStephan Aßmus #define CMDSET_QIC157   0x00000050
47*b3d94504SStephan Aßmus 
48*b3d94504SStephan Aßmus #define CMDSET_VENDOR   0x000000e0
49*b3d94504SStephan Aßmus #define CMDSET_MASK     0x000000f0
50*b3d94504SStephan Aßmus 
51*b3d94504SStephan Aßmus #define CMDSET(__value)((__value) & CMDSET_MASK)
52*b3d94504SStephan Aßmus 
53*b3d94504SStephan Aßmus #define HAS_SET(__mask, __flag) \
54*b3d94504SStephan Aßmus           (((__mask) & __flag) == (__flag))
55*b3d94504SStephan Aßmus 
56*b3d94504SStephan Aßmus /* fixes - bitmasked */
57*b3d94504SStephan Aßmus #define FIX_NO_GETMAXLUN     0x00000100
58*b3d94504SStephan Aßmus #define FIX_FORCE_RW_TO_6    0x00000200
59*b3d94504SStephan Aßmus #define FIX_NO_TEST_UNIT     0x00000400
60*b3d94504SStephan Aßmus #define FIX_NO_INQUIRY       0x00000800
61*b3d94504SStephan Aßmus #define FIX_TRANS_TEST_UNIT  0x00001000
62*b3d94504SStephan Aßmus #define FIX_NO_PREVENT_MEDIA 0x00002000
63*b3d94504SStephan Aßmus #define FIX_FORCE_MS_TO_10   0x00004000
64*b3d94504SStephan Aßmus #define FIX_FORCE_READ_ONLY  0x00008000
65*b3d94504SStephan Aßmus 
66*b3d94504SStephan Aßmus #define FIX_NONE             0x00000000
67*b3d94504SStephan Aßmus #define FIX_MASK             0x000fff00
68*b3d94504SStephan Aßmus 
69*b3d94504SStephan Aßmus #define HAS_FIXES(__value, __fix) \
70*b3d94504SStephan Aßmus                   HAS_SET((__value), (__fix))
71*b3d94504SStephan Aßmus 
72*b3d94504SStephan Aßmus #endif /*_USB_SCSI_H_*/
73