hc
2024-03-22 a0752693d998599af469473b8dc239ef973a012f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
/** @file
  System Firmware descriptor.
 
  Copyright (c) 2016, Intel Corporation. All rights reserved.<BR>
  Copyright (c) 2017, Linaro, Ltd. All rights reserved.<BR>
 
  SPDX-License-Identifier: BSD-2-Clause-Patent
 
**/
 
#include <PiPei.h>
#include <Guid/EdkiiSystemFmpCapsule.h>
#include <Protocol/FirmwareManagement.h>
 
#define PACKAGE_VERSION                     0xFFFFFFFF
#define PACKAGE_VERSION_STRING              L"Unknown"
 
#define __BUILD_STRING(x)                   L ## #x
#define BUILD_STRING(x)                     L"build #" __BUILD_STRING(x)
#define CURRENT_FIRMWARE_VERSION            FixedPcdGet32 (PcdFirmwareRevision)
#define CURRENT_FIRMWARE_VERSION_STRING     BUILD_STRING (FixedPcdGet32 (PcdFirmwareRevision))
#define LOWEST_SUPPORTED_FIRMWARE_VERSION   0x00000001
 
#define IMAGE_ID                            SIGNATURE_64('S', 'N', 'I', 'S', 'Y', 'N', 'Q', 'U')
#define IMAGE_ID_STRING                     L"Socionext SynQuacer EVB"
 
// PcdSystemFmpCapsuleImageTypeIdGuid
#define IMAGE_TYPE_ID_GUID                  { 0x50b94ce5, 0x8b63, 0x4849, { 0x8a, 0xf4, 0xea, 0x47, 0x93, 0x56, 0xf0, 0xe3 } }
 
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;
 
STATIC 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(PcdFdSize),                              // 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* CONST ReferenceAcpiTable = &mImageDescriptor;