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

Retry sending NOP OUT command upto 10 times. This to give extra time for
UFS device to respond if was busy.

Signed-off-by: Bandaru <purna.chandra.rao.band...@intel.com>
Cc: Mateusz Albecki <mateusz.albe...@intel.com>
Cc: Ray Ni <ray...@intel.com>
Cc: Hao A Wu <hao.a...@intel.com>

Change-Id: I46054ea9ee34ad295fce58dff1756241fd22e17c
---
 MdeModulePkg/Bus/Ufs/UfsPassThruDxe/UfsPassThru.c | 16 +++++++++++++---
 1 file changed, 13 insertions(+), 3 deletions(-)

diff --git a/MdeModulePkg/Bus/Ufs/UfsPassThruDxe/UfsPassThru.c 
b/MdeModulePkg/Bus/Ufs/UfsPassThruDxe/UfsPassThru.c
index 8859578af3..c4c2b03e46 100644
--- a/MdeModulePkg/Bus/Ufs/UfsPassThruDxe/UfsPassThru.c
+++ b/MdeModulePkg/Bus/Ufs/UfsPassThruDxe/UfsPassThru.c
@@ -911,9 +911,19 @@ UfsPassThruDriverBindingStart (
   // At the end of the UFS Interconnect Layer initialization on both host and 
device side,
   // the host shall send a NOP OUT UPIU to verify that the device UTP Layer is 
ready.
   //
-  Status = UfsExecNopCmds (Private);
-  if (EFI_ERROR (Status)) {
-    DEBUG ((DEBUG_ERROR, "Ufs Sending NOP IN command Error, Status = %r\n", 
Status));
+  for (Index = 10; Index > 0; Index--) {
+    Status = UfsExecNopCmds (Private);
+    if (EFI_ERROR (Status)) {
+      DEBUG ((DEBUG_ERROR, "Ufs Sending NOP IN command Error, Index = %x 
Status = %r\n", Index, Status));
+      MicroSecondDelay (100); //100 us
+      continue;
+    } else {
+      DEBUG ((DEBUG_INFO, "Ufs Sent NOP OUT successfully and received NOP IN, 
Status = %r\n", Status));
+      break;
+    }
+  }
+  if (!Index) {
+    DEBUG ((DEBUG_INFO, "NOP OUT failed all the 10 times Status = %r\n", 
Status));
     goto Error;
   }
 
-- 
2.16.2.windows.1



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#72010): https://edk2.groups.io/g/devel/message/72010
Mute This Topic: https://groups.io/mt/80841261/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-


Reply via email to