/** @file
  Support for SCSI-2 standard

  Copyright (c) 2006 - 2020, Intel Corporation. All rights reserved.<BR>
  SPDX-License-Identifier: BSD-2-Clause-Patent

**/

#ifndef __SCSI_H__
#define __SCSI_H__

//
// SCSI command OP Code
//
//
// Commands for all device types
//
#define EFI_SCSI_OP_CHANGE_DEFINITION  0x40
#define EFI_SCSI_OP_COMPARE            0x39
#define EFI_SCSI_OP_COPY               0x18
#define EFI_SCSI_OP_COPY_VERIFY        0x3a
#define EFI_SCSI_OP_INQUIRY            0x12
#define EFI_SCSI_OP_LOG_SELECT         0x4c
#define EFI_SCSI_OP_LOG_SENSE          0x4d
#define EFI_SCSI_OP_MODE_SEL6          0x15
#define EFI_SCSI_OP_MODE_SEL10         0x55
#define EFI_SCSI_OP_MODE_SEN6          0x1a
#define EFI_SCSI_OP_MODE_SEN10         0x5a
#define EFI_SCSI_OP_READ_BUFFER        0x3c
#define EFI_SCSI_OP_RECEIVE_DIAG       0x1c
#define EFI_SCSI_OP_REQUEST_SENSE      0x03
#define EFI_SCSI_OP_SEND_DIAG          0x1d
#define EFI_SCSI_OP_TEST_UNIT_READY    0x00
#define EFI_SCSI_OP_WRITE_BUFF         0x3b

//
// Additional commands for Direct Access Devices
//
#define EFI_SCSI_OP_FORMAT           0x04
#define EFI_SCSI_OP_LOCK_UN_CACHE    0x36
#define EFI_SCSI_OP_PREFETCH         0x34
#define EFI_SCSI_OP_MEDIA_REMOVAL    0x1e
#define EFI_SCSI_OP_READ6            0x08
#define EFI_SCSI_OP_READ10           0x28
#define EFI_SCSI_OP_READ16           0x88
#define EFI_SCSI_OP_READ_CAPACITY    0x25
#define EFI_SCSI_OP_READ_CAPACITY16  0x9e
#define EFI_SCSI_OP_READ_DEFECT      0x37
#define EFI_SCSI_OP_READ_LONG        0x3e
#define EFI_SCSI_OP_REASSIGN_BLK     0x07
#define EFI_SCSI_OP_RELEASE          0x17
#define EFI_SCSI_OP_REZERO           0x01
#define EFI_SCSI_OP_SEARCH_DATA_E    0x31
#define EFI_SCSI_OP_SEARCH_DATA_H    0x30
#define EFI_SCSI_OP_SEARCH_DATA_L    0x32
#define EFI_SCSI_OP_SEEK6            0x0b
#define EFI_SCSI_OP_SEEK10           0x2b
#define EFI_SCSI_OP_SEND_DIAG        0x1d
#define EFI_SCSI_OP_SET_LIMIT        0x33
#define EFI_SCSI_OP_START_STOP_UNIT  0x1b
#define EFI_SCSI_OP_SYNC_CACHE       0x35
#define EFI_SCSI_OP_VERIFY           0x2f
#define EFI_SCSI_OP_WRITE6           0x0a
#define EFI_SCSI_OP_WRITE10          0x2a
#define EFI_SCSI_OP_WRITE16          0x8a
#define EFI_SCSI_OP_WRITE_VERIFY     0x2e
#define EFI_SCSI_OP_WRITE_LONG       0x3f
#define EFI_SCSI_OP_WRITE_SAME       0x41
#define EFI_SCSI_OP_UNMAP            0x42

//
// Additional commands for Sequential Access Devices
//
#define EFI_SCSI_OP_ERASE             0x19
#define EFI_SCSI_OP_LOAD_UNLOAD       0x1b
#define EFI_SCSI_OP_LOCATE            0x2b
#define EFI_SCSI_OP_READ_BLOCK_LIMIT  0x05
#define EFI_SCSI_OP_READ_POS          0x34
#define EFI_SCSI_OP_READ_REVERSE      0x0f
#define EFI_SCSI_OP_RECOVER_BUF_DATA  0x14
#define EFI_SCSI_OP_RESERVE_UNIT      0x16
#define EFI_SCSI_OP_REWIND            0x01
#define EFI_SCSI_OP_SPACE             0x11
#define EFI_SCSI_OP_VERIFY_TAPE       0x13
#define EFI_SCSI_OP_WRITE_FILEMARK    0x10

