FvbSmmCommon.h 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. /** @file
  2. The common header file for SMM FVB module and SMM FVB runtime Module.
  3. Copyright (c) 2010 - 2014, Intel Corporation. All rights reserved. <BR>
  4. SPDX-License-Identifier: BSD-2-Clause-Patent
  5. **/
  6. #ifndef _SMM_FVB_COMMON_H_
  7. #define _SMM_FVB_COMMON_H_
  8. #include <Protocol/SmmFirmwareVolumeBlock.h>
  9. #define EFI_FUNCTION_GET_ATTRIBUTES 1
  10. #define EFI_FUNCTION_SET_ATTRIBUTES 2
  11. #define EFI_FUNCTION_GET_PHYSICAL_ADDRESS 3
  12. #define EFI_FUNCTION_GET_BLOCK_SIZE 4
  13. #define EFI_FUNCTION_READ 5
  14. #define EFI_FUNCTION_WRITE 6
  15. #define EFI_FUNCTION_ERASE_BLOCKS 7
  16. typedef struct {
  17. UINTN Function;
  18. EFI_STATUS ReturnStatus;
  19. UINT8 Data[1];
  20. } SMM_FVB_COMMUNICATE_FUNCTION_HEADER;
  21. ///
  22. /// Size of SMM communicate header, without including the payload.
  23. ///
  24. #define SMM_COMMUNICATE_HEADER_SIZE (OFFSET_OF (EFI_SMM_COMMUNICATE_HEADER, Data))
  25. ///
  26. /// Size of SMM FVB communicate function header, without including the payload.
  27. ///
  28. #define SMM_FVB_COMMUNICATE_HEADER_SIZE (OFFSET_OF (SMM_FVB_COMMUNICATE_FUNCTION_HEADER, Data))
  29. typedef struct {
  30. EFI_SMM_FIRMWARE_VOLUME_BLOCK_PROTOCOL *SmmFvb;
  31. EFI_FVB_ATTRIBUTES_2 Attributes;
  32. } SMM_FVB_ATTRIBUTES_HEADER;
  33. typedef struct {
  34. EFI_SMM_FIRMWARE_VOLUME_BLOCK_PROTOCOL *SmmFvb;
  35. EFI_PHYSICAL_ADDRESS Address;
  36. } SMM_FVB_PHYSICAL_ADDRESS_HEADER;
  37. typedef struct {
  38. EFI_SMM_FIRMWARE_VOLUME_BLOCK_PROTOCOL *SmmFvb;
  39. EFI_LBA Lba;
  40. UINTN BlockSize;
  41. UINTN NumOfBlocks;
  42. } SMM_FVB_BLOCK_SIZE_HEADER;
  43. typedef struct {
  44. EFI_SMM_FIRMWARE_VOLUME_BLOCK_PROTOCOL *SmmFvb;
  45. EFI_LBA Lba;
  46. UINTN Offset;
  47. UINTN NumBytes;
  48. } SMM_FVB_READ_WRITE_HEADER;
  49. typedef struct {
  50. EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *SmmFvb;
  51. EFI_LBA StartLba;
  52. UINTN NumOfLba;
  53. } SMM_FVB_BLOCKS_HEADER;
  54. #endif