mtgpio_common.h 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. /*
  2. * Copyright (c) 2020-2022, MediaTek Inc. All rights reserved.
  3. *
  4. * SPDX-License-Identifier: BSD-3-Clause
  5. */
  6. #ifndef MT_GPIO_COMMON_H
  7. #define MT_GPIO_COMMON_H
  8. #include <stdbool.h>
  9. #include <stdint.h>
  10. #include <plat/common/common_def.h>
  11. /* Error Code No. */
  12. #define RSUCCESS 0
  13. #define ERACCESS 1
  14. #define ERINVAL 2
  15. #define ERWRAPPER 3
  16. #define MAX_GPIO_PIN MT_GPIO_BASE_MAX
  17. /* GPIO MODE CONTROL VALUE*/
  18. typedef enum {
  19. GPIO_MODE_UNSUPPORTED = -1,
  20. GPIO_MODE_GPIO = 0,
  21. GPIO_MODE_00 = 0,
  22. GPIO_MODE_01,
  23. GPIO_MODE_02,
  24. GPIO_MODE_03,
  25. GPIO_MODE_04,
  26. GPIO_MODE_05,
  27. GPIO_MODE_06,
  28. GPIO_MODE_07,
  29. GPIO_MODE_MAX,
  30. GPIO_MODE_DEFAULT = GPIO_MODE_00,
  31. } GPIO_MODE;
  32. /* GPIO DIRECTION */
  33. typedef enum {
  34. MT_GPIO_DIR_UNSUPPORTED = -1,
  35. MT_GPIO_DIR_OUT = 0,
  36. MT_GPIO_DIR_IN = 1,
  37. MT_GPIO_DIR_MAX,
  38. MT_GPIO_DIR_DEFAULT = MT_GPIO_DIR_IN,
  39. } GPIO_DIR;
  40. /* GPIO PULL ENABLE*/
  41. typedef enum {
  42. MT_GPIO_PULL_EN_UNSUPPORTED = -1,
  43. MT_GPIO_PULL_DISABLE = 0,
  44. MT_GPIO_PULL_ENABLE = 1,
  45. MT_GPIO_PULL_ENABLE_R0 = 2,
  46. MT_GPIO_PULL_ENABLE_R1 = 3,
  47. MT_GPIO_PULL_ENABLE_R0R1 = 4,
  48. MT_GPIO_PULL_EN_MAX,
  49. MT_GPIO_PULL_EN_DEFAULT = MT_GPIO_PULL_ENABLE,
  50. } GPIO_PULL_EN;
  51. /* GPIO PULL-UP/PULL-DOWN*/
  52. typedef enum {
  53. MT_GPIO_PULL_UNSUPPORTED = -1,
  54. MT_GPIO_PULL_NONE = 0,
  55. MT_GPIO_PULL_UP = 1,
  56. MT_GPIO_PULL_DOWN = 2,
  57. MT_GPIO_PULL_MAX,
  58. MT_GPIO_PULL_DEFAULT = MT_GPIO_PULL_DOWN
  59. } GPIO_PULL;
  60. /* GPIO OUTPUT */
  61. typedef enum {
  62. MT_GPIO_OUT_UNSUPPORTED = -1,
  63. MT_GPIO_OUT_ZERO = 0,
  64. MT_GPIO_OUT_ONE = 1,
  65. MT_GPIO_OUT_MAX,
  66. MT_GPIO_OUT_DEFAULT = MT_GPIO_OUT_ZERO,
  67. MT_GPIO_DATA_OUT_DEFAULT = MT_GPIO_OUT_ZERO, /*compatible with DCT*/
  68. } GPIO_OUT;
  69. /* GPIO INPUT */
  70. typedef enum {
  71. MT_GPIO_IN_UNSUPPORTED = -1,
  72. MT_GPIO_IN_ZERO = 0,
  73. MT_GPIO_IN_ONE = 1,
  74. MT_GPIO_IN_MAX,
  75. } GPIO_IN;
  76. #define PIN(_id, _flag, _bit, _base, _offset) { \
  77. .id = _id, \
  78. .flag = _flag, \
  79. .bit = _bit, \
  80. .base = _base, \
  81. .offset = _offset, \
  82. }
  83. struct mt_pin_info {
  84. uint8_t id;
  85. uint8_t flag;
  86. uint8_t bit;
  87. uint16_t base;
  88. uint16_t offset;
  89. };
  90. int mt_gpio_init(void);
  91. uintptr_t mt_gpio_find_reg_addr(uint32_t pin);
  92. #endif /* MT_GPIO_COMMON_H */