/**@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
- \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) 2006, Intel Corporation. All rights reserved.<BR>\r
\r
-Module Name:\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
- FwBlockService.h\r
- \r
-Abstract:\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
- Firmware volume block driver for Intel Firmware Hub (FWH) device\r
+ Module Name:\r
+\r
+ FwBlockService.h\r
+\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
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
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
...\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