//
// Additional commands for Printer Devices
//
#define EFI_SCSI_OP_PRINT       0x0a
#define EFI_SCSI_OP_SLEW_PRINT  0x0b
#define EFI_SCSI_OP_STOP_PRINT  0x1b
#define EFI_SCSI_OP_SYNC_BUFF   0x10

//
// Additional commands for Processor Devices
//
#define EFI_SCSI_OP_RECEIVE  0x08
#define EFI_SCSI_OP_SEND     0x0a

//
// Additional commands for Write-Once Devices
//
#define EFI_SCSI_OP_MEDIUM_SCAN     0x38
#define EFI_SCSI_OP_SEARCH_DAT_E10  0x31
#define EFI_SCSI_OP_SEARCH_DAT_E12  0xb1
#define EFI_SCSI_OP_SEARCH_DAT_H10  0x30
#define EFI_SCSI_OP_SEARCH_DAT_H12  0xb0
#define EFI_SCSI_OP_SEARCH_DAT_L10  0x32
#define EFI_SCSI_OP_SEARCH_DAT_L12  0xb2
#define EFI_SCSI_OP_SET_LIMIT10     0x33
#define EFI_SCSI_OP_SET_LIMIT12     0xb3
#define EFI_SCSI_OP_VERIFY10        0x2f
#define EFI_SCSI_OP_VERIFY12        0xaf
#define EFI_SCSI_OP_WRITE12         0xaa
#define EFI_SCSI_OP_WRITE_VERIFY10  0x2e
#define EFI_SCSI_OP_WRITE_VERIFY12  0xae

//
// Additional commands for CD-ROM Devices
//
#define EFI_SCSI_OP_PLAY_AUD_10       0x45
#define EFI_SCSI_OP_PLAY_AUD_12       0xa5
#define EFI_SCSI_OP_PLAY_AUD_MSF      0x47
#define EFI_SCSI_OP_PLAY_AUD_TKIN     0x48
#define EFI_SCSI_OP_PLAY_TK_REL10     0x49
#define EFI_SCSI_OP_PLAY_TK_REL12     0xa9
#define EFI_SCSI_OP_READ_CD_CAPACITY  0x25
#define EFI_SCSI_OP_READ_HEADER       0x44
#define EFI_SCSI_OP_READ_SUB_CHANNEL  0x42
#define EFI_SCSI_OP_READ_TOC          0x43

//
// Additional commands for Scanner Devices
//
#define EFI_SCSI_OP_GET_DATABUFF_STAT  0x34
#define EFI_SCSI_OP_GET_WINDOW         0x25
#define EFI_SCSI_OP_OBJECT_POS         0x31
#define EFI_SCSI_OP_SCAN               0x1b
#define EFI_SCSI_OP_SET_WINDOW         0x24

//
// Additional commands for Optical Memory Devices
//
#define EFI_SCSI_OP_UPDATE_BLOCK  0x3d

//
// Additional commands for Medium Changer Devices
//
#define EFI_SCSI_OP_EXCHANGE_MEDIUM    0xa6
#define EFI_SCSI_OP_INIT_ELEMENT_STAT  0x07
#define EFI_SCSI_OP_POS_TO_ELEMENT     0x2b
#define EFI_SCSI_OP_REQUEST_VE_ADDR    0xb5
#define EFI_SCSI_OP_SEND_VOL_TAG       0xb6

//
// Additional commands for Communication Devices
//
#define EFI_SCSI_OP_GET_MESSAGE6    0x08
#define EFI_SCSI_OP_GET_MESSAGE10   0x28
#define EFI_SCSI_OP_GET_MESSAGE12   0xa8
#define EFI_SCSI_OP_SEND_MESSAGE6   0x0a
#define EFI_SCSI_OP_SEND_MESSAGE10  0x2a
#define EFI_SCSI_OP_SEND_MESSAGE12  0xaa

//
// Additional commands for Secure Transactions
//
#define EFI_SCSI_OP_SECURITY_PROTOCOL_IN   0xa2
#define EFI_SCSI_OP_SECURITY_PROTOCOL_OUT  0xb5

