]> git.proxmox.com Git - mirror_edk2.git/blobdiff - ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashBlockIoDxe.c
ArmPlatformPkg: Remove package dependency in NorFlashStandaloneMm
[mirror_edk2.git] / ArmPlatformPkg / Drivers / NorFlashDxe / NorFlashBlockIoDxe.c
index 21fceac1dc79979cce7ee0e4f1174b97caeec9f7..793f26c4df68971aacb67c0f920d063f02cea5c8 100644 (file)
@@ -1,21 +1,15 @@
 /** @file  NorFlashBlockIoDxe.c\r
 \r
-  Copyright (c) 2011-2012, ARM Ltd. All rights reserved.<BR>\r
+  Copyright (c) 2011-2013, ARM Ltd. All rights reserved.<BR>\r
 \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
+  SPDX-License-Identifier: BSD-2-Clause-Patent\r
 \r
 **/\r
 \r
 #include <Library/BaseMemoryLib.h>\r
 #include <Library/UefiBootServicesTableLib.h>\r
 \r
-#include "NorFlashDxe.h"\r
+#include "NorFlash.h"\r
 \r
 //\r
 // BlockIO Protocol function EFI_BLOCK_IO_PROTOCOL.Reset\r
@@ -51,17 +45,27 @@ NorFlashBlockIoReadBlocks (
 {\r
   NOR_FLASH_INSTANCE  *Instance;\r
   EFI_STATUS          Status;\r
+  EFI_BLOCK_IO_MEDIA  *Media;\r
+\r
+  if (This == NULL) {\r
+    return EFI_INVALID_PARAMETER;\r
+  }\r
 \r
   Instance = INSTANCE_FROM_BLKIO_THIS(This);\r
+  Media = This->Media;\r
 \r
   DEBUG ((DEBUG_BLKIO, "NorFlashBlockIoReadBlocks(MediaId=0x%x, Lba=%ld, BufferSize=0x%x bytes (%d kB), BufferPtr @ 0x%08x)\n", MediaId, Lba, BufferSizeInBytes, Buffer));\r
 \r
-  if( !This->Media->MediaPresent ) {\r
+  if (!Media) {\r
+    Status = EFI_INVALID_PARAMETER;\r
+  } else if (!Media->MediaPresent) {\r
     Status = EFI_NO_MEDIA;\r
-  } else if( This->Media->MediaId != MediaId ) {\r
+  } else if (Media->MediaId != MediaId) {\r
     Status = EFI_MEDIA_CHANGED;\r
+  } else if ((Media->IoAlign > 2) && (((UINTN)Buffer & (Media->IoAlign - 1)) != 0)) {\r
+    Status = EFI_INVALID_PARAMETER;\r
   } else {\r
-    Status = NorFlashReadBlocks (Instance,Lba,BufferSizeInBytes,Buffer);\r
+    Status = NorFlashReadBlocks (Instance, Lba, BufferSizeInBytes, Buffer);\r
   }\r
 \r
   return Status;\r