wm_io.h 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204
  1. /**
  2. * @file wm_io.h
  3. *
  4. * @brief IO Driver Module
  5. *
  6. * @author lilm
  7. *
  8. * @copyright (c) 2015 Winner Microelectronics Co., Ltd.
  9. */
  10. #ifndef WM_IO_H
  11. #define WM_IO_H
  12. #define TLS_IO_AB_OFFSET (0x40011400 - 0x40011200)
  13. /** io name */
  14. enum tls_io_name {
  15. WM_IO_PA_00 = 0, /**< gpio a0 */
  16. WM_IO_PA_01, /**< gpio a1 */
  17. WM_IO_PA_02, /**< gpio a2 */
  18. WM_IO_PA_03, /**< gpio a3 */
  19. WM_IO_PA_04, /**< gpio a4 */
  20. WM_IO_PA_05, /**< gpio a5 */
  21. WM_IO_PA_06, /**< gpio a6 */
  22. WM_IO_PA_07, /**< gpio a7 */
  23. WM_IO_PA_08, /**< gpio a8 */
  24. WM_IO_PA_09, /**< gpio a9 */
  25. WM_IO_PA_10, /**< gpio a10 */
  26. WM_IO_PA_11, /**< gpio a11 */
  27. WM_IO_PA_12, /**< gpio a12 */
  28. WM_IO_PA_13, /**< gpio a13 */
  29. WM_IO_PA_14, /**< gpio a14 */
  30. WM_IO_PA_15, /**< gpio a15 */
  31. WM_IO_PB_00, /**< gpio b0 */
  32. WM_IO_PB_01, /**< gpio b1 */
  33. WM_IO_PB_02, /**< gpio b2 */
  34. WM_IO_PB_03, /**< gpio b3 */
  35. WM_IO_PB_04, /**< gpio b4 */
  36. WM_IO_PB_05, /**< gpio b5 */
  37. WM_IO_PB_06, /**< gpio b6 */
  38. WM_IO_PB_07, /**< gpio b7 */
  39. WM_IO_PB_08, /**< gpio b8 */
  40. WM_IO_PB_09, /**< gpio b9 */
  41. WM_IO_PB_10, /**< gpio b10 */
  42. WM_IO_PB_11, /**< gpio b11 */
  43. WM_IO_PB_12, /**< gpio b12 */
  44. WM_IO_PB_13, /**< gpio b13 */
  45. WM_IO_PB_14, /**< gpio b14 */
  46. WM_IO_PB_15, /**< gpio b15 */
  47. WM_IO_PB_16, /**< gpio b16 */
  48. WM_IO_PB_17, /**< gpio b17 */
  49. WM_IO_PB_18, /**< gpio b18 */
  50. WM_IO_PB_19, /**< gpio b19 */
  51. WM_IO_PB_20, /**< gpio b20 */
  52. WM_IO_PB_21, /**< gpio b21 */
  53. WM_IO_PB_22, /**< gpio b22 */
  54. WM_IO_PB_23, /**< gpio b23 */
  55. WM_IO_PB_24, /**< gpio b24 */
  56. WM_IO_PB_25, /**< gpio b25 */
  57. WM_IO_PB_26, /**< gpio b26 */
  58. WM_IO_PB_27, /**< gpio b27 */
  59. WM_IO_PB_28, /**< gpio b28 */
  60. WM_IO_PB_29, /**< gpio b29 */
  61. WM_IO_PB_30, /**< gpio b30 */
  62. WM_IO_PB_31 /**< gpio b31 */
  63. };
  64. /** option 1 of the io */
  65. #define WM_IO_OPTION1 1
  66. /** option 2 of the io */
  67. #define WM_IO_OPTION2 2
  68. /** option 3 of the io */
  69. #define WM_IO_OPTION3 3
  70. /** option 4 of the io */
  71. #define WM_IO_OPTION4 4
  72. /** option 5 of the io */
  73. #define WM_IO_OPTION5 5
  74. /** option 6 of the io */
  75. #define WM_IO_OPTION6 6
  76. /** option 7 of the io */
  77. #define WM_IO_OPTION7 7
  78. /* io option1 */
  79. #define WM_IO_OPT1_I2C_DAT WM_IO_OPTION1
  80. #define WM_IO_OPT1_PWM1 WM_IO_OPTION1
  81. #define WM_IO_OPT1_PWM2 WM_IO_OPTION1
  82. #define WM_IO_OPT1_PWM3 WM_IO_OPTION1
  83. #define WM_IO_OPT1_PWM4 WM_IO_OPTION1
  84. #define WM_IO_OPT1_PWM5 WM_IO_OPTION1
  85. #define WM_IO_OPT1_UART0_RXD WM_IO_OPTION1
  86. #define WM_IO_OPT1_UART0_TXD WM_IO_OPTION1
  87. #define WM_IO_OPT1_PWM_BRAKE WM_IO_OPTION1
  88. #define WM_IO_OPT1_I2S_M_EXTCLK WM_IO_OPTION1
  89. #define WM_IO_OPT1_SPI_M_DO WM_IO_OPTION1
  90. #define WM_IO_OPT1_SPI_M_DI WM_IO_OPTION1
  91. #define WM_IO_OPT1_SPI_M_CS WM_IO_OPTION1
  92. #define WM_IO_OPT1_SPI_M_CK WM_IO_OPTION1
  93. #define WM_IO_OPT1_I2S_S_RL WM_IO_OPTION1
  94. #define WM_IO_OPT1_I2S_S_SCL WM_IO_OPTION1
  95. #define WM_IO_OPT1_I2S_S_SDA WM_IO_OPTION1
  96. #define WM_IO_OPT1_I2S_M_RL WM_IO_OPTION1
  97. #define WM_IO_OPT1_I2S_M_SCL WM_IO_OPTION1
  98. #define WM_IO_OPT1_I2S_M_SDA WM_IO_OPTION1
  99. #define WM_IO_OPT1_JTAG_RST WM_IO_OPTION1
  100. #define WM_IO_OPT1_JTAG_TDO WM_IO_OPTION1
  101. #define WM_IO_OPT1_JTAG_TDI WM_IO_OPTION1
  102. #define WM_IO_OPT1_JTAG_TCK_SWDCK WM_IO_OPTION1
  103. #define WM_IO_OPT1_JTAG_TMS_SWDAT WM_IO_OPTION1
  104. #define WM_IO_OPT1_UART1_RXD WM_IO_OPTION1
  105. #define WM_IO_OPT1_UART1_TXD WM_IO_OPTION1
  106. #define WM_IO_OPT1_UART1_RTS WM_IO_OPTION1
  107. #define WM_IO_OPT1_UART1_CTS WM_IO_OPTION1
  108. #define WM_IO_OPT1_SDIO_DAT WM_IO_OPTION1
  109. /* io option2 */
  110. #define WM_IO_OPT2_PWM1 WM_IO_OPTION2
  111. #define WM_IO_OPT2_PWM2 WM_IO_OPTION2
  112. #define WM_IO_OPT2_PWM3 WM_IO_OPTION2
  113. #define WM_IO_OPT2_PWM4 WM_IO_OPTION2
  114. #define WM_IO_OPT2_PWM5 WM_IO_OPTION2
  115. #define WM_IO_OPT2_SPI_M_DO WM_IO_OPTION2
  116. #define WM_IO_OPT2_SPI_M_DI WM_IO_OPTION2
  117. #define WM_IO_OPT2_SPI_M_CS WM_IO_OPTION2
  118. #define WM_IO_OPT2_SPI_M_CK WM_IO_OPTION2
  119. #define WM_IO_OPT2_I2C_SCL WM_IO_OPTION2
  120. #define WM_IO_OPT2_I2S_M_EXTCLK WM_IO_OPTION2
  121. #define WM_IO_OPT2_UART1_RXD WM_IO_OPTION2
  122. #define WM_IO_OPT2_UART1_TXD WM_IO_OPTION2
  123. #define WM_IO_OPT2_UART1_RTS WM_IO_OPTION2
  124. #define WM_IO_OPT2_UART1_CTS WM_IO_OPTION2
  125. #define WM_IO_OPT2_I2C_DAT WM_IO_OPTION2
  126. #define WM_IO_OPT2_PWM_BRAKE WM_IO_OPTION2
  127. #define WM_IO_OPT2_UART0_RTS WM_IO_OPTION2
  128. #define WM_IO_OPT2_UART0_CTS WM_IO_OPTION2
  129. #define WM_IO_OPT2_SDIO_DAT WM_IO_OPTION2
  130. #define WM_IO_OPT2_HSPI_CK WM_IO_OPTION2
  131. #define WM_IO_OPT2_HSPI_INT WM_IO_OPTION2
  132. #define WM_IO_OPT2_HSPI_CS WM_IO_OPTION2
  133. #define WM_IO_OPT2_HSPI_DI WM_IO_OPTION2
  134. #define WM_IO_OPT2_HSPI_DO WM_IO_OPTION2
  135. /* io option3 */
  136. #define WM_IO_OPT3_UART0_RXD WM_IO_OPTION3
  137. #define WM_IO_OPT3_UART0_TXD WM_IO_OPTION3
  138. #define WM_IO_OPT3_UART0_RTS WM_IO_OPTION3
  139. #define WM_IO_OPT3_UART0_CTS WM_IO_OPTION3
  140. #define WM_IO_OPT3_SPI_M_DO WM_IO_OPTION3
  141. #define WM_IO_OPT3_SPI_M_DI WM_IO_OPTION3
  142. #define WM_IO_OPT3_SPI_M_CS WM_IO_OPTION3
  143. #define WM_IO_OPT3_SDIO_CK WM_IO_OPTION3
  144. #define WM_IO_OPT3_SDIO_CMD WM_IO_OPTION3
  145. #define WM_IO_OPT3_SDIO_DAT WM_IO_OPTION3
  146. /* io option4 */
  147. #define WM_IO_OPT4_I2S_M_MCLK WM_IO_OPTION4
  148. #define WM_IO_OPT4_I2S_M_RL WM_IO_OPTION4
  149. #define WM_IO_OPT4_I2S_M_SCL WM_IO_OPTION4
  150. #define WM_IO_OPT4_I2S_M_SDA WM_IO_OPTION4
  151. /* io option5 */
  152. #define WM_IO_OPT5_GPIO WM_IO_OPTION5
  153. /* io option6 */
  154. #define WM_IO_OPT6_ADC WM_IO_OPTION6
  155. #define WM_IO_OPT6_LCD_COM WM_IO_OPTION6
  156. #define WM_IO_OPT6_LCD_SEG WM_IO_OPTION6
  157. /* io option7 */
  158. #define WM_IO_OPT7_TOUCH_SENSOR WM_IO_OPTION7
  159. /**
  160. * @brief This function is used to config io function
  161. *
  162. * @param[in] name io name
  163. * @param[in] option io function option, value is WM_IO_OPT*_*, also is WM_IO_OPTION1~6
  164. *
  165. * @return None
  166. *
  167. * @note None
  168. */
  169. void tls_io_cfg_set(enum tls_io_name name, u8 option);
  170. /**
  171. * @brief This function is used to get io function config
  172. *
  173. * @param[in] name io name
  174. *
  175. * @retval WM_IO_OPTION1~6 Mapping io function
  176. *
  177. * @note None
  178. */
  179. int tls_io_cfg_get(enum tls_io_name name);
  180. #endif /* end of WM_IO_H */