]> git.proxmox.com Git - mirror_edk2.git/blobdiff - OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FwBlockService.h
IntelSiliconPkg IntelVTdPmrPei: Install IoMmu PPI before enabling PMR
[mirror_edk2.git] / OvmfPkg / QemuFlashFvbServicesRuntimeDxe / FwBlockService.h
index 0dcd26d8d0eb9307facf46a17019753c72143386..1f9287b0876971cb7c2b9be620a128ee1099de6f 100644 (file)
@@ -1,51 +1,50 @@
 /**@file\r
 \r
-Copyright (c) 2006, 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
+  Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\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
+  This program and the accompanying materials are licensed and made available\r
+  under the terms and conditions of the BSD License which accompanies this\r
+  distribution.  The full text of the license may be found at\r
+  http://opensource.org/licenses/bsd-license.php\r
 \r
-Module Name:\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
 \r
-  FwBlockService.h\r
+  Module Name:\r
 \r
-Abstract:\r
+    FwBlockService.h\r
 \r
-  Firmware volume block driver for Intel Firmware Hub (FWH) device\r
+  Abstract:\r
+\r
+    Firmware volume block driver for Intel Firmware Hub (FWH) device\r
 \r
 **/\r
 \r
 #ifndef _FW_BLOCK_SERVICE_H\r
 #define _FW_BLOCK_SERVICE_H\r
 \r
-//\r
-// BugBug: Add documentation here for data structure!!!!\r
-//\r
-#define FVB_PHYSICAL  0\r
-#define FVB_VIRTUAL   1\r
-\r
 typedef struct {\r
-  EFI_LOCK                    FvbDevLock;\r
-  UINTN                       FvBase[2];\r
+  UINTN                       FvBase;\r
   UINTN                       NumOfBlocks;\r
   EFI_FIRMWARE_VOLUME_HEADER  VolumeHeader;\r
 } EFI_FW_VOL_INSTANCE;\r
 \r
 typedef struct {\r
   UINT32              NumFv;\r
-  EFI_FW_VOL_INSTANCE *FvInstance[2];\r
-  UINT8               *FvbScratchSpace[2];\r
+  EFI_FW_VOL_INSTANCE *FvInstance;\r
 } ESAL_FWB_GLOBAL;\r
 \r
+extern ESAL_FWB_GLOBAL *mFvbModuleGlobal;\r
+\r
 //\r
 // Fvb Protocol instance data\r
 //\r
-#define FVB_DEVICE_FROM_THIS(a)         CR (a, EFI_FW_VOL_BLOCK_DEVICE, FwVolBlockInstance, FVB_DEVICE_SIGNATURE)\r
-#define FVB_EXTEND_DEVICE_FROM_THIS(a)  CR (a, EFI_FW_VOL_BLOCK_DEVICE, FvbExtension, FVB_DEVICE_SIGNATURE)\r
+#define FVB_DEVICE_FROM_THIS(a) CR (a, EFI_FW_VOL_BLOCK_DEVICE, \\r
+                                  FwVolBlockInstance, FVB_DEVICE_SIGNATURE)\r
+\r
+#define FVB_EXTEND_DEVICE_FROM_THIS(a) CR (a, EFI_FW_VOL_BLOCK_DEVICE, \\r
+                                         FvbExtension, FVB_DEVICE_SIGNATURE)\r
+\r
 #define FVB_DEVICE_SIGNATURE            SIGNATURE_32 ('F', 'V', 'B', 'N')\r
 \r
 typedef struct {\r
@@ -75,24 +74,21 @@ EFI_STATUS
 FvbSetVolumeAttributes (\r
   IN UINTN                                Instance,\r
   IN OUT EFI_FVB_ATTRIBUTES_2             *Attributes,\r
-  IN ESAL_FWB_GLOBAL                      *Global,\r
-  IN BOOLEAN                              Virtual\r
+  IN ESAL_FWB_GLOBAL                      *Global\r
   );\r
 \r
 EFI_STATUS\r
 FvbGetVolumeAttributes (\r
   IN UINTN                                Instance,\r
   OUT EFI_FVB_ATTRIBUTES_2                *Attributes,\r
-  IN ESAL_FWB_GLOBAL                      *Global,\r
-  IN BOOLEAN                              Virtual\r
+  IN ESAL_FWB_GLOBAL                      *Global\r
   );\r
 \r
 EFI_STATUS\r
 FvbGetPhysicalAddress (\r
   IN UINTN                                Instance,\r
   OUT EFI_PHYSICAL_ADDRESS                *Address,\r
-  IN ESAL_FWB_GLOBAL                      *Global,\r
-  IN BOOLEAN                              Virtual\r
+  IN ESAL_FWB_GLOBAL                      *Global\r
   );\r
 \r
 EFI_STATUS\r
@@ -117,8 +113,7 @@ FvbGetLbaAddress (
   OUT UINTN                               *LbaAddress,\r
   OUT UINTN                               *LbaLength,\r
   OUT UINTN                               *NumOfBlocks,\r
-  IN  ESAL_FWB_GLOBAL                     *Global,\r
-  IN  BOOLEAN                             Virtual\r
+  IN  ESAL_FWB_GLOBAL                     *Global\r
   );\r
 \r
 //\r
@@ -181,4 +176,17 @@ FvbProtocolEraseBlocks (
   ...\r
   );\r
 \r
+//\r
+// The following functions have different implementations dependent on the\r
+// module type chosen for building this driver.\r
+//\r
+VOID\r
+InstallProtocolInterfaces (\r
+  IN EFI_FW_VOL_BLOCK_DEVICE *FvbDevice\r
+  );\r
+\r
+VOID\r
+InstallVirtualAddressChangeHandler (\r
+  VOID\r
+  );\r
 #endif\r