/** @file | |
System Firmware descriptor. | |
Copyright (c) 2016, Intel Corporation. All rights reserved.<BR> | |
This program and the accompanying materials | |
are licensed and made available under the terms and conditions of the BSD License | |
which accompanies this distribution. The full text of the license may be found at | |
http://opensource.org/licenses/bsd-license.php | |
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, | |
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. | |
**/ | |
#include <PiPei.h> | |
#include <Protocol/FirmwareManagement.h> | |
#include <Guid/EdkiiSystemFmpCapsule.h> | |
#define PACKAGE_VERSION 0xFFFFFFFF | |
#define PACKAGE_VERSION_STRING L"Unknown" | |
#define CURRENT_FIRMWARE_VERSION 0x00000002 | |
#define CURRENT_FIRMWARE_VERSION_STRING L"0x00000002" | |
#define LOWEST_SUPPORTED_FIRMWARE_VERSION 0x00000001 | |
#define IMAGE_ID SIGNATURE_64('Q', 'U', 'A', 'R', 'K', '_', 'F', 'd') | |
#define IMAGE_ID_STRING L"QuarkPlatformFd" | |
// PcdSystemFmpCapsuleImageTypeIdGuid | |
#define IMAGE_TYPE_ID_GUID { 0x62af20c0, 0x7016, 0x424a, { 0x9b, 0xf8, 0x9c, 0xcc, 0x86, 0x58, 0x40, 0x90 } } | |
typedef struct { | |
EDKII_SYSTEM_FIRMWARE_IMAGE_DESCRIPTOR Descriptor; | |
// real string data | |
CHAR16 ImageIdNameStr[sizeof(IMAGE_ID_STRING)/sizeof(CHAR16)]; | |
CHAR16 VersionNameStr[sizeof(CURRENT_FIRMWARE_VERSION_STRING)/sizeof(CHAR16)]; | |
CHAR16 PackageVersionNameStr[sizeof(PACKAGE_VERSION_STRING)/sizeof(CHAR16)]; | |
} IMAGE_DESCRIPTOR; | |
IMAGE_DESCRIPTOR mImageDescriptor = | |
{ | |
{ | |
EDKII_SYSTEM_FIRMWARE_IMAGE_DESCRIPTOR_SIGNATURE, | |
sizeof(EDKII_SYSTEM_FIRMWARE_IMAGE_DESCRIPTOR), | |
sizeof(IMAGE_DESCRIPTOR), | |
PACKAGE_VERSION, // PackageVersion | |
OFFSET_OF (IMAGE_DESCRIPTOR, PackageVersionNameStr), // PackageVersionName | |
1, // ImageIndex; | |
{0x0}, // Reserved | |
IMAGE_TYPE_ID_GUID, // ImageTypeId; | |
IMAGE_ID, // ImageId; | |
OFFSET_OF (IMAGE_DESCRIPTOR, ImageIdNameStr), // ImageIdName; | |
CURRENT_FIRMWARE_VERSION, // Version; | |
OFFSET_OF (IMAGE_DESCRIPTOR, VersionNameStr), // VersionName; | |
{0x0}, // Reserved2 | |
FixedPcdGet32(PcdFlashAreaSize), // Size; | |
IMAGE_ATTRIBUTE_IMAGE_UPDATABLE | | |
IMAGE_ATTRIBUTE_RESET_REQUIRED | | |
IMAGE_ATTRIBUTE_AUTHENTICATION_REQUIRED | | |
IMAGE_ATTRIBUTE_IN_USE, // AttributesSupported; | |
IMAGE_ATTRIBUTE_IMAGE_UPDATABLE | | |
IMAGE_ATTRIBUTE_RESET_REQUIRED | | |
IMAGE_ATTRIBUTE_AUTHENTICATION_REQUIRED | | |
IMAGE_ATTRIBUTE_IN_USE, // AttributesSetting; | |
0x0, // Compatibilities; | |
LOWEST_SUPPORTED_FIRMWARE_VERSION, // LowestSupportedImageVersion; | |
0x00000000, // LastAttemptVersion; | |
0, // LastAttemptStatus; | |
{0x0}, // Reserved3 | |
0, // HardwareInstance; | |
}, | |
// real string data | |
{IMAGE_ID_STRING}, | |
{CURRENT_FIRMWARE_VERSION_STRING}, | |
{PACKAGE_VERSION_STRING}, | |
}; | |
VOID* | |
ReferenceAcpiTable ( | |
VOID | |
) | |
{ | |
// | |
// Reference the table being generated to prevent the optimizer from | |
// removing the data structure from the executable | |
// | |
return (VOID*)&mImageDescriptor; | |
} |