]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassBoot.c
Improve coding style in MdeModulePkg.
[mirror_edk2.git] / MdeModulePkg / Bus / Usb / UsbMassStorageDxe / UsbMassBoot.c
index 013b7e2cc3c82b486f8d61e63f919fb22cdcedd3..1b200bb4ec9f89b20857de2811853ba1de066f98 100644 (file)
@@ -2,7 +2,7 @@
   Implementation of the command set of USB Mass Storage Specification\r
   for Bootability, Revision 1.0.\r
 \r
-Copyright (c) 2007 - 2008, Intel Corporation\r
+Copyright (c) 2007 - 2010, Intel Corporation\r
 All rights reserved. This program and the accompanying materials\r
 are licensed and made available under the terms and conditions of the BSD License\r
 which accompanies this distribution.  The full text of the license may be found at\r
@@ -92,10 +92,10 @@ UsbBootRequestSense (
 \r
   case USB_BOOT_SENSE_NOT_READY:\r
     Status = EFI_DEVICE_ERROR;\r
-    if (SenseData.ASC == USB_BOOT_ASC_NO_MEDIA) {\r
+    if (SenseData.Asc == USB_BOOT_ASC_NO_MEDIA) {\r
       Media->MediaPresent = FALSE;\r
       Status = EFI_NO_MEDIA;\r
-    } else if (SenseData.ASC == USB_BOOT_ASC_NOT_READY) {\r
+    } else if (SenseData.Asc == USB_BOOT_ASC_NOT_READY) {\r
       Status = EFI_NOT_READY;\r
     }\r
     break;\r
@@ -106,7 +106,7 @@ UsbBootRequestSense (
 \r
   case USB_BOOT_SENSE_UNIT_ATTENTION:\r
     Status = EFI_DEVICE_ERROR;\r
-    if (SenseData.ASC == USB_BOOT_ASC_MEDIA_CHANGE) {\r
+    if (SenseData.Asc == USB_BOOT_ASC_MEDIA_CHANGE) {\r
       //\r
       // If MediaChange, reset ReadOnly and new MediaId\r
       //\r
@@ -129,8 +129,8 @@ UsbBootRequestSense (
   DEBUG ((EFI_D_INFO, "UsbBootRequestSense: (%r) with sense key %x/%x/%x\n",\r
           Status,\r
           USB_BOOT_SENSE_KEY (SenseData.SenseKey),\r
-          SenseData.ASC,\r
-          SenseData.ASCQ\r
+          SenseData.Asc,\r
+          SenseData.Ascq\r
           ));\r
 \r
   return Status;\r
@@ -235,11 +235,11 @@ UsbBootExecCmdWithRetry (
 {\r
   EFI_STATUS                  Status;\r
   UINTN                       Retry;\r
+  UINT8                       Terminate;\r
 \r
   Status  = EFI_SUCCESS;\r
 \r
-  for (Retry = 0; Retry < USB_BOOT_COMMAND_RETRY; Retry++) {\r
-\r
+  for (Retry = 0, Terminate = 0; Retry < USB_BOOT_COMMAND_RETRY; Retry++) {\r
     Status = UsbBootExecCmd (\r
                UsbMass,\r
                Cmd,\r
@@ -255,8 +255,9 @@ UsbBootExecCmdWithRetry (
     //\r
     // If the device isn't ready, just wait for it without limit on retrial times.\r
     //\r
-    if (Status == EFI_NOT_READY) {\r
+    if (Status == EFI_NOT_READY  && Terminate < 3) {\r
       Retry = 0;\r
+      Terminate++;\r
     }\r
   }\r
 \r
@@ -410,7 +411,10 @@ UsbBootReadCapacity (
 \r
   BlockSize           = SwapBytes32 (ReadUnaligned32 ((CONST UINT32 *) CapacityData.BlockLen));\r
   if (BlockSize == 0) {\r
-    return EFI_NOT_READY;\r
+    //\r
+    //  Get sense data  \r
+    //\r
+    return UsbBootRequestSense (UsbMass);\r
   } else {\r
     Media->BlockSize = BlockSize;\r
   }\r
@@ -418,7 +422,7 @@ UsbBootReadCapacity (
   DEBUG ((EFI_D_INFO, "UsbBootReadCapacity Success LBA=%ld BlockSize=%d\n",\r
           Media->LastBlock, Media->BlockSize));\r
 \r
-  return EFI_SUCCESS;\r
+  return Status;\r
 }\r
 \r
 /**\r