xref: /aosp_15_r20/external/crosvm/devices/src/virtio/scsi/constants.rs (revision bb4ee6a4ae7042d18b07a98463b9c8b875e44b39)
1*bb4ee6a4SAndroid Build Coastguard Worker // Copyright 2023 The ChromiumOS Authors
2*bb4ee6a4SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be
3*bb4ee6a4SAndroid Build Coastguard Worker // found in the LICENSE file.
4*bb4ee6a4SAndroid Build Coastguard Worker 
5*bb4ee6a4SAndroid Build Coastguard Worker #![deny(missing_docs)]
6*bb4ee6a4SAndroid Build Coastguard Worker //! This file contains values specified in spec.
7*bb4ee6a4SAndroid Build Coastguard Worker //! SPC-3: <https://www.t10.org/cgi-bin/ac.pl?t=f&f=spc3r23.pdf>
8*bb4ee6a4SAndroid Build Coastguard Worker //! SAM-5: <https://www.t10.org/cgi-bin/ac.pl?t=f&f=sam5r21.pdf>
9*bb4ee6a4SAndroid Build Coastguard Worker 
10*bb4ee6a4SAndroid Build Coastguard Worker // SCSI opcodes
11*bb4ee6a4SAndroid Build Coastguard Worker /// Opcode for TEST UNIT READY command.
12*bb4ee6a4SAndroid Build Coastguard Worker pub const TEST_UNIT_READY: u8 = 0x00;
13*bb4ee6a4SAndroid Build Coastguard Worker /// Opcode for REQUEST SENSE command.
14*bb4ee6a4SAndroid Build Coastguard Worker pub const REQUEST_SENSE: u8 = 0x03;
15*bb4ee6a4SAndroid Build Coastguard Worker /// Opcode for READ(6) command.
16*bb4ee6a4SAndroid Build Coastguard Worker pub const READ_6: u8 = 0x08;
17*bb4ee6a4SAndroid Build Coastguard Worker /// Opcode for INQUIRY command.
18*bb4ee6a4SAndroid Build Coastguard Worker pub const INQUIRY: u8 = 0x12;
19*bb4ee6a4SAndroid Build Coastguard Worker /// Opcode for MODE SELECT(6) command.
20*bb4ee6a4SAndroid Build Coastguard Worker pub const MODE_SELECT_6: u8 = 0x15;
21*bb4ee6a4SAndroid Build Coastguard Worker /// Opcode for MODE SENSE(6) command.
22*bb4ee6a4SAndroid Build Coastguard Worker pub const MODE_SENSE_6: u8 = 0x1a;
23*bb4ee6a4SAndroid Build Coastguard Worker /// Opcode for READ CAPACITY(10) command.
24*bb4ee6a4SAndroid Build Coastguard Worker pub const READ_CAPACITY_10: u8 = 0x25;
25*bb4ee6a4SAndroid Build Coastguard Worker /// Opcode for READ(10) command.
26*bb4ee6a4SAndroid Build Coastguard Worker pub const READ_10: u8 = 0x28;
27*bb4ee6a4SAndroid Build Coastguard Worker /// Opcode for WRITE(10) command.
28*bb4ee6a4SAndroid Build Coastguard Worker pub const WRITE_10: u8 = 0x2a;
29*bb4ee6a4SAndroid Build Coastguard Worker /// Opcode for SYNCHRONIZE CACHE(10) command.
30*bb4ee6a4SAndroid Build Coastguard Worker pub const SYNCHRONIZE_CACHE_10: u8 = 0x35;
31*bb4ee6a4SAndroid Build Coastguard Worker /// Opcode for WRITE SAME(10) command.
32*bb4ee6a4SAndroid Build Coastguard Worker pub const WRITE_SAME_10: u8 = 0x41;
33*bb4ee6a4SAndroid Build Coastguard Worker /// Opcode for UNMAP command.
34*bb4ee6a4SAndroid Build Coastguard Worker pub const UNMAP: u8 = 0x42;
35*bb4ee6a4SAndroid Build Coastguard Worker /// Opcode for WRITE SAME(16) command.
36*bb4ee6a4SAndroid Build Coastguard Worker pub const WRITE_SAME_16: u8 = 0x93;
37*bb4ee6a4SAndroid Build Coastguard Worker /// Opcode for SERVICE ACTION IN(16) command.
38*bb4ee6a4SAndroid Build Coastguard Worker pub const SERVICE_ACTION_IN_16: u8 = 0x9e;
39*bb4ee6a4SAndroid Build Coastguard Worker /// Opcode for REPORT LUNS command.
40*bb4ee6a4SAndroid Build Coastguard Worker pub const REPORT_LUNS: u8 = 0xa0;
41*bb4ee6a4SAndroid Build Coastguard Worker /// Opcode for MAINTENANCE IN command.
42*bb4ee6a4SAndroid Build Coastguard Worker pub const MAINTENANCE_IN: u8 = 0xa3;
43*bb4ee6a4SAndroid Build Coastguard Worker 
44*bb4ee6a4SAndroid Build Coastguard Worker // The service actions of MAINTENANCE IN command.
45*bb4ee6a4SAndroid Build Coastguard Worker /// REPORT SUPPORTED TASK MANAGEMENT FUNCTIONS
46*bb4ee6a4SAndroid Build Coastguard Worker pub const REPORT_SUPPORTED_TASK_MANAGEMENT_FUNCTIONS: u8 = 0x0d;
47*bb4ee6a4SAndroid Build Coastguard Worker 
48*bb4ee6a4SAndroid Build Coastguard Worker // The service actions of SERVICE ACTION IN(16) command.
49*bb4ee6a4SAndroid Build Coastguard Worker /// READ CAPACITY(16)
50*bb4ee6a4SAndroid Build Coastguard Worker pub const READ_CAPACITY_16: u8 = 0x10;
51*bb4ee6a4SAndroid Build Coastguard Worker 
52*bb4ee6a4SAndroid Build Coastguard Worker // SAM status code
53*bb4ee6a4SAndroid Build Coastguard Worker /// Indicates the completion of the command without error.
54*bb4ee6a4SAndroid Build Coastguard Worker pub const GOOD: u8 = 0x00;
55*bb4ee6a4SAndroid Build Coastguard Worker /// Indicates that sense data has been delivered in the buffer.
56*bb4ee6a4SAndroid Build Coastguard Worker pub const CHECK_CONDITION: u8 = 0x02;
57*bb4ee6a4SAndroid Build Coastguard Worker 
58*bb4ee6a4SAndroid Build Coastguard Worker // Device Types
59*bb4ee6a4SAndroid Build Coastguard Worker /// Indicates the id of disk type.
60*bb4ee6a4SAndroid Build Coastguard Worker pub const TYPE_DISK: u8 = 0x00;
61*bb4ee6a4SAndroid Build Coastguard Worker 
62*bb4ee6a4SAndroid Build Coastguard Worker // SENSE KEYS
63*bb4ee6a4SAndroid Build Coastguard Worker /// Indicates that there is no specific sense data to be reported.
64*bb4ee6a4SAndroid Build Coastguard Worker pub const NO_SENSE: u8 = 0x00;
65*bb4ee6a4SAndroid Build Coastguard Worker /// Indicates an error that may have been caused by a flaw in the medium or an error in the
66*bb4ee6a4SAndroid Build Coastguard Worker /// recorded data.
67*bb4ee6a4SAndroid Build Coastguard Worker pub const MEDIUM_ERROR: u8 = 0x03;
68*bb4ee6a4SAndroid Build Coastguard Worker /// Indicates an illegal request.
69*bb4ee6a4SAndroid Build Coastguard Worker pub const ILLEGAL_REQUEST: u8 = 0x05;
70*bb4ee6a4SAndroid Build Coastguard Worker /// Indicates that a unit attention condition has been established.
71*bb4ee6a4SAndroid Build Coastguard Worker pub const UNIT_ATTENTION: u8 = 0x06;
72