]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Bus/Ufs/UfsBlockIoPei/UfsBlockIoPei.c
MdeModulePkg: Replace BSD License with BSD+Patent License
[mirror_edk2.git] / MdeModulePkg / Bus / Ufs / UfsBlockIoPei / UfsBlockIoPei.c
index 204e456413464cb77b0f674a675474d9a4128144..d79ca3904b447049cb4e2857af6ddc4d31ae7918 100644 (file)
@@ -1,13 +1,7 @@
 /** @file\r
 \r
-  Copyright (c) 2014 - 2018, Intel Corporation. All rights reserved.<BR>\r
-  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
-  http://opensource.org/licenses/bsd-license.php\r
-\r
-  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+  Copyright (c) 2014 - 2019, Intel Corporation. All rights reserved.<BR>\r
+  SPDX-License-Identifier: BSD-2-Clause-Patent\r
 \r
 **/\r
 \r
@@ -587,15 +581,17 @@ UfsBlockIoPeimGetMediaInfo (
   EFI_SCSI_DISK_CAPACITY_DATA16      Capacity16;\r
   UINTN                              DataLength;\r
   BOOLEAN                            NeedRetry;\r
+  UINTN                              Lun;\r
 \r
   Private   = GET_UFS_PEIM_HC_PRIVATE_DATA_FROM_THIS (This);\r
   NeedRetry = TRUE;\r
 \r
-  if (DeviceIndex >= UFS_PEIM_MAX_LUNS) {\r
+  if ((DeviceIndex == 0) || (DeviceIndex > UFS_PEIM_MAX_LUNS)) {\r
     return EFI_INVALID_PARAMETER;\r
   }\r
 \r
-  if ((Private->Luns.BitMask & (BIT0 << DeviceIndex)) == 0) {\r
+  Lun = DeviceIndex - 1;\r
+  if ((Private->Luns.BitMask & (BIT0 << Lun)) == 0) {\r
     return EFI_ACCESS_DENIED;\r
   }\r
 \r
@@ -609,7 +605,7 @@ UfsBlockIoPeimGetMediaInfo (
   do {\r
     Status = UfsPeimTestUnitReady (\r
                Private,\r
-               DeviceIndex,\r
+               Lun,\r
                &SenseData,\r
                &SenseDataLength\r
                );\r
@@ -621,7 +617,7 @@ UfsBlockIoPeimGetMediaInfo (
       continue;\r
     }\r
 \r
-    Status = UfsPeimParsingSenseKeys (&(Private->Media[DeviceIndex]), &SenseData, &NeedRetry);\r
+    Status = UfsPeimParsingSenseKeys (&(Private->Media[Lun]), &SenseData, &NeedRetry);\r
     if (EFI_ERROR (Status)) {\r
       return EFI_DEVICE_ERROR;\r
     }\r
@@ -630,7 +626,7 @@ UfsBlockIoPeimGetMediaInfo (
 \r
   DataLength      = sizeof (EFI_SCSI_DISK_CAPACITY_DATA);\r
   SenseDataLength = 0;\r
-  Status = UfsPeimReadCapacity (Private, DeviceIndex, &Capacity, (UINT32 *)&DataLength, NULL, &SenseDataLength);\r
+  Status = UfsPeimReadCapacity (Private, Lun, &Capacity, (UINT32 *)&DataLength, NULL, &SenseDataLength);\r
   if (EFI_ERROR (Status)) {\r
     return EFI_DEVICE_ERROR;\r
   }\r
@@ -639,22 +635,22 @@ UfsBlockIoPeimGetMediaInfo (
       (Capacity.LastLba1 == 0xff) && (Capacity.LastLba0 == 0xff)) {\r
     DataLength      = sizeof (EFI_SCSI_DISK_CAPACITY_DATA16);\r
     SenseDataLength = 0;\r
-    Status = UfsPeimReadCapacity16 (Private, DeviceIndex, &Capacity16, (UINT32 *)&DataLength, NULL, &SenseDataLength);\r
+    Status = UfsPeimReadCapacity16 (Private, Lun, &Capacity16, (UINT32 *)&DataLength, NULL, &SenseDataLength);\r
     if (EFI_ERROR (Status)) {\r
       return EFI_DEVICE_ERROR;\r
     }\r
-    Private->Media[DeviceIndex].LastBlock  = ((UINT32)Capacity16.LastLba3 << 24) | (Capacity16.LastLba2 << 16) | (Capacity16.LastLba1 << 8) | Capacity16.LastLba0;\r
-    Private->Media[DeviceIndex].LastBlock |= LShiftU64 ((UINT64)Capacity16.LastLba7, 56) | LShiftU64((UINT64)Capacity16.LastLba6, 48) | LShiftU64 ((UINT64)Capacity16.LastLba5, 40) | LShiftU64 ((UINT64)Capacity16.LastLba4, 32);\r
-    Private->Media[DeviceIndex].BlockSize  = (Capacity16.BlockSize3 << 24) | (Capacity16.BlockSize2 << 16) | (Capacity16.BlockSize1 << 8) | Capacity16.BlockSize0;\r
+    Private->Media[Lun].LastBlock  = ((UINT32)Capacity16.LastLba3 << 24) | (Capacity16.LastLba2 << 16) | (Capacity16.LastLba1 << 8) | Capacity16.LastLba0;\r
+    Private->Media[Lun].LastBlock |= LShiftU64 ((UINT64)Capacity16.LastLba7, 56) | LShiftU64((UINT64)Capacity16.LastLba6, 48) | LShiftU64 ((UINT64)Capacity16.LastLba5, 40) | LShiftU64 ((UINT64)Capacity16.LastLba4, 32);\r
+    Private->Media[Lun].BlockSize  = (Capacity16.BlockSize3 << 24) | (Capacity16.BlockSize2 << 16) | (Capacity16.BlockSize1 << 8) | Capacity16.BlockSize0;\r
   } else {\r
-    Private->Media[DeviceIndex].LastBlock  = ((UINT32)Capacity.LastLba3 << 24) | (Capacity.LastLba2 << 16) | (Capacity.LastLba1 << 8) | Capacity.LastLba0;\r
-    Private->Media[DeviceIndex].BlockSize  = (Capacity.BlockSize3 << 24) | (Capacity.BlockSize2 << 16) | (Capacity.BlockSize1 << 8) | Capacity.BlockSize0;\r
+    Private->Media[Lun].LastBlock  = ((UINT32)Capacity.LastLba3 << 24) | (Capacity.LastLba2 << 16) | (Capacity.LastLba1 << 8) | Capacity.LastLba0;\r
+    Private->Media[Lun].BlockSize  = (Capacity.BlockSize3 << 24) | (Capacity.BlockSize2 << 16) | (Capacity.BlockSize1 << 8) | Capacity.BlockSize0;\r
   }\r
 \r
   MediaInfo->DeviceType   = UfsDevice;\r
-  MediaInfo->MediaPresent = Private->Media[DeviceIndex].MediaPresent;\r
-  MediaInfo->LastBlock    = (UINTN)Private->Media[DeviceIndex].LastBlock;\r
-  MediaInfo->BlockSize    = Private->Media[DeviceIndex].BlockSize;\r
+  MediaInfo->MediaPresent = Private->Media[Lun].MediaPresent;\r
+  MediaInfo->LastBlock    = (UINTN)Private->Media[Lun].LastBlock;\r
+  MediaInfo->BlockSize    = Private->Media[Lun].BlockSize;\r
 \r
   return EFI_SUCCESS;\r
 }\r
@@ -711,6 +707,7 @@ UfsBlockIoPeimReadBlocks (
   EFI_SCSI_SENSE_DATA                SenseData;\r
   UINT8                              SenseDataLength;\r
   BOOLEAN                            NeedRetry;\r
+  UINTN                              Lun;\r
 \r
   Status    = EFI_SUCCESS;\r
   NeedRetry = TRUE;\r
@@ -730,21 +727,22 @@ UfsBlockIoPeimReadBlocks (
     return EFI_SUCCESS;\r
   }\r
 \r
-  if (DeviceIndex >= UFS_PEIM_MAX_LUNS) {\r
+  if ((DeviceIndex == 0) || (DeviceIndex > UFS_PEIM_MAX_LUNS)) {\r
     return EFI_INVALID_PARAMETER;\r
   }\r
 \r
-  if ((Private->Luns.BitMask & (BIT0 << DeviceIndex)) == 0) {\r
+  Lun = DeviceIndex - 1;\r
+  if ((Private->Luns.BitMask & (BIT0 << Lun)) == 0) {\r
     return EFI_ACCESS_DENIED;\r
   }\r
 \r
-  BlockSize = Private->Media[DeviceIndex].BlockSize;\r
+  BlockSize = Private->Media[Lun].BlockSize;\r
 \r
   if (BufferSize % BlockSize != 0) {\r
     Status = EFI_BAD_BUFFER_SIZE;\r
   }\r
 \r
-  if (StartLBA > Private->Media[DeviceIndex].LastBlock) {\r
+  if (StartLBA > Private->Media[Lun].LastBlock) {\r
     Status = EFI_INVALID_PARAMETER;\r
   }\r
 \r
@@ -753,7 +751,7 @@ UfsBlockIoPeimReadBlocks (
   do {\r
     Status = UfsPeimTestUnitReady (\r
                Private,\r
-               DeviceIndex,\r
+               Lun,\r
                &SenseData,\r
                &SenseDataLength\r
                );\r
@@ -765,7 +763,7 @@ UfsBlockIoPeimReadBlocks (
       continue;\r
     }\r
 \r
-    Status = UfsPeimParsingSenseKeys (&(Private->Media[DeviceIndex]), &SenseData, &NeedRetry);\r
+    Status = UfsPeimParsingSenseKeys (&(Private->Media[Lun]), &SenseData, &NeedRetry);\r
     if (EFI_ERROR (Status)) {\r
       return EFI_DEVICE_ERROR;\r
     }\r
@@ -773,10 +771,10 @@ UfsBlockIoPeimReadBlocks (
   } while (NeedRetry);\r
 \r
   SenseDataLength = 0;\r
-  if (Private->Media[DeviceIndex].LastBlock < 0xfffffffful) {\r
+  if (Private->Media[Lun].LastBlock < 0xfffffffful) {\r
     Status = UfsPeimRead10 (\r
                Private,\r
-               DeviceIndex,\r
+               Lun,\r
                (UINT32)StartLBA,\r
                (UINT32)NumberOfBlocks,\r
                Buffer,\r
@@ -787,7 +785,7 @@ UfsBlockIoPeimReadBlocks (
   } else {\r
     Status = UfsPeimRead16 (\r
                Private,\r
-               DeviceIndex,\r
+               Lun,\r
                (UINT32)StartLBA,\r
                (UINT32)NumberOfBlocks,\r
                Buffer,\r
@@ -888,6 +886,7 @@ UfsBlockIoPeimGetMediaInfo2 (
   EFI_STATUS                         Status;\r
   UFS_PEIM_HC_PRIVATE_DATA           *Private;\r
   EFI_PEI_BLOCK_IO_MEDIA             Media;\r
+  UINTN                              Lun;\r
 \r
   Private   = GET_UFS_PEIM_HC_PRIVATE_DATA_FROM_THIS2 (This);\r
 \r
@@ -901,7 +900,8 @@ UfsBlockIoPeimGetMediaInfo2 (
     return Status;\r
   }\r
 \r
-  CopyMem (MediaInfo, &(Private->Media[DeviceIndex]), sizeof (EFI_PEI_BLOCK_IO2_MEDIA));\r
+  Lun = DeviceIndex - 1;\r
+  CopyMem (MediaInfo, &(Private->Media[Lun]), sizeof (EFI_PEI_BLOCK_IO2_MEDIA));\r
   return EFI_SUCCESS;\r
 }\r
 \r