xref: /haiku/src/add-ons/kernel/busses/scsi/usb/usb_scsi.h (revision 25a7b01d15612846f332751841da3579db313082)
19bb1a5cdSimker /**
29bb1a5cdSimker  *
39bb1a5cdSimker  * TODO: description
49bb1a5cdSimker  *
5*06437987SMatt Madia  * This file is a part of USB SCSI CAM for Haiku.
69bb1a5cdSimker  * May be used under terms of the MIT License
79bb1a5cdSimker  *
89bb1a5cdSimker  * Author(s):
99bb1a5cdSimker  * 	Siarzhuk Zharski <imker@gmx.li>
109bb1a5cdSimker  *
11b3d94504SStephan Aßmus  *
12b3d94504SStephan Aßmus  */
13b3d94504SStephan Aßmus #ifndef _USB_SCSI_H_
14b3d94504SStephan Aßmus 	#define _USB_SCSI_H_
15b3d94504SStephan Aßmus 
16b3d94504SStephan Aßmus #ifndef _OS_H
17b3d94504SStephan Aßmus 	#include <OS.h>
18b3d94504SStephan Aßmus #endif //_OS_H
19b3d94504SStephan Aßmus 
209bb1a5cdSimker #ifndef _USB_V3_H_
219bb1a5cdSimker 	#include <USB3.h>
229bb1a5cdSimker #endif /* _USB_V3_H_ */
23b3d94504SStephan Aßmus 
24b3d94504SStephan Aßmus #ifndef _CAM_H
25b3d94504SStephan Aßmus 	#include <CAM.h>
26b3d94504SStephan Aßmus #endif /*_CAM_H*/
27b3d94504SStephan Aßmus 
28b3d94504SStephan Aßmus #define MODULE_NAME "usb_scsi"
29b3d94504SStephan Aßmus 
30b3d94504SStephan Aßmus #define CONTROLLER_SCSI_BUS 0x00 /* Narrow SCSI bus. Use PI_* to alter this*/
31b3d94504SStephan Aßmus #define MAX_DEVICES_COUNT	0x07 /* simulate Narrow SCSI bus - 8 devices*/
32b3d94504SStephan Aßmus #define CONTROLLER_SCSI_ID	0x07 /* "controller" SCSI ID */
33b3d94504SStephan Aßmus #define MAX_LUNS_COUNT		0x08
34b3d94504SStephan Aßmus 
35b3d94504SStephan Aßmus /* transport protocol definitions - are not bitmasks */
36b3d94504SStephan Aßmus #define PROTO_NONE		0x00000000
37b3d94504SStephan Aßmus #define PROTO_BULK_ONLY	0x00000001
38b3d94504SStephan Aßmus #define PROTO_CB		0x00000002
39b3d94504SStephan Aßmus #define PROTO_CBI		0x00000003
40b3d94504SStephan Aßmus 
41b3d94504SStephan Aßmus #define PROTO_VENDOR	0x0000000e
42b3d94504SStephan Aßmus #define PROTO_MASK		0x0000000f
43b3d94504SStephan Aßmus 
44b3d94504SStephan Aßmus #define PROTO(__value) ((__value) & PROTO_MASK)
45b3d94504SStephan Aßmus 
46b3d94504SStephan Aßmus /* command set definitions	- are not bitmasks */
47b3d94504SStephan Aßmus #define CMDSET_NONE		0x00000000
48b3d94504SStephan Aßmus #define CMDSET_SCSI		0x00000010
49b3d94504SStephan Aßmus #define CMDSET_UFI		0x00000020
50b3d94504SStephan Aßmus #define CMDSET_ATAPI	0x00000030
51b3d94504SStephan Aßmus #define CMDSET_RBC		0x00000040
52b3d94504SStephan Aßmus #define CMDSET_QIC157	0x00000050
53b3d94504SStephan Aßmus 
54b3d94504SStephan Aßmus #define CMDSET_VENDOR	0x000000e0
55b3d94504SStephan Aßmus #define CMDSET_MASK		0x000000f0
56b3d94504SStephan Aßmus 
57b3d94504SStephan Aßmus #define CMDSET(__value)((__value) & CMDSET_MASK)
58b3d94504SStephan Aßmus 
59b3d94504SStephan Aßmus #define HAS_SET(__mask, __flag) \
60b3d94504SStephan Aßmus 					(((__mask) & __flag) == (__flag))
61b3d94504SStephan Aßmus 
62b3d94504SStephan Aßmus /* fixes - bitmasked */
63b3d94504SStephan Aßmus #define FIX_NO_GETMAXLUN		0x00000100
64b3d94504SStephan Aßmus #define FIX_FORCE_RW_TO_6		0x00000200
65b3d94504SStephan Aßmus #define FIX_NO_TEST_UNIT		0x00000400
66b3d94504SStephan Aßmus #define FIX_NO_INQUIRY			0x00000800
67b3d94504SStephan Aßmus #define FIX_TRANS_TEST_UNIT		0x00001000
68b3d94504SStephan Aßmus #define FIX_NO_PREVENT_MEDIA	0x00002000
69b3d94504SStephan Aßmus #define FIX_FORCE_MS_TO_10		0x00004000
70b3d94504SStephan Aßmus #define FIX_FORCE_READ_ONLY		0x00008000
71b3d94504SStephan Aßmus 
72b3d94504SStephan Aßmus #define FIX_NONE				0x00000000
73b3d94504SStephan Aßmus #define FIX_MASK				0x000fff00
74b3d94504SStephan Aßmus 
75b3d94504SStephan Aßmus #define HAS_FIXES(__value, __fix) \
76b3d94504SStephan Aßmus 								HAS_SET((__value), (__fix))
77b3d94504SStephan Aßmus 
78b3d94504SStephan Aßmus #endif /*_USB_SCSI_H_*/
799bb1a5cdSimker 
80