SystemFirmwareDescriptor.aslc 3.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. /** @file
  2. System Firmware descriptor.
  3. Copyright (c) 2016, Intel Corporation. All rights reserved.<BR>
  4. SPDX-License-Identifier: BSD-2-Clause-Patent
  5. **/
  6. #include <PiPei.h>
  7. #include <Protocol/FirmwareManagement.h>
  8. #include <Guid/EdkiiSystemFmpCapsule.h>
  9. #define PACKAGE_VERSION 0xFFFFFFFF
  10. #define PACKAGE_VERSION_STRING L"Unknown"
  11. #define CURRENT_FIRMWARE_VERSION 0x00000002
  12. #define CURRENT_FIRMWARE_VERSION_STRING L"0x00000002"
  13. #define LOWEST_SUPPORTED_FIRMWARE_VERSION 0x00000001
  14. #define IMAGE_ID SIGNATURE_64('V', 'L', 'V', '2', '_', '_', 'F', 'd')
  15. #define IMAGE_ID_STRING L"Vlv2Fd"
  16. // PcdSystemFmpCapsuleImageTypeIdGuid
  17. #define IMAGE_TYPE_ID_GUID { 0x4096267b, 0xda0a, 0x42eb, { 0xb5, 0xeb, 0xfe, 0xf3, 0x1d, 0x20, 0x7c, 0xb4 } }
  18. typedef struct {
  19. EDKII_SYSTEM_FIRMWARE_IMAGE_DESCRIPTOR Descriptor;
  20. // real string data
  21. CHAR16 ImageIdNameStr[sizeof(IMAGE_ID_STRING)/sizeof(CHAR16)];
  22. CHAR16 VersionNameStr[sizeof(CURRENT_FIRMWARE_VERSION_STRING)/sizeof(CHAR16)];
  23. CHAR16 PackageVersionNameStr[sizeof(PACKAGE_VERSION_STRING)/sizeof(CHAR16)];
  24. } IMAGE_DESCRIPTOR;
  25. IMAGE_DESCRIPTOR mImageDescriptor =
  26. {
  27. {
  28. EDKII_SYSTEM_FIRMWARE_IMAGE_DESCRIPTOR_SIGNATURE,
  29. sizeof(EDKII_SYSTEM_FIRMWARE_IMAGE_DESCRIPTOR),
  30. sizeof(IMAGE_DESCRIPTOR),
  31. PACKAGE_VERSION, // PackageVersion
  32. OFFSET_OF (IMAGE_DESCRIPTOR, PackageVersionNameStr), // PackageVersionName
  33. 1, // ImageIndex;
  34. {0x0}, // Reserved
  35. IMAGE_TYPE_ID_GUID, // ImageTypeId;
  36. IMAGE_ID, // ImageId;
  37. OFFSET_OF (IMAGE_DESCRIPTOR, ImageIdNameStr), // ImageIdName;
  38. CURRENT_FIRMWARE_VERSION, // Version;
  39. OFFSET_OF (IMAGE_DESCRIPTOR, VersionNameStr), // VersionName;
  40. {0x0}, // Reserved2
  41. FixedPcdGet32(PcdFlashAreaSize), // Size;
  42. IMAGE_ATTRIBUTE_IMAGE_UPDATABLE |
  43. IMAGE_ATTRIBUTE_RESET_REQUIRED |
  44. IMAGE_ATTRIBUTE_AUTHENTICATION_REQUIRED |
  45. IMAGE_ATTRIBUTE_IN_USE, // AttributesSupported;
  46. IMAGE_ATTRIBUTE_IMAGE_UPDATABLE |
  47. IMAGE_ATTRIBUTE_RESET_REQUIRED |
  48. IMAGE_ATTRIBUTE_AUTHENTICATION_REQUIRED |
  49. IMAGE_ATTRIBUTE_IN_USE, // AttributesSetting;
  50. 0x0, // Compatibilities;
  51. LOWEST_SUPPORTED_FIRMWARE_VERSION, // LowestSupportedImageVersion;
  52. 0x00000000, // LastAttemptVersion;
  53. 0, // LastAttemptStatus;
  54. {0x0}, // Reserved3
  55. 0, // HardwareInstance;
  56. },
  57. // real string data
  58. {IMAGE_ID_STRING},
  59. {CURRENT_FIRMWARE_VERSION_STRING},
  60. {PACKAGE_VERSION_STRING},
  61. };
  62. VOID*
  63. ReferenceAcpiTable (
  64. VOID
  65. )
  66. {
  67. //
  68. // Reference the table being generated to prevent the optimizer from
  69. // removing the data structure from the executable
  70. //
  71. return (VOID*)&mImageDescriptor;
  72. }