4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/** @file
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Support for SCSI-2 standard
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This program and the accompanying materials
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync are licensed and made available under the terms and conditions of the BSD License
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync which accompanies this distribution. The full text of the license may be found at
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync http://opensource.org/licenses/bsd-license.php
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifndef __SCSI_H__
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define __SCSI_H__
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// SCSI command OP Code
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Commands for all device types
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_CHANGE_DEFINITION 0x40
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_COMPARE 0x39
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_COPY 0x18
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_COPY_VERIFY 0x3a
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_INQUIRY 0x12
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_LOG_SELECT 0x4c
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_LOG_SENSE 0x4d
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_MODE_SEL6 0x15
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_MODE_SEL10 0x55
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_MODE_SEN6 0x1a
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_MODE_SEN10 0x5a
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_READ_BUFFER 0x3c
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_RECEIVE_DIAG 0x1c
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_REQUEST_SENSE 0x03
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_SEND_DIAG 0x1d
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_TEST_UNIT_READY 0x00
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_WRITE_BUFF 0x3b
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Additional commands for Direct Access Devices
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_FORMAT 0x04
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_LOCK_UN_CACHE 0x36
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_PREFETCH 0x34
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_MEDIA_REMOVAL 0x1e
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_READ6 0x08
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_READ10 0x28
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_READ16 0x88
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_READ_CAPACITY 0x25
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_READ_CAPACITY16 0x9e
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_READ_DEFECT 0x37
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_READ_LONG 0x3e
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_REASSIGN_BLK 0x07
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_RELEASE 0x17
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_REZERO 0x01
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_SEARCH_DATA_E 0x31
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_SEARCH_DATA_H 0x30
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_SEARCH_DATA_L 0x32
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_SEEK6 0x0b
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_SEEK10 0x2b
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_SEND_DIAG 0x1d
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_SET_LIMIT 0x33
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_START_STOP_UNIT 0x1b
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_SYNC_CACHE 0x35
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_VERIFY 0x2f
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_WRITE6 0x0a
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_WRITE10 0x2a
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_WRITE16 0x8a
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_WRITE_VERIFY 0x2e
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_WRITE_LONG 0x3f
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_WRITE_SAME 0x41
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Additional commands for Sequential Access Devices
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_ERASE 0x19
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_LOAD_UNLOAD 0x1b
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_LOCATE 0x2b
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_READ_BLOCK_LIMIT 0x05
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_READ_POS 0x34
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_READ_REVERSE 0x0f
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_RECOVER_BUF_DATA 0x14
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_RESERVE_UNIT 0x16
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_REWIND 0x01
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_SPACE 0x11
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_VERIFY_TAPE 0x13
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_WRITE_FILEMARK 0x10
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Additional commands for Printer Devices
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_PRINT 0x0a
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_SLEW_PRINT 0x0b
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_STOP_PRINT 0x1b
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_SYNC_BUFF 0x10
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Additional commands for Processor Devices
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_RECEIVE 0x08
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_SEND 0x0a
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Additional commands for Write-Once Devices
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_MEDIUM_SCAN 0x38
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_SEARCH_DAT_E10 0x31
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_SEARCH_DAT_E12 0xb1
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_SEARCH_DAT_H10 0x30
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_SEARCH_DAT_H12 0xb0
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_SEARCH_DAT_L10 0x32
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_SEARCH_DAT_L12 0xb2
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_SET_LIMIT10 0x33
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_SET_LIMIT12 0xb3
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_VERIFY10 0x2f
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_VERIFY12 0xaf
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_WRITE12 0xaa
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_WRITE_VERIFY10 0x2e
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_WRITE_VERIFY12 0xae
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Additional commands for CD-ROM Devices
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_PLAY_AUD_10 0x45
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_PLAY_AUD_12 0xa5
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_PLAY_AUD_MSF 0x47
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_PLAY_AUD_TKIN 0x48
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_PLAY_TK_REL10 0x49
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_PLAY_TK_REL12 0xa9
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_READ_CD_CAPACITY 0x25
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_READ_HEADER 0x44
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_READ_SUB_CHANNEL 0x42
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_READ_TOC 0x43
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Additional commands for Scanner Devices
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_GET_DATABUFF_STAT 0x34
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_GET_WINDOW 0x25
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_OBJECT_POS 0x31
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_SCAN 0x1b
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_SET_WINDOW 0x24
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Additional commands for Optical Memory Devices
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_UPDATE_BLOCK 0x3d
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Additional commands for Medium Changer Devices
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_EXCHANGE_MEDIUM 0xa6
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_INIT_ELEMENT_STAT 0x07
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_POS_TO_ELEMENT 0x2b
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_REQUEST_VE_ADDR 0xb5
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_SEND_VOL_TAG 0xb6
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Additional commands for Communition Devices
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_GET_MESSAGE6 0x08
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_GET_MESSAGE10 0x28
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_GET_MESSAGE12 0xa8
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_SEND_MESSAGE6 0x0a
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_SEND_MESSAGE10 0x2a
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_OP_SEND_MESSAGE12 0xaa
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// SCSI Data Transfer Direction
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_DATA_IN 0
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_DATA_OUT 1
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Peripheral Device Type Definitions
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_TYPE_DISK 0x00 ///< Direct-access device (e.g. magnetic disk)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_TYPE_TAPE 0x01 ///< Sequential-access device (e.g. magnetic tape)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_TYPE_PRINTER 0x02 ///< Printer device
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_TYPE_PROCESSOR 0x03 ///< Processor device
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_TYPE_WORM 0x04 ///< Write-once device (e.g. some optical disks)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_TYPE_CDROM 0x05 ///< CD-ROM device
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_TYPE_SCANNER 0x06 ///< Scanner device
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_TYPE_OPTICAL 0x07 ///< Optical memory device (e.g. some optical disks)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_TYPE_MEDIUMCHANGER 0x08 ///< Medium changer device (e.g. jukeboxes)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_TYPE_COMMUNICATION 0x09 ///< Communications device
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_TYPE_ASCIT8_1 0x0A ///< Defined by ASC IT8 (Graphic arts pre-press devices)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_TYPE_ASCIT8_2 0x0B ///< Defined by ASC IT8 (Graphic arts pre-press devices)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// 0Ch - 1Eh are reserved
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_TYPE_UNKNOWN 0x1F ///< Unknown or no device type
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Page Codes for INQUIRY command
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_PAGE_CODE_SUPPORTED_VPD 0x00
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_PAGE_CODE_BLOCK_LIMITS_VPD 0xB0
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#pragma pack(1)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// Standard INQUIRY data format
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 Peripheral_Type : 5;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 Peripheral_Qualifier : 3;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 DeviceType_Modifier : 7;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 Rmb : 1;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 Version;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 Response_Data_Format;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 Addnl_Length;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 Reserved_5_95[95 - 5 + 1];
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync} EFI_SCSI_INQUIRY_DATA;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// Supported VPD Pages VPD page
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 Peripheral_Type : 5;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 Peripheral_Qualifier : 3;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 PageCode;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 PageLength2;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 PageLength1;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 SupportedVpdPageList[0x100];
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync} EFI_SCSI_SUPPORTED_VPD_PAGES_VPD_PAGE;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// Block Limits VPD page
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 Peripheral_Type : 5;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 Peripheral_Qualifier : 3;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 PageCode;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 Reserved_2;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 PageLength;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 Reserved_4_5[2];
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 OptimalTransferLengthGranularity2;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 OptimalTransferLengthGranularity1;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 MaximumTransferLength4;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 MaximumTransferLength3;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 MaximumTransferLength2;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 MaximumTransferLength1;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 OptimalTransferLength4;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 OptimalTransferLength3;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 OptimalTransferLength2;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 OptimalTransferLength1;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 MaximumPrefetchXdreadXdwriteTransferLength4;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 MaximumPrefetchXdreadXdwriteTransferLength3;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 MaximumPrefetchXdreadXdwriteTransferLength2;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 MaximumPrefetchXdreadXdwriteTransferLength1;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync} EFI_SCSI_BLOCK_LIMITS_VPD_PAGE;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// Error codes 70h and 71h sense data format
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 Error_Code : 7;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 Valid : 1;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 Segment_Number;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 Sense_Key : 4;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 Reserved_21 : 1;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 Ili : 1;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 Reserved_22 : 2;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 Information_3_6[4];
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 Addnl_Sense_Length; ///< Additional sense length (n-7)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 Vendor_Specific_8_11[4];
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 Addnl_Sense_Code; ///< Additional sense code
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 Addnl_Sense_Code_Qualifier; ///< Additional sense code qualifier
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 Field_Replaceable_Unit_Code; ///< Field replaceable unit code
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 Reserved_15_17[3];
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync} EFI_SCSI_SENSE_DATA;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// SCSI Disk READ CAPACITY Data
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 LastLba3;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 LastLba2;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 LastLba1;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 LastLba0;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 BlockSize3;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 BlockSize2;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 BlockSize1;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 BlockSize0;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync} EFI_SCSI_DISK_CAPACITY_DATA;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 LastLba7;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 LastLba6;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 LastLba5;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 LastLba4;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 LastLba3;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 LastLba2;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 LastLba1;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 LastLba0;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 BlockSize3;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 BlockSize2;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 BlockSize1;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 BlockSize0;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 Protection;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 LogicPerPhysical;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 LowestAlignLogic2;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 LowestAlignLogic1;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 Reserved[16];
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync} EFI_SCSI_DISK_CAPACITY_DATA16;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#pragma pack()
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Sense Key
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_SK_NO_SENSE (0x0)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_SK_RECOVERY_ERROR (0x1)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_SK_NOT_READY (0x2)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_SK_MEDIUM_ERROR (0x3)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_SK_HARDWARE_ERROR (0x4)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_SK_ILLEGAL_REQUEST (0x5)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_SK_UNIT_ATTENTION (0x6)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_SK_DATA_PROTECT (0x7)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_SK_BLANK_CHECK (0x8)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_SK_VENDOR_SPECIFIC (0x9)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_SK_RESERVED_A (0xA)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_SK_ABORT (0xB)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_SK_RESERVED_C (0xC)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_SK_OVERFLOW (0xD)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_SK_MISCOMPARE (0xE)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_SK_RESERVED_F (0xF)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Additional Sense Codes and Sense Code Qualifiers.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Only some frequently used additional sense codes and qualifiers are
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// defined here. Please refer to SCSI standard for full value definition.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_ASC_NOT_READY (0x04)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_ASCQ_IN_PROGRESS (0x01)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_ASC_MEDIA_ERR1 (0x10)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_ASC_MEDIA_ERR2 (0x11)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_ASC_MEDIA_ERR3 (0x14)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_ASC_MEDIA_ERR4 (0x30)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_ASC_MEDIA_UPSIDE_DOWN (0x06)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_ASC_INVALID_CMD (0x20)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_ASC_LBA_OUT_OF_RANGE (0x21)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_ASC_INVALID_FIELD (0x24)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_ASC_WRITE_PROTECTED (0x27)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_ASC_MEDIA_CHANGE (0x28)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_ASC_RESET (0x29) ///< Power On Reset or Bus Reset occurred
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_ASC_ILLEGAL_FIELD (0x26)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_ASC_NO_MEDIA (0x3A)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SCSI_ASC_ILLEGAL_MODE_FOR_THIS_TRACK (0x64)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif