]>
Commit | Line | Data |
---|---|---|
b5505fe3 JY |
1 | /** @file\r |
2 | System Firmware descriptor.\r | |
3 | \r | |
4 | Copyright (c) 2016, Intel Corporation. All rights reserved.<BR>\r | |
5 | This program and the accompanying materials\r | |
6 | are licensed and made available under the terms and conditions of the BSD License\r | |
7 | which accompanies this distribution. The full text of the license may be found at\r | |
8 | http://opensource.org/licenses/bsd-license.php\r | |
9 | \r | |
10 | THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r | |
11 | WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r | |
12 | \r | |
13 | **/\r | |
14 | \r | |
15 | #include <PiPei.h>\r | |
16 | #include <Protocol/FirmwareManagement.h>\r | |
17 | #include <Guid/EdkiiSystemFmpCapsule.h>\r | |
18 | \r | |
19 | #define PACKAGE_VERSION 0xFFFFFFFF\r | |
20 | #define PACKAGE_VERSION_STRING L"Unknown"\r | |
21 | \r | |
22 | #define CURRENT_FIRMWARE_VERSION 0x00000002\r | |
23 | #define CURRENT_FIRMWARE_VERSION_STRING L"0x00000002"\r | |
24 | #define LOWEST_SUPPORTED_FIRMWARE_VERSION 0x00000001\r | |
25 | \r | |
26 | #define IMAGE_ID SIGNATURE_64('Q', 'U', 'A', 'R', 'K', '_', 'F', 'd')\r | |
27 | #define IMAGE_ID_STRING L"QuarkPlatformFd"\r | |
28 | \r | |
29 | // PcdSystemFmpCapsuleImageTypeIdGuid\r | |
30 | #define IMAGE_TYPE_ID_GUID { 0x62af20c0, 0x7016, 0x424a, { 0x9b, 0xf8, 0x9c, 0xcc, 0x86, 0x58, 0x40, 0x90 } }\r | |
31 | \r | |
32 | typedef struct {\r | |
33 | EDKII_SYSTEM_FIRMWARE_IMAGE_DESCRIPTOR Descriptor;\r | |
34 | // real string data\r | |
35 | CHAR16 ImageIdNameStr[sizeof(IMAGE_ID_STRING)/sizeof(CHAR16)];\r | |
36 | CHAR16 VersionNameStr[sizeof(CURRENT_FIRMWARE_VERSION_STRING)/sizeof(CHAR16)];\r | |
37 | CHAR16 PackageVersionNameStr[sizeof(PACKAGE_VERSION_STRING)/sizeof(CHAR16)];\r | |
38 | } IMAGE_DESCRIPTOR;\r | |
39 | \r | |
40 | IMAGE_DESCRIPTOR mImageDescriptor =\r | |
41 | {\r | |
42 | {\r | |
43 | EDKII_SYSTEM_FIRMWARE_IMAGE_DESCRIPTOR_SIGNATURE,\r | |
44 | sizeof(EDKII_SYSTEM_FIRMWARE_IMAGE_DESCRIPTOR),\r | |
45 | sizeof(IMAGE_DESCRIPTOR),\r | |
46 | PACKAGE_VERSION, // PackageVersion\r | |
47 | OFFSET_OF (IMAGE_DESCRIPTOR, PackageVersionNameStr), // PackageVersionName\r | |
48 | 1, // ImageIndex;\r | |
49 | {0x0}, // Reserved\r | |
50 | IMAGE_TYPE_ID_GUID, // ImageTypeId;\r | |
51 | IMAGE_ID, // ImageId;\r | |
52 | OFFSET_OF (IMAGE_DESCRIPTOR, ImageIdNameStr), // ImageIdName;\r | |
53 | CURRENT_FIRMWARE_VERSION, // Version;\r | |
54 | OFFSET_OF (IMAGE_DESCRIPTOR, VersionNameStr), // VersionName;\r | |
55 | {0x0}, // Reserved2\r | |
56 | FixedPcdGet32(PcdFlashAreaSize), // Size;\r | |
57 | IMAGE_ATTRIBUTE_IMAGE_UPDATABLE |\r | |
58 | IMAGE_ATTRIBUTE_RESET_REQUIRED |\r | |
59 | IMAGE_ATTRIBUTE_AUTHENTICATION_REQUIRED |\r | |
60 | IMAGE_ATTRIBUTE_IN_USE, // AttributesSupported;\r | |
61 | IMAGE_ATTRIBUTE_IMAGE_UPDATABLE |\r | |
62 | IMAGE_ATTRIBUTE_RESET_REQUIRED |\r | |
63 | IMAGE_ATTRIBUTE_AUTHENTICATION_REQUIRED |\r | |
64 | IMAGE_ATTRIBUTE_IN_USE, // AttributesSetting;\r | |
65 | 0x0, // Compatibilities;\r | |
66 | LOWEST_SUPPORTED_FIRMWARE_VERSION, // LowestSupportedImageVersion;\r | |
67 | 0x00000000, // LastAttemptVersion;\r | |
68 | 0, // LastAttemptStatus;\r | |
69 | {0x0}, // Reserved3\r | |
70 | 0, // HardwareInstance;\r | |
71 | },\r | |
72 | // real string data\r | |
73 | {IMAGE_ID_STRING},\r | |
74 | {CURRENT_FIRMWARE_VERSION_STRING},\r | |
75 | {PACKAGE_VERSION_STRING},\r | |
76 | };\r | |
77 | \r | |
78 | \r | |
79 | VOID*\r | |
80 | ReferenceAcpiTable (\r | |
81 | VOID\r | |
82 | )\r | |
83 | {\r | |
84 | //\r | |
85 | // Reference the table being generated to prevent the optimizer from\r | |
86 | // removing the data structure from the executable\r | |
87 | //\r | |
88 | return (VOID*)&mImageDescriptor;\r | |
89 | }\r |