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

Reply via email to