)\r
{\r
EFI_SCSI_IO_SCSI_REQUEST_PACKET CommandPacket;\r
+ UINT64 Lun;\r
+ UINT8 *Target;\r
+ UINT8 TargetArray[EFI_SCSI_TARGET_MAX_BYTES];\r
EFI_STATUS Status;\r
UINT8 Cdb[EFI_SCSI_OP_LENGTH_SIX];\r
\r
//\r
// Fill Cdb for Test Unit Ready Command\r
//\r
+ Target = &TargetArray[0];\r
+ ScsiIo->GetDeviceLocation (ScsiIo, &Target, &Lun);\r
+\r
Cdb[0] = EFI_SCSI_OP_TEST_UNIT_READY;\r
+ Cdb[1] = (UINT8) ((Lun << 5) & EFI_SCSI_LOGICAL_UNIT_NUMBER_MASK);\r
CommandPacket.CdbLength = (UINT8) EFI_SCSI_OP_LENGTH_SIX;\r
CommandPacket.SenseDataLength = *SenseDataLength;\r
\r
)\r
{\r
EFI_SCSI_IO_SCSI_REQUEST_PACKET CommandPacket;\r
+ UINT64 Lun;\r
+ UINT8 *Target;\r
+ UINT8 TargetArray[EFI_SCSI_TARGET_MAX_BYTES];\r
EFI_STATUS Status;\r
UINT8 Cdb[EFI_SCSI_OP_LENGTH_SIX];\r
\r
CommandPacket.SenseDataLength = *SenseDataLength;\r
CommandPacket.Cdb = Cdb;\r
\r
+ Target = &TargetArray[0];\r
+ ScsiIo->GetDeviceLocation (ScsiIo, &Target, &Lun);\r
+\r
Cdb[0] = EFI_SCSI_OP_INQUIRY;\r
+ Cdb[1] = (UINT8) ((Lun << 5) & EFI_SCSI_LOGICAL_UNIT_NUMBER_MASK);\r
if (EnableVitalProductData) {\r
Cdb[1] |= 0x01;\r
}\r
)\r
{\r
EFI_SCSI_IO_SCSI_REQUEST_PACKET CommandPacket;\r
+ UINT64 Lun;\r
+ UINT8 *Target;\r
+ UINT8 TargetArray[EFI_SCSI_TARGET_MAX_BYTES];\r
EFI_STATUS Status;\r
UINT8 Cdb[EFI_SCSI_OP_LENGTH_TEN];\r
\r
//\r
// Fill Cdb for Mode Sense (10) Command\r
//\r
+ Target = &TargetArray[0];\r
+ ScsiIo->GetDeviceLocation (ScsiIo, &Target, &Lun);\r
+\r
Cdb[0] = EFI_SCSI_OP_MODE_SEN10;\r
//\r
// DBDField is in Cdb[1] bit3 of (bit7..0)\r
//\r
- Cdb[1] = (UINT8) ((DBDField << 3) & 0x08);\r
+ Cdb[1] = (UINT8) (((Lun << 5) & EFI_SCSI_LOGICAL_UNIT_NUMBER_MASK) + ((DBDField << 3) & 0x08));\r
//\r
// PageControl is in Cdb[2] bit7..6, PageCode is in Cdb[2] bit5..0\r
//\r
- Cdb[2] = (UINT8) (((PageControl & 0x3) << 6) | (PageCode & 0x3f));\r
+ Cdb[2] = (UINT8) (((PageControl << 6) & 0xc0) | (PageCode & 0x3f));\r
Cdb[7] = (UINT8) (*DataLength >> 8);\r
Cdb[8] = (UINT8) (*DataLength);\r
\r
)\r
{\r
EFI_SCSI_IO_SCSI_REQUEST_PACKET CommandPacket;\r
+ UINT64 Lun;\r
+ UINT8 *Target;\r
+ UINT8 TargetArray[EFI_SCSI_TARGET_MAX_BYTES];\r
EFI_STATUS Status;\r
UINT8 Cdb[EFI_SCSI_OP_LENGTH_SIX];\r
\r
//\r
// Fill Cdb for Request Sense Command\r
//\r
+ Target = &TargetArray[0];\r
+ ScsiIo->GetDeviceLocation (ScsiIo, &Target, &Lun);\r
+\r
Cdb[0] = EFI_SCSI_OP_REQUEST_SENSE;\r
+ Cdb[1] = (UINT8) ((Lun << 5) & EFI_SCSI_LOGICAL_UNIT_NUMBER_MASK);\r
Cdb[4] = (UINT8) (*SenseDataLength);\r
\r
CommandPacket.CdbLength = (UINT8) EFI_SCSI_OP_LENGTH_SIX;\r
)\r
{\r
EFI_SCSI_IO_SCSI_REQUEST_PACKET CommandPacket;\r
+ UINT64 Lun;\r
+ UINT8 *Target;\r
+ UINT8 TargetArray[EFI_SCSI_TARGET_MAX_BYTES];\r
EFI_STATUS Status;\r
UINT8 Cdb[EFI_SCSI_OP_LENGTH_TEN];\r
\r
//\r
// Fill Cdb for Read Capacity Command\r
//\r
+ Target = &TargetArray[0];\r
+ ScsiIo->GetDeviceLocation (ScsiIo, &Target, &Lun);\r
+\r
Cdb[0] = EFI_SCSI_OP_READ_CAPACITY;\r
+ Cdb[1] = (UINT8) ((Lun << 5) & EFI_SCSI_LOGICAL_UNIT_NUMBER_MASK);\r
if (!Pmi) {\r
//\r
// Partial medium indicator,if Pmi is FALSE, the Cdb.2 ~ Cdb.5 MUST BE ZERO.\r
)\r
{\r
EFI_SCSI_IO_SCSI_REQUEST_PACKET CommandPacket;\r
+ UINT64 Lun;\r
+ UINT8 *Target;\r
+ UINT8 TargetArray[EFI_SCSI_TARGET_MAX_BYTES];\r
EFI_STATUS Status;\r
UINT8 Cdb[16];\r
\r
//\r
// Fill Cdb for Read Capacity Command\r
//\r
+ Target = &TargetArray[0];\r
+ ScsiIo->GetDeviceLocation (ScsiIo, &Target, &Lun);\r
+\r
Cdb[0] = EFI_SCSI_OP_READ_CAPACITY16;\r
Cdb[1] = 0x10;\r
if (!Pmi) {\r
)\r
{\r
EFI_SCSI_IO_SCSI_REQUEST_PACKET CommandPacket;\r
+ UINT64 Lun;\r
+ UINT8 *Target;\r
+ UINT8 TargetArray[EFI_SCSI_TARGET_MAX_BYTES];\r
EFI_STATUS Status;\r
UINT8 Cdb[EFI_SCSI_OP_LENGTH_TEN];\r
\r
//\r
// Fill Cdb for Read (10) Command\r
//\r
+ Target = &TargetArray[0];\r
+ ScsiIo->GetDeviceLocation (ScsiIo, &Target, &Lun);\r
+\r
Cdb[0] = EFI_SCSI_OP_READ10;\r
+ Cdb[1] = (UINT8) ((Lun << 5) & EFI_SCSI_LOGICAL_UNIT_NUMBER_MASK);\r
Cdb[2] = (UINT8) (StartLba >> 24);\r
Cdb[3] = (UINT8) (StartLba >> 16);\r
Cdb[4] = (UINT8) (StartLba >> 8);\r
)\r
{\r
EFI_SCSI_IO_SCSI_REQUEST_PACKET CommandPacket;\r
+ UINT64 Lun;\r
+ UINT8 *Target;\r
+ UINT8 TargetArray[EFI_SCSI_TARGET_MAX_BYTES];\r
EFI_STATUS Status;\r
UINT8 Cdb[EFI_SCSI_OP_LENGTH_TEN];\r
\r
//\r
// Fill Cdb for Write (10) Command\r
//\r
+ Target = &TargetArray[0];\r
+ ScsiIo->GetDeviceLocation (ScsiIo, &Target, &Lun);\r
+\r
Cdb[0] = EFI_SCSI_OP_WRITE10;\r
+ Cdb[1] = (UINT8) ((Lun << 5) & EFI_SCSI_LOGICAL_UNIT_NUMBER_MASK);\r
Cdb[2] = (UINT8) (StartLba >> 24);\r
Cdb[3] = (UINT8) (StartLba >> 16);\r
Cdb[4] = (UINT8) (StartLba >> 8);\r