MvGpioLib.h 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. /**
  2. *
  3. * Copyright (C) 2018, Marvell International Ltd. and its affiliates.
  4. *
  5. * SPDX-License-Identifier: BSD-2-Clause-Patent
  6. *
  7. **/
  8. #ifndef __MV_GPIO_LIB_H__
  9. #define __MV_GPIO_LIB_H__
  10. #include <Protocol/EmbeddedGpio.h>
  11. typedef enum {
  12. MV_GPIO_DRIVER_TYPE_SOC_CONTROLLER,
  13. MV_GPIO_DRIVER_TYPE_PCA95XX,
  14. } MV_GPIO_DRIVER_TYPE;
  15. typedef enum {
  16. MV_GPIO_AP806_CONTROLLER0,
  17. MV_GPIO_CP0_CONTROLLER0,
  18. MV_GPIO_CP0_CONTROLLER1,
  19. MV_GPIO_CP1_CONTROLLER0,
  20. MV_GPIO_CP1_CONTROLLER1,
  21. MV_GPIO_CP2_CONTROLLER0,
  22. MV_GPIO_CP2_CONTROLLER1,
  23. } MV_GPIO_SOC_CONTROLLER_TYPE;
  24. typedef enum {
  25. PCA9505_ID,
  26. PCA9534_ID,
  27. PCA9535_ID,
  28. PCA9536_ID,
  29. PCA9537_ID,
  30. PCA9538_ID,
  31. PCA9539_ID,
  32. PCA9554_ID,
  33. PCA9555_ID,
  34. PCA9556_ID,
  35. PCA9557_ID,
  36. PCA95XX_MAX_ID,
  37. } MV_GPIO_EXPANDER_TYPE_PCA95XX;
  38. typedef struct {
  39. VENDOR_DEVICE_PATH Header;
  40. MV_GPIO_DRIVER_TYPE GpioDriverType;
  41. EFI_DEVICE_PATH_PROTOCOL End;
  42. } MV_GPIO_DEVICE_PATH;
  43. typedef struct {
  44. MV_GPIO_DRIVER_TYPE ControllerType;
  45. UINTN ControllerId;
  46. UINTN PinNumber;
  47. BOOLEAN ActiveHigh;
  48. } MV_GPIO_PIN;
  49. EFI_STATUS
  50. EFIAPI
  51. MvGpioGetProtocol (
  52. IN MV_GPIO_DRIVER_TYPE GpioDriverType,
  53. IN OUT EMBEDDED_GPIO **GpioProtocol
  54. );
  55. #endif // __MV_GPIO_LIB_H__