1/*
2 * scsi.h
3 *
4 * General scsi and linux scsi specific defines and structs.
5 *
6 * Copyright (C) IBM Corp. 2003
7 *
8 *	This program is free software; you can redistribute it and/or modify it
9 *	under the terms of the GNU General Public License as published by the
10 *	Free Software Foundation version 2 of the License.
11 */
12
13#include <scsi/scsi.h>
14
15struct scsi_ioctl_command {
16	unsigned int inlen;	/* excluding scsi command length */
17	unsigned int outlen;
18	unsigned char data[1];
19	/* on input, scsi command starts here then opt. data */
20};
21
22/*
23 * Default 5 second timeout
24 */
25#define DEF_TIMEOUT	5000
26
27#define SENSE_BUFF_LEN	32
28
29/*
30 * The request buffer size passed to the SCSI INQUIRY commands, use 254,
31 * as this is a nice value for some devices, especially some of the usb
32 * mass storage devices.
33 */
34#define	SCSI_INQ_BUFF_LEN	254
35
36/*
37 * SCSI INQUIRY vendor and model (really product) lengths.
38 */
39#define VENDOR_LENGTH	8
40#define	MODEL_LENGTH	16
41
42#define INQUIRY_CMD     0x12
43#define INQUIRY_CMDLEN  6
44
45/*
46 * INQUIRY VPD page 0x83 identifier descriptor related values. Reference the
47 * SCSI Primary Commands specification for details.
48 */
49
50/*
51 * id type values of id descriptors. These are assumed to fit in 4 bits.
52 */
53#define SCSI_ID_VENDOR_SPECIFIC	0
54#define SCSI_ID_T10_VENDOR	1
55#define SCSI_ID_EUI_64		2
56#define SCSI_ID_NAA		3
57
58/*
59 * Supported NAA values. These fit in 4 bits, so the "don't care" value
60 * cannot conflict with real values.
61 */
62#define	SCSI_ID_NAA_DONT_CARE		0xff
63#define	SCSI_ID_NAA_IEEE_REG		5
64#define	SCSI_ID_NAA_IEEE_REG_EXTENDED	6
65
66/*
67 * Supported Code Set values.
68 */
69#define	SCSI_ID_BINARY	1
70#define	SCSI_ID_ASCII	2
71
72struct scsi_id_search_values {
73	u_char	id_type;
74	u_char	naa_type;
75	u_char	code_set;
76};
77
78/*
79 * Following are the "true" SCSI status codes. Linux has traditionally
80 * used a 1 bit right and masked version of these. So now CHECK_CONDITION
81 * and friends (in <scsi/scsi.h>) are deprecated.
82 */
83#define SCSI_CHECK_CONDITION 0x2
84#define SCSI_CONDITION_MET 0x4
85#define SCSI_BUSY 0x8
86#define SCSI_IMMEDIATE 0x10
87#define SCSI_IMMEDIATE_CONDITION_MET 0x14
88#define SCSI_RESERVATION_CONFLICT 0x18
89#define SCSI_COMMAND_TERMINATED 0x22
90#define SCSI_TASK_SET_FULL 0x28
91#define SCSI_ACA_ACTIVE 0x30
92#define SCSI_TASK_ABORTED 0x40
93