SystemFirmwareDescriptor.aslc 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. /** @file
  2. System Firmware descriptor.
  3. Copyright (c) 2018, Hisilicon Limited. All rights reserved.
  4. Copyright (c) 2018, Linaro Limited. All rights reserved.
  5. Copyright (c) 2016, Intel Corporation. All rights reserved.<BR>
  6. SPDX-License-Identifier: BSD-2-Clause-Patent
  7. **/
  8. #include <PiPei.h>
  9. #include <Guid/EdkiiSystemFmpCapsule.h>
  10. #include <Protocol/FirmwareManagement.h>
  11. #define PACKAGE_VERSION 0xFFFFFFFF
  12. #define PACKAGE_VERSION_STRING L"Unknown"
  13. #define CURRENT_FIRMWARE_VERSION 0x00000002
  14. #define CURRENT_FIRMWARE_VERSION_STRING L"0x00000002"
  15. #define LOWEST_SUPPORTED_FIRMWARE_VERSION 0x00000001
  16. #define IMAGE_ID SIGNATURE_64('H','W','A', 'R', 'M', '_', 'F', 'd')
  17. #define IMAGE_ID_STRING L"ARMPlatformFd"
  18. // PcdSystemFmpCapsuleImageTypeIdGuid
  19. #define IMAGE_TYPE_ID_GUID { 0x7978365d, 0x7978, 0x45fd, { 0xad, 0x77, 0xb2, 0x76, 0x93, 0xcf, 0xe8, 0x5b } }
  20. typedef struct {
  21. EDKII_SYSTEM_FIRMWARE_IMAGE_DESCRIPTOR Descriptor;
  22. // real string data
  23. CHAR16 ImageIdNameStr[ARRAY_SIZE (IMAGE_ID_STRING)];
  24. CHAR16 VersionNameStr[ARRAY_SIZE (CURRENT_FIRMWARE_VERSION_STRING)];
  25. CHAR16 PackageVersionNameStr[ARRAY_SIZE (PACKAGE_VERSION_STRING)];
  26. } IMAGE_DESCRIPTOR;
  27. IMAGE_DESCRIPTOR mImageDescriptor =
  28. {
  29. {
  30. EDKII_SYSTEM_FIRMWARE_IMAGE_DESCRIPTOR_SIGNATURE,
  31. sizeof (EDKII_SYSTEM_FIRMWARE_IMAGE_DESCRIPTOR),
  32. sizeof (IMAGE_DESCRIPTOR),
  33. PACKAGE_VERSION, // PackageVersion
  34. OFFSET_OF (IMAGE_DESCRIPTOR, PackageVersionNameStr), // PackageVersionName
  35. 1, // ImageIndex;
  36. {0x0}, // Reserved
  37. IMAGE_TYPE_ID_GUID, // ImageTypeId;
  38. IMAGE_ID, // ImageId;
  39. OFFSET_OF (IMAGE_DESCRIPTOR, ImageIdNameStr), // ImageIdName;
  40. CURRENT_FIRMWARE_VERSION, // Version;
  41. OFFSET_OF (IMAGE_DESCRIPTOR, VersionNameStr), // VersionName;
  42. {0x0}, // Reserved2
  43. FixedPcdGet32 (PcdFdSize), // Size;
  44. IMAGE_ATTRIBUTE_IMAGE_UPDATABLE |
  45. IMAGE_ATTRIBUTE_RESET_REQUIRED |
  46. IMAGE_ATTRIBUTE_AUTHENTICATION_REQUIRED |
  47. IMAGE_ATTRIBUTE_IN_USE, // AttributesSupported;
  48. IMAGE_ATTRIBUTE_IMAGE_UPDATABLE |
  49. IMAGE_ATTRIBUTE_RESET_REQUIRED |
  50. IMAGE_ATTRIBUTE_AUTHENTICATION_REQUIRED |
  51. IMAGE_ATTRIBUTE_IN_USE, // AttributesSetting;
  52. 0x0, // Compatibilities;
  53. LOWEST_SUPPORTED_FIRMWARE_VERSION, // LowestSupportedImageVersion;
  54. 0x00000000, // LastAttemptVersion;
  55. 0, // LastAttemptStatus;
  56. {0x0}, // Reserved3
  57. 0, // HardwareInstance;
  58. },
  59. // real string data
  60. {IMAGE_ID_STRING},
  61. {CURRENT_FIRMWARE_VERSION_STRING},
  62. {PACKAGE_VERSION_STRING},
  63. };
  64. VOID* CONST ReferenceAcpiTable = &mImageDescriptor;