123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144 |
- /** @file
- Guid & data structure used for Delivering Capsules Containing Updates to
- EDKII System Firmware Management Protocol
- Copyright (c) 2016, Intel Corporation. All rights reserved.<BR>
- SPDX-License-Identifier: BSD-2-Clause-Patent
- **/
- #ifndef __EDKII_SYSTEM_FMP_CAPSULE_GUID_H__
- #define __EDKII_SYSTEM_FMP_CAPSULE_GUID_H__
- /**
- 1. Capsule Layout is below:
- +------------------------------------------+
- | Capsule Header (OPTIONAL, WFU) | <== ESRT.FwClass (Optional)
- +------------------------------------------+
- | FMP Capsule Header | <== EFI_FIRMWARE_MANAGEMENT_CAPSULE_ID_GUID
- +------------------------------------------+
- | FIRMWARE_MANAGEMENT_CAPSULE_IMAGE_HEADER | <== PcdSystemFmpCapsuleImageTypeIdGuid
- +------------------------------------------+
- | EFI_FIRMWARE_IMAGE_AUTHENTICATION |
- +------------------------------------------+
- | FMP Payload |
- +------------------------------------------+
- 2. System FMP Payload is below:
- +------------------------------------------+
- | EFI_FIRMWARE_VOLUME |
- | +------------------------------------+ |
- | | FFS (Configure File) | | <== gEdkiiSystemFmpCapsuleConfigFileGuid
- | +------------------------------------+ |
- | | FFS (Driver FV) | | <== gEdkiiSystemFmpCapsuleDriverFvFileGuid
- | +------------------------------------+ |
- | | FFS (System Firmware Image) | | <== PcdEdkiiSystemFirmwareFileGuid
- | | +------------------------------+ | |
- | | | FV Recovery | | |
- | | |------------------------------| | |
- | | | FV Main | | |
- | | +------------------------------+ | |
- | +------------------------------------+ |
- +------------------------------------------+
- NOTE: There might be multiple FFS (System Firmware Image) exist in the System FMP Capsule.
- Only the one, whose FFS GUID matches PcdEdkiiSystemFirmwareFileGuid, takes effect.
- The other FFS is ignored.
- 3. The format of the recovery configuration is below:
- [Head]
- NumOfRecovery = <Num> # Decimal
- Recovery0 = <Name1> # String
- Recovery1 = <Name2> # String
- Recovery<Num-1> = <NameX> # String
- [Name?]
- Length = <Length> # Fv Length (HEX)
- ImageOffset = <ImageOffset> # Fv offset of this SystemFirmware image (HEX)
- FileGuid = XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX # PcdEdkiiSystemFirmwareFileGuid
- NOTE: The [Name?] entry may have different FileGuid.
- Only the one, whose FileGuid matches PcdEdkiiSystemFirmwareFileGuid, takes effect.
- The other entry is ignored.
- 4. The format of the capsule update configuration is below:
- [Head]
- NumOfUpdate = <Num> # Decimal
- Update0 = <Name1> # String
- Update1 = <Name2> # String
- Update<Num-1> = <NameX> # String
- [Name?]
- FirmwareType = 0 # 0 - SystemFirmware, 1 - NvRam
- AddressType = 0 # 0 - relative address, 1 - absolute address.
- BaseAddress = <BaseAddress> # Base address offset on flash (HEX)
- Length = <Length> # Image Length (HEX)
- ImageOffset = <ImageOffset> # Image offset of this SystemFirmware image (HEX)
- FileGuid = XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX # PcdEdkiiSystemFirmwareFileGuid
- NOTE: The [Name?] entry may have different FileGuid.
- Only the one, whose FileGuid matches PcdEdkiiSystemFirmwareFileGuid, takes effect.
- The other entry is ignored.
- **/
- #define EDKII_SYSTEM_FIRMWARE_IMAGE_DESCRIPTOR_SIGNATURE SIGNATURE_32('S', 'F', 'I', 'D')
- #pragma pack(1)
- typedef struct {
- UINT32 Signature;
- UINT32 HeaderLength; // Length of EDKII_SYSTEM_FIRMWARE_IMAGE_DESCRIPTOR, excluding NameString
- UINT32 Length; // Length of the data structure, including NameString
- // Below structure is similar as UEFI EFI_FIRMWARE_MANAGEMENT_PROTOCOL.GetPackageInfo()
- UINT32 PackageVersion;
- UINT32 PackageVersionNameStringOffset; // Offset from head, CHAR16 string including NULL terminate char
- // Below structure is similar as UEFI EFI_FIRMWARE_IMAGE_DESCRIPTOR
- UINT8 ImageIndex;
- UINT8 Reserved[3];
- EFI_GUID ImageTypeId;
- UINT64 ImageId;
- UINT32 ImageIdNameStringOffset; // Offset from head, CHAR16 string including NULL terminate char
- UINT32 Version;
- UINT32 VersionNameStringOffset; // Offset from head, CHAR16 string including NULL terminate char
- UINT8 Reserved2[4];
- UINT64 Size;
- UINT64 AttributesSupported;
- UINT64 AttributesSetting;
- UINT64 Compatibilities;
- UINT32 LowestSupportedImageVersion;
- UINT32 LastAttemptVersion;
- UINT32 LastAttemptStatus;
- UINT8 Reserved3[4];
- UINT64 HardwareInstance;
- // real string data
- // CHAR16 ImageIdNameStr[]; // CHAR16 string including NULL terminate char
- // CHAR16 VersionNameStr[]; // CHAR16 string including NULL terminate char
- // CHAR16 PackageVersionNameStr[]; // CHAR16 string including NULL terminate char
- } EDKII_SYSTEM_FIRMWARE_IMAGE_DESCRIPTOR;
- #pragma pack()
- /**
- System Firmware Image Descriptor is below:
- +----------------------+
- | System Firmware (FV) |
- |+--------------------+|
- || FFS (Freeform) || <== gEdkiiSystemFirmwareImageDescriptorFileGuid
- ||+------------------+||
- ||| SECTION (RAW) |||
- ||| System Firmware |||
- ||| Image Descriptor |||
- ||+------------------+||
- |+--------------------+|
- | |
- | |
- +----------------------+
- **/
- extern EFI_GUID gEdkiiSystemFirmwareImageDescriptorFileGuid;
- extern EFI_GUID gEdkiiSystemFmpCapsuleConfigFileGuid;
- extern EFI_GUID gEdkiiSystemFmpCapsuleDriverFvFileGuid;
- #endif
|