chiark / gitweb /
Remove src/tty-ask-password-agent
[elogind.git] / src / udev / scsi_id / scsi.h
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 #pragma once
14
15 #include <scsi/scsi.h>
16
17 struct scsi_ioctl_command {
18         unsigned int inlen;        /* excluding scsi command length */
19         unsigned int outlen;
20         unsigned char data[1];
21         /* on input, scsi command starts here then opt. data */
22 };
23
24 /*
25  * Default 5 second timeout
26  */
27 #define DEF_TIMEOUT        5000
28
29 #define SENSE_BUFF_LEN        32
30
31 /*
32  * The request buffer size passed to the SCSI INQUIRY commands, use 254,
33  * as this is a nice value for some devices, especially some of the usb
34  * mass storage devices.
35  */
36 #define        SCSI_INQ_BUFF_LEN        254
37
38 /*
39  * SCSI INQUIRY vendor and model (really product) lengths.
40  */
41 #define VENDOR_LENGTH        8
42 #define        MODEL_LENGTH        16
43
44 #define INQUIRY_CMD     0x12
45 #define INQUIRY_CMDLEN  6
46
47 /*
48  * INQUIRY VPD page 0x83 identifier descriptor related values. Reference the
49  * SCSI Primary Commands specification for details.
50  */
51
52 /*
53  * id type values of id descriptors. These are assumed to fit in 4 bits.
54  */
55 #define SCSI_ID_VENDOR_SPECIFIC        0
56 #define SCSI_ID_T10_VENDOR        1
57 #define SCSI_ID_EUI_64                2
58 #define SCSI_ID_NAA                3
59 #define SCSI_ID_RELPORT                4
60 #define SCSI_ID_TGTGROUP        5
61 #define SCSI_ID_LUNGROUP        6
62 #define SCSI_ID_MD5                7
63 #define SCSI_ID_NAME                8
64
65 /*
66  * Supported NAA values. These fit in 4 bits, so the "don't care" value
67  * cannot conflict with real values.
68  */
69 #define        SCSI_ID_NAA_DONT_CARE                0xff
70 #define        SCSI_ID_NAA_IEEE_REG                5
71 #define        SCSI_ID_NAA_IEEE_REG_EXTENDED        6
72
73 /*
74  * Supported Code Set values.
75  */
76 #define        SCSI_ID_BINARY        1
77 #define        SCSI_ID_ASCII        2
78
79 struct scsi_id_search_values {
80         u_char        id_type;
81         u_char        naa_type;
82         u_char        code_set;
83 };
84
85 /*
86  * Following are the "true" SCSI status codes. Linux has traditionally
87  * used a 1 bit right and masked version of these. So now CHECK_CONDITION
88  * and friends (in <scsi/scsi.h>) are deprecated.
89  */
90 #define SCSI_CHECK_CONDITION 0x2
91 #define SCSI_CONDITION_MET 0x4
92 #define SCSI_BUSY 0x8
93 #define SCSI_IMMEDIATE 0x10
94 #define SCSI_IMMEDIATE_CONDITION_MET 0x14
95 #define SCSI_RESERVATION_CONFLICT 0x18
96 #define SCSI_COMMAND_TERMINATED 0x22
97 #define SCSI_TASK_SET_FULL 0x28
98 #define SCSI_ACA_ACTIVE 0x30
99 #define SCSI_TASK_ABORTED 0x40