SpiFlash.h 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. /** @file
  2. *
  3. * Copyright (c) 2023, Yuin Yee, Chew (John) <yuinyee.chew@starfivetech.com>.
  4. *
  5. * SPDX-License-Identifier: BSD-2-Clause-Patent
  6. *
  7. **/
  8. #ifndef __SPI_FLASH_PROTOCOL_H__
  9. #define __SPI_FLASH_PROTOCOL_H__
  10. #include <Protocol/FirmwareManagement.h>
  11. #include <Protocol/Spi.h>
  12. extern EFI_GUID gMarvellSpiFlashProtocolGuid;
  13. typedef struct _SPI_FLASH_PROTOCOL SPI_FLASH_PROTOCOL;
  14. typedef
  15. EFI_STATUS
  16. (EFIAPI *SPI_FLASH_INIT) (
  17. IN SPI_FLASH_PROTOCOL *This,
  18. IN SPI_DEVICE *SpiDev
  19. );
  20. typedef
  21. EFI_STATUS
  22. (EFIAPI *SPI_FLASH_READ_ID) (
  23. IN SPI_DEVICE *SpiDev,
  24. IN BOOLEAN UseInRuntime
  25. );
  26. typedef
  27. EFI_STATUS
  28. (EFIAPI *SPI_FLASH_READ) (
  29. IN SPI_DEVICE *SpiDev,
  30. IN UINT32 Address,
  31. IN UINTN DataByteCount,
  32. IN VOID *Buffer
  33. );
  34. typedef
  35. EFI_STATUS
  36. (EFIAPI *SPI_FLASH_WRITE) (
  37. IN SPI_DEVICE *SpiDev,
  38. IN UINT32 Address,
  39. IN UINTN DataByteCount,
  40. IN VOID *Buffer
  41. );
  42. typedef
  43. EFI_STATUS
  44. (EFIAPI *SPI_FLASH_ERASE) (
  45. IN SPI_DEVICE *SpiDev,
  46. IN UINTN Address,
  47. IN UINTN DataByteCount
  48. );
  49. struct _SPI_FLASH_PROTOCOL {
  50. SPI_FLASH_INIT Init;
  51. SPI_FLASH_READ_ID ReadId;
  52. SPI_FLASH_READ Read;
  53. SPI_FLASH_WRITE Write;
  54. SPI_FLASH_ERASE Erase;
  55. };
  56. #endif // __SPI_FLASH_PROTOCOL_H__