Revision: 17247
http://sourceforge.net/p/edk2/code/17247
Author: erictian
Date: 2015-04-29 02:44:42 +0000 (Wed, 29 Apr 2015)
Log Message:
-----------
MdeModulePkg: fix some issues in ScsiDisk to co-work with UFS stack
The changes in ScsiDisk include:
1. Add UFS disk info support.
2. Remove the wrong block size calculation.
3. Get sense data for TEST_UNIT_READY cmd immediately rather than sending a
REQUEST_SENSE cmd again.
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Feng Tian <[email protected]>
Reviewed-by: Star Zeng <[email protected]>
Modified Paths:
--------------
trunk/edk2/MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDisk.c
trunk/edk2/MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDiskDxe.inf
Modified: trunk/edk2/MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDisk.c
===================================================================
--- trunk/edk2/MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDisk.c 2015-04-29
02:42:58 UTC (rev 17246)
+++ trunk/edk2/MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDisk.c 2015-04-29
02:44:42 UTC (rev 17247)
@@ -1150,7 +1150,7 @@
UINT8 Index;
UINT8 MaxRetry;
- SenseDataLength = 0;
+ SenseDataLength = (UINT8) (ScsiDiskDevice->SenseDataNumber * sizeof
(EFI_SCSI_SENSE_DATA));
*NumberOfSenseKeys = 0;
//
@@ -1159,7 +1159,7 @@
Status = ScsiTestUnitReadyCommand (
ScsiDiskDevice->ScsiIo,
SCSI_DISK_TIMEOUT,
- NULL,
+ ScsiDiskDevice->SenseData,
&SenseDataLength,
&HostAdapterStatus,
&TargetStatus
@@ -1207,6 +1207,12 @@
return EFI_DEVICE_ERROR;
}
+ if (SenseDataLength != 0) {
+ *NumberOfSenseKeys = SenseDataLength / sizeof (EFI_SCSI_SENSE_DATA);
+ *SenseDataArray = ScsiDiskDevice->SenseData;
+ return EFI_SUCCESS;
+ }
+
MaxRetry = 3;
for (Index = 0; Index < MaxRetry; Index++) {
Status = ScsiDiskRequestSenseKeys (
@@ -1740,14 +1746,6 @@
}
ScsiDiskDevice->BlkIo.Media->MediaPresent = TRUE;
-
- if (ScsiDiskDevice->DeviceType == EFI_SCSI_TYPE_DISK) {
- ScsiDiskDevice->BlkIo.Media->BlockSize = 0x200;
- }
-
- if (ScsiDiskDevice->DeviceType == EFI_SCSI_TYPE_CDROM) {
- ScsiDiskDevice->BlkIo.Media->BlockSize = 0x800;
- }
}
/**
@@ -3102,7 +3100,7 @@
EFI_STATUS Status;
SCSI_DISK_DEV *ScsiDiskDevice;
- if (CompareGuid (&This->Interface, &gEfiDiskInfoScsiInterfaceGuid)) {
+ if (CompareGuid (&This->Interface, &gEfiDiskInfoScsiInterfaceGuid) ||
CompareGuid (&This->Interface, &gEfiDiskInfoUfsInterfaceGuid)) {
//
// Physical SCSI bus does not support this data class.
//
@@ -3171,7 +3169,7 @@
{
SCSI_DISK_DEV *ScsiDiskDevice;
- if (CompareGuid (&This->Interface, &gEfiDiskInfoScsiInterfaceGuid)) {
+ if (CompareGuid (&This->Interface, &gEfiDiskInfoScsiInterfaceGuid) ||
CompareGuid (&This->Interface, &gEfiDiskInfoUfsInterfaceGuid)) {
//
// This is not an IDE physical device.
//
@@ -3301,6 +3299,10 @@
return;
}
} while (--IdentifyRetry > 0);
+ } else if ((DevicePathType (ChildDevicePathNode) == MESSAGING_DEVICE_PATH)
&&
+ (DevicePathSubType (ChildDevicePathNode) == MSG_UFS_DP)) {
+ CopyGuid (&ScsiDiskDevice->DiskInfo.Interface,
&gEfiDiskInfoUfsInterfaceGuid);
+ break;
}
DevicePathNode = ChildDevicePathNode;
}
Modified: trunk/edk2/MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDiskDxe.inf
===================================================================
--- trunk/edk2/MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDiskDxe.inf
2015-04-29 02:42:58 UTC (rev 17246)
+++ trunk/edk2/MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDiskDxe.inf
2015-04-29 02:44:42 UTC (rev 17247)
@@ -63,6 +63,7 @@
gEfiDiskInfoScsiInterfaceGuid ## SOMETIMES_PRODUCES ##
UNDEFINED
gEfiDiskInfoIdeInterfaceGuid ## SOMETIMES_PRODUCES ##
UNDEFINED
gEfiDiskInfoAhciInterfaceGuid ## SOMETIMES_PRODUCES ##
UNDEFINED
+ gEfiDiskInfoUfsInterfaceGuid ## SOMETIMES_PRODUCES ##
UNDEFINED
# [Event]
# EVENT_TYPE_RELATIVE_TIMER ## CONSUMES
------------------------------------------------------------------------------
One dashboard for servers and applications across Physical-Virtual-Cloud
Widest out-of-the-box monitoring support with 50+ applications
Performance metrics, stats and reports that give you Actionable Insights
Deep dive visibility with transaction tracing using APM Insight.
http://ad.doubleclick.net/ddm/clk/290420510;117567292;y
_______________________________________________
edk2-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/edk2-commits