//
// SCSI Data Transfer Direction
//
#define EFI_SCSI_DATA_IN   0
#define EFI_SCSI_DATA_OUT  1

//
// SCSI Block Command Cache Control Parameters
//
#define EFI_SCSI_BLOCK_FUA  BIT3  ///< Force Unit Access
#define EFI_SCSI_BLOCK_DPO  BIT4  ///< Disable Page Out

//
// Peripheral Device Type Definitions
//
#define EFI_SCSI_TYPE_DISK             0x00 ///< Direct-access device (e.g. magnetic disk)
#define EFI_SCSI_TYPE_TAPE             0x01 ///< Sequential-access device (e.g. magnetic tape)
#define EFI_SCSI_TYPE_PRINTER          0x02 ///< Printer device
#define EFI_SCSI_TYPE_PROCESSOR        0x03 ///< Processor device
#define EFI_SCSI_TYPE_WORM             0x04 ///< Write-once device (e.g. some optical disks)
#define EFI_SCSI_TYPE_CDROM            0x05 ///< CD/DVD device
#define EFI_SCSI_TYPE_SCANNER          0x06 ///< Scanner device (obsolete)
#define EFI_SCSI_TYPE_OPTICAL          0x07 ///< Optical memory device (e.g. some optical disks)
#define EFI_SCSI_TYPE_MEDIUMCHANGER    0x08 ///< Medium changer device (e.g. jukeboxes)
#define EFI_SCSI_TYPE_COMMUNICATION    0x09 ///< Communications device (obsolete)
#define EFI_SCSI_TYPE_ASCIT8_1         0x0A ///< Defined by ASC IT8 (Graphic arts pre-press devices)
#define EFI_SCSI_TYPE_ASCIT8_2         0x0B ///< Defined by ASC IT8 (Graphic arts pre-press devices)
#define EFI_SCSI_TYPE_RAID             0x0C ///< Storage array controller device (e.g., RAID)
#define EFI_SCSI_TYPE_SES              0x0D ///< Enclosure services device
#define EFI_SCSI_TYPE_RBC              0x0E ///< Simplified direct-access device (e.g., magnetic disk)
#define EFI_SCSI_TYPE_OCRW             0x0F ///< Optical card reader/writer device
#define EFI_SCSI_TYPE_BRIDGE           0x10 ///< Bridge Controller Commands
#define EFI_SCSI_TYPE_OSD              0x11 ///< Object-based Storage Device
#define EFI_SCSI_TYPE_AUTOMATION       0x12 ///< Automation/Drive Interface
#define EFI_SCSI_TYPE_SECURITYMANAGER  0x13 ///< Security manager device
#define EFI_SCSI_TYPE_RESERVED_LOW     0x14 ///< Reserved (low)
#define EFI_SCSI_TYPE_RESERVED_HIGH    0x1D ///< Reserved (high)
#define EFI_SCSI_TYPE_WLUN             0x1E ///< Well known logical unit
#define EFI_SCSI_TYPE_UNKNOWN          0x1F ///< Unknown or no device type

//
// Page Codes for INQUIRY command
//
#define EFI_SCSI_PAGE_CODE_SUPPORTED_VPD     0x00
#define EFI_SCSI_PAGE_CODE_BLOCK_LIMITS_VPD  0xB0

#pragma pack(1)
///
/// Standard INQUIRY data format
///
typedef struct {
  UINT8    Peripheral_Type      : 5;
  UINT8    Peripheral_Qualifier : 3;
  UINT8    DeviceType_Modifier  : 7;
  UINT8    Rmb                  : 1;
  UINT8    Version;
  UINT8    Response_Data_Format;
  UINT8    Addnl_Length;
  UINT8    Reserved_5_95[95 - 5 + 1];
} EFI_SCSI_INQUIRY_DATA;

///
/// Supported VPD Pages VPD page
///
typedef struct {
  UINT8    Peripheral_Type      : 5;
  UINT8    Peripheral_Qualifier : 3;
  UINT8    PageCode;
  UINT8    PageLength2;
  UINT8    PageLength1;
  UINT8    SupportedVpdPageList[0x100];
} EFI_SCSI_SUPPORTED_VPD_PAGES_VPD_PAGE;

///
/// Block Limits VPD page
///
typedef struct {
  UINT8    Peripheral_Type      : 5;
  UINT8    Peripheral_Qualifier : 3;
  UINT8    PageCode;
  UINT8    PageLength2;
  UINT8    PageLength1;
  UINT8    WriteSameNonZero     : 1;
  UINT8    Reserved_4           : 7;
  UINT8    MaximumCompareAndWriteLength;
  UINT8    OptimalTransferLengthGranularity2;
  UINT8    OptimalTransferLengthGranularity1;
  UINT8    MaximumTransferLength4;
  UINT8    MaximumTransferLength3;
  UINT8    MaximumTransferLength2;
  UINT8    MaximumTransferLength1;
  UINT8    OptimalTransferLength4;
  UINT8    OptimalTransferLength3;
  UINT8    OptimalTransferLength2;
  UINT8    OptimalTransferLength1;
  UINT8    MaximumPrefetchXdreadXdwriteTransferLength4;
  UINT8    MaximumPrefetchXdreadXdwriteTransferLength3;
  UINT8    MaximumPrefetchXdreadXdwriteTransferLength2;
  UINT8    MaximumPrefetchXdreadXdwriteTransferLength1;
  UINT8    MaximumUnmapLbaCount4;
  UINT8    MaximumUnmapLbaCount3;
  UINT8    MaximumUnmapLbaCount2;
  UINT8    MaximumUnmapLbaCount1;
  UINT8    MaximumUnmapBlockDescriptorCount4;
  UINT8    MaximumUnmapBlockDescriptorCount3;
  UINT8    MaximumUnmapBlockDescriptorCount2;
  UINT8    MaximumUnmapBlockDescriptorCount1;
  UINT8    OptimalUnmapGranularity4;
  UINT8    OptimalUnmapGranularity3;
  UINT8    OptimalUnmapGranularity2;
  UINT8    OptimalUnmapGranularity1;
  UINT8    UnmapGranularityAlignment4     : 7;
  UINT8    UnmapGranularityAlignmentValid : 1;
  UINT8    UnmapGranularityAlignment3;
  UINT8    UnmapGranularityAlignment2;
  UINT8    UnmapGranularityAlignment1;
  UINT8    MaximumWriteSameLength4;
  UINT8    MaximumWriteSameLength3;
  UINT8    MaximumWriteSameLength2;
  UINT8    MaximumWriteSameLength1;
  UINT8    MaximumAtomicTransferLength4;
  UINT8    MaximumAtomicTransferLength3;
  UINT8    MaximumAtomicTransferLength2;
  UINT8    MaximumAtomicTransferLength1;
  UINT8    AtomicAlignment4;
  UINT8    AtomicAlignment3;
  UINT8    AtomicAlignment2;
  UINT8    AtomicAlignment1;
  UINT8    AtomicTransferLengthGranularity4;
  UINT8    AtomicTransferLengthGranularity3;
  UINT8    AtomicTransferLengthGranularity2;
  UINT8    AtomicTransferLengthGranularity1;
  UINT8    MaximumAtomicTransferLengthWithAtomicBoundary4;
  UINT8    MaximumAtomicTransferLengthWithAtomicBoundary3;
  UINT8    MaximumAtomicTransferLengthWithAtomicBoundary2;
  UINT8    MaximumAtomicTransferLengthWithAtomicBoundary1;
  UINT8    MaximumAtomicBoundarySize4;
  UINT8    MaximumAtomicBoundarySize3;
  UINT8    MaximumAtomicBoundarySize2;
  UINT8    MaximumAtomicBoundarySize1;
} EFI_SCSI_BLOCK_LIMITS_VPD_PAGE;

///
/// Error codes 70h and 71h sense data format
///
typedef struct {
  UINT8    Error_Code  : 7;
  UINT8    Valid       : 1;
  UINT8    Segment_Number;
  UINT8    Sense_Key   : 4;
  UINT8    Reserved_21 : 1;
  UINT8    Ili         : 1;
  UINT8    Reserved_22 : 2;
  UINT8    Information_3_6[4];
  UINT8    Addnl_Sense_Length;        ///< Additional sense length (n-7)
  UINT8    Vendor_Specific_8_11[4];
  UINT8    Addnl_Sense_Code;            ///< Additional sense code
  UINT8    Addnl_Sense_Code_Qualifier;  ///< Additional sense code qualifier
  UINT8    Field_Replaceable_Unit_Code; ///< Field replaceable unit code
  UINT8    Reserved_15_17[3];
} EFI_SCSI_SENSE_DATA;

///
/// SCSI Disk READ CAPACITY Data
///
typedef struct {
  UINT8    LastLba3;
  UINT8    LastLba2;
  UINT8    LastLba1;
  UINT8    LastLba0;
  UINT8    BlockSize3;
  UINT8    BlockSize2;
  UINT8    BlockSize1;
  UINT8    BlockSize0;
} EFI_SCSI_DISK_CAPACITY_DATA;

typedef struct {
  UINT8    LastLba7;
  UINT8    LastLba6;
  UINT8    LastLba5;
  UINT8    LastLba4;
  UINT8    LastLba3;
  UINT8    LastLba2;
  UINT8    LastLba1;
  UINT8    LastLba0;
  UINT8    BlockSize3;
  UINT8    BlockSize2;
  UINT8    BlockSize1;
  UINT8    BlockSize0;
  UINT8    Protection;
  UINT8    LogicPerPhysical;
  UINT8    LowestAlignLogic2;
  UINT8    LowestAlignLogic1;
  UINT8    Reserved[16];
} EFI_SCSI_DISK_CAPACITY_DATA16;

typedef struct {
  UINT16    DataLen;
  UINT16    BlkDespDataLen;
  UINT8     Reserved[4];
} EFI_SCSI_DISK_UNMAP_PARAM_LIST_HEADER;

typedef struct {
  UINT64    Lba;
  UINT32    BlockNum;
  UINT8     Reserved[4];
} EFI_SCSI_DISK_UNMAP_BLOCK_DESP;

#pragma pack()

//
// Sense Key
//
#define EFI_SCSI_SK_NO_SENSE         (0x0)
#define EFI_SCSI_SK_RECOVERY_ERROR   (0x1)
#define EFI_SCSI_SK_NOT_READY        (0x2)
#define EFI_SCSI_SK_MEDIUM_ERROR     (0x3)
#define EFI_SCSI_SK_HARDWARE_ERROR   (0x4)
#define EFI_SCSI_SK_ILLEGAL_REQUEST  (0x5)
#define EFI_SCSI_SK_UNIT_ATTENTION   (0x6)
#define EFI_SCSI_SK_DATA_PROTECT     (0x7)
#define EFI_SCSI_SK_BLANK_CHECK      (0x8)
#define EFI_SCSI_SK_VENDOR_SPECIFIC  (0x9)
#define EFI_SCSI_SK_RESERVED_A       (0xA)
#define EFI_SCSI_SK_ABORT            (0xB)
#define EFI_SCSI_SK_RESERVED_C       (0xC)
#define EFI_SCSI_SK_OVERFLOW         (0xD)
#define EFI_SCSI_SK_MISCOMPARE       (0xE)
#define EFI_SCSI_SK_RESERVED_F       (0xF)

//
// Additional Sense Codes and Sense Code Qualifiers.
// Only some frequently used additional sense codes and qualifiers are
// defined here. Please refer to SCSI standard for full value definition.
//
#define EFI_SCSI_ASC_NOT_READY     (0x04)
#define EFI_SCSI_ASCQ_IN_PROGRESS  (0x01)

#define EFI_SCSI_ASC_MEDIA_ERR1                   (0x10)
#define EFI_SCSI_ASC_MEDIA_ERR2                   (0x11)
#define EFI_SCSI_ASC_MEDIA_ERR3                   (0x14)
#define EFI_SCSI_ASC_MEDIA_ERR4                   (0x30)
#define EFI_SCSI_ASC_MEDIA_UPSIDE_DOWN            (0x06)
#define EFI_SCSI_ASC_INVALID_CMD                  (0x20)
#define EFI_SCSI_ASC_LBA_OUT_OF_RANGE             (0x21)
#define EFI_SCSI_ASC_INVALID_FIELD                (0x24)
#define EFI_SCSI_ASC_WRITE_PROTECTED              (0x27)
#define EFI_SCSI_ASC_MEDIA_CHANGE                 (0x28)
#define EFI_SCSI_ASC_RESET                        (0x29)   ///< Power On Reset or Bus Reset occurred
#define EFI_SCSI_ASC_ILLEGAL_FIELD                (0x26)
#define EFI_SCSI_ASC_NO_MEDIA                     (0x3A)
#define EFI_SCSI_ASC_ILLEGAL_MODE_FOR_THIS_TRACK  (0x64)

#endif
