NOR_FLASH_SIGNATURE, // Signature\r
NULL, // Handle ... NEED TO BE FILLED\r
\r
- FALSE, // Initialized\r
- NULL, // Initialize\r
-\r
0, // DeviceBaseAddress ... NEED TO BE FILLED\r
0, // RegionBaseAddress ... NEED TO BE FILLED\r
0, // Size ... NEED TO BE FILLED\r
NorFlashDiskIoWriteDisk // WriteDisk\r
},\r
\r
- FALSE, // SupportFvb ... NEED TO BE FILLED\r
{\r
FvbGetAttributes, // GetAttributes\r
FvbSetAttributes, // SetAttributes\r
}\r
\r
if (SupportFvb) {\r
- Instance->SupportFvb = TRUE;\r
- Instance->Initialize = NorFlashFvbInitialize;\r
+ NorFlashFvbInitialize (Instance);\r
\r
Status = gBS->InstallMultipleProtocolInterfaces (\r
&Instance->Handle,\r
return Status;\r
}\r
} else {\r
- Instance->Initialized = TRUE;\r
-\r
Status = gBS->InstallMultipleProtocolInterfaces (\r
&Instance->Handle,\r
&gEfiDevicePathProtocolGuid, &Instance->DevicePath,\r
\r
PrevBlockAddress = 0;\r
\r
- if (!Instance->Initialized && Instance->Initialize) {\r
- Instance->Initialize(Instance);\r
- }\r
-\r
DEBUG ((DEBUG_BLKIO, "NorFlashWriteSingleBlock(Parameters: Lba=%ld, Offset=0x%x, *NumBytes=0x%x, Buffer @ 0x%08x)\n", Lba, Offset, *NumBytes, Buffer));\r
\r
// Detect WriteDisabled state\r
\r
typedef struct _NOR_FLASH_INSTANCE NOR_FLASH_INSTANCE;\r
\r
-typedef EFI_STATUS (*NOR_FLASH_INITIALIZE) (NOR_FLASH_INSTANCE* Instance);\r
-\r
typedef struct {\r
VENDOR_DEVICE_PATH Vendor;\r
EFI_DEVICE_PATH_PROTOCOL End;\r
UINT32 Signature;\r
EFI_HANDLE Handle;\r
\r
- BOOLEAN Initialized;\r
- NOR_FLASH_INITIALIZE Initialize;\r
-\r
UINTN DeviceBaseAddress;\r
UINTN RegionBaseAddress;\r
UINTN Size;\r
EFI_BLOCK_IO_MEDIA Media;\r
EFI_DISK_IO_PROTOCOL DiskIoProtocol;\r
\r
- BOOLEAN SupportFvb;\r
EFI_FIRMWARE_VOLUME_BLOCK2_PROTOCOL FvbProtocol;\r
VOID* ShadowBuffer;\r
\r
EFI_FIRMWARE_VOLUME_HEADER *FirmwareVolumeHeader;\r
VARIABLE_STORE_HEADER *VariableStoreHeader;\r
\r
- if (!Instance->Initialized && Instance->Initialize) {\r
- Instance->Initialize (Instance);\r
- }\r
-\r
HeadersLength = sizeof(EFI_FIRMWARE_VOLUME_HEADER) + sizeof(EFI_FV_BLOCK_MAP_ENTRY) + sizeof(VARIABLE_STORE_HEADER);\r
Headers = AllocateZeroPool(HeadersLength);\r
\r
\r
DEBUG ((DEBUG_BLKIO, "FvbRead(Parameters: Lba=%ld, Offset=0x%x, *NumBytes=0x%x, Buffer @ 0x%08x)\n", Instance->StartLba + Lba, Offset, *NumBytes, Buffer));\r
\r
- if (!Instance->Initialized && Instance->Initialize) {\r
- Instance->Initialize(Instance);\r
- }\r
-\r
TempStatus = EFI_SUCCESS;\r
\r
// Cache the block size to avoid de-referencing pointers all the time\r
EFI_MEMORY_UC | EFI_MEMORY_RUNTIME);\r
ASSERT_EFI_ERROR (Status);\r
\r
- Instance->Initialized = TRUE;\r
mFlashNvStorageVariableBase = FixedPcdGet32 (PcdFlashNvStorageVariableBase);\r
\r
// Set the index of the first LBA for the FVB\r