MdePkg: Implement SCSI commands for Security Protocol In/Out

BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=1546

This patch implements the Security Protocol In and Security Protocol Out
commands in UefiScsiLib to prepare support for the Storage Security
Command Protocol.

Cc: Jiewen Yao <jiewen.yao@intel.com>
Cc: Jian J Wang <jian.j.wang@intel.com>
Signed-off-by: Christopher J Zurcher <christopher.j.zurcher@intel.com>
Reviewed-by: Hao A Wu <hao.a.wu@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>
This commit is contained in:
Zurcher, Christopher J
2019-09-27 10:19:57 +08:00
committed by Hao A Wu
parent 1f5e4d9128
commit 9b14509b16
3 changed files with 388 additions and 19 deletions

View File

@@ -1,7 +1,7 @@
/** @file
Support for SCSI-2 standard
Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
Copyright (c) 2006 - 2019, Intel Corporation. All rights reserved.<BR>
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
@@ -163,6 +163,12 @@
#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
//
@@ -172,22 +178,30 @@
//
// 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-ROM device
#define EFI_SCSI_TYPE_SCANNER 0x06 ///< Scanner device
#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
#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)
//
// 0Ch - 1Eh are reserved
//
#define EFI_SCSI_TYPE_UNKNOWN 0x1F ///< Unknown or no device type
#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