mirror of https://github.com/acidanthera/audk.git
90 lines
3.9 KiB
Plaintext
90 lines
3.9 KiB
Plaintext
/** @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;
|
|
}
|