SystemFirmwareDescriptorTable.aslc 3.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. /** @file
  2. System Firmware descriptor.
  3. Copyright (c) 2016, Intel Corporation. All rights reserved.<BR>
  4. Copyright (c) 2017, Linaro, Ltd. All rights reserved.<BR>
  5. SPDX-License-Identifier: BSD-2-Clause-Patent
  6. **/
  7. #include <PiPei.h>
  8. #include <Guid/EdkiiSystemFmpCapsule.h>
  9. #include <Protocol/FirmwareManagement.h>
  10. #define PACKAGE_VERSION 0xFFFFFFFF
  11. #define PACKAGE_VERSION_STRING L"Unknown"
  12. #define __BUILD_STRING(x) L ## #x
  13. #define BUILD_STRING(x) L"build #" __BUILD_STRING(x)
  14. #define CURRENT_FIRMWARE_VERSION FixedPcdGet32 (PcdFirmwareRevision)
  15. #define CURRENT_FIRMWARE_VERSION_STRING BUILD_STRING (FixedPcdGet32 (PcdFirmwareRevision))
  16. #define LOWEST_SUPPORTED_FIRMWARE_VERSION 0x00000001
  17. #define IMAGE_ID SIGNATURE_64('S', 'N', 'I', 'S', 'Y', 'N', 'Q', 'U')
  18. #define IMAGE_ID_STRING L"Socionext SynQuacer EVB"
  19. // PcdSystemFmpCapsuleImageTypeIdGuid
  20. #define IMAGE_TYPE_ID_GUID { 0x50b94ce5, 0x8b63, 0x4849, { 0x8a, 0xf4, 0xea, 0x47, 0x93, 0x56, 0xf0, 0xe3 } }
  21. typedef struct {
  22. EDKII_SYSTEM_FIRMWARE_IMAGE_DESCRIPTOR Descriptor;
  23. // real string data
  24. CHAR16 ImageIdNameStr[sizeof(IMAGE_ID_STRING)/sizeof(CHAR16)];
  25. CHAR16 VersionNameStr[sizeof(CURRENT_FIRMWARE_VERSION_STRING)/sizeof(CHAR16)];
  26. CHAR16 PackageVersionNameStr[sizeof(PACKAGE_VERSION_STRING)/sizeof(CHAR16)];
  27. } IMAGE_DESCRIPTOR;
  28. STATIC IMAGE_DESCRIPTOR mImageDescriptor =
  29. {
  30. {
  31. EDKII_SYSTEM_FIRMWARE_IMAGE_DESCRIPTOR_SIGNATURE,
  32. sizeof(EDKII_SYSTEM_FIRMWARE_IMAGE_DESCRIPTOR),
  33. sizeof(IMAGE_DESCRIPTOR),
  34. PACKAGE_VERSION, // PackageVersion
  35. OFFSET_OF (IMAGE_DESCRIPTOR, PackageVersionNameStr), // PackageVersionName
  36. 1, // ImageIndex;
  37. {0x0}, // Reserved
  38. IMAGE_TYPE_ID_GUID, // ImageTypeId;
  39. IMAGE_ID, // ImageId;
  40. OFFSET_OF (IMAGE_DESCRIPTOR, ImageIdNameStr), // ImageIdName;
  41. CURRENT_FIRMWARE_VERSION, // Version;
  42. OFFSET_OF (IMAGE_DESCRIPTOR, VersionNameStr), // VersionName;
  43. {0x0}, // Reserved2
  44. FixedPcdGet32(PcdFdSize), // Size;
  45. IMAGE_ATTRIBUTE_IMAGE_UPDATABLE |
  46. IMAGE_ATTRIBUTE_RESET_REQUIRED |
  47. IMAGE_ATTRIBUTE_AUTHENTICATION_REQUIRED |
  48. IMAGE_ATTRIBUTE_IN_USE, // AttributesSupported;
  49. IMAGE_ATTRIBUTE_IMAGE_UPDATABLE |
  50. IMAGE_ATTRIBUTE_RESET_REQUIRED |
  51. IMAGE_ATTRIBUTE_AUTHENTICATION_REQUIRED |
  52. IMAGE_ATTRIBUTE_IN_USE, // AttributesSetting;
  53. 0x0, // Compatibilities;
  54. LOWEST_SUPPORTED_FIRMWARE_VERSION, // LowestSupportedImageVersion;
  55. 0x00000000, // LastAttemptVersion;
  56. 0, // LastAttemptStatus;
  57. {0x0}, // Reserved3
  58. 0, // HardwareInstance;
  59. },
  60. // real string data
  61. {IMAGE_ID_STRING},
  62. {CURRENT_FIRMWARE_VERSION_STRING},
  63. {PACKAGE_VERSION_STRING},
  64. };
  65. VOID* CONST ReferenceAcpiTable = &mImageDescriptor;