uart_periph.c 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216
  1. /*
  2. * SPDX-FileCopyrightText: 2022-2023 Espressif Systems (Shanghai) CO LTD
  3. *
  4. * SPDX-License-Identifier: Apache-2.0
  5. */
  6. #include "soc/uart_periph.h"
  7. #include "soc/lp_gpio_sig_map.h"
  8. /*
  9. Bunch of constants for every UART peripheral: GPIO signals, irqs, hw addr of registers etc
  10. */
  11. const uart_signal_conn_t uart_periph_signal[SOC_UART_NUM] = {
  12. { // HP UART0
  13. .pins = {
  14. [SOC_UART_TX_PIN_IDX] = {
  15. .default_gpio = U0TXD_GPIO_NUM,
  16. .iomux_func = U0TXD_MUX_FUNC,
  17. .input = 0,
  18. .signal = UART0_TXD_PAD_OUT_IDX,
  19. },
  20. [SOC_UART_RX_PIN_IDX] = {
  21. .default_gpio = U0RXD_GPIO_NUM,
  22. .iomux_func = U0RXD_MUX_FUNC,
  23. .input = 1,
  24. .signal = UART0_RXD_PAD_IN_IDX,
  25. },
  26. [SOC_UART_RTS_PIN_IDX] = {
  27. .default_gpio = U0RTS_GPIO_NUM,
  28. .iomux_func = U0RTS_MUX_FUNC,
  29. .input = 0,
  30. .signal = UART0_RTS_PAD_OUT_IDX,
  31. },
  32. [SOC_UART_CTS_PIN_IDX] = {
  33. .default_gpio = U0CTS_GPIO_NUM,
  34. .iomux_func = U0CTS_MUX_FUNC,
  35. .input = 1,
  36. .signal = UART0_CTS_PAD_IN_IDX,
  37. }
  38. },
  39. .irq = ETS_UART0_INTR_SOURCE,
  40. .module = PERIPH_UART0_MODULE,
  41. },
  42. { // HP UART1
  43. .pins = {
  44. [SOC_UART_TX_PIN_IDX] = {
  45. .default_gpio = U1TXD_GPIO_NUM,
  46. .iomux_func = U1TXD_MUX_FUNC,
  47. .input = 0,
  48. .signal = UART1_TXD_PAD_OUT_IDX,
  49. },
  50. [SOC_UART_RX_PIN_IDX] = {
  51. .default_gpio = U1RXD_GPIO_NUM,
  52. .iomux_func = U1RXD_MUX_FUNC,
  53. .input = 1,
  54. .signal = UART1_RXD_PAD_IN_IDX,
  55. },
  56. [SOC_UART_RTS_PIN_IDX] = {
  57. .default_gpio = U1RTS_GPIO_NUM,
  58. .iomux_func = U1RTS_MUX_FUNC,
  59. .input = 0,
  60. .signal = UART1_RTS_PAD_OUT_IDX,
  61. },
  62. [SOC_UART_CTS_PIN_IDX] = {
  63. .default_gpio = U1CTS_GPIO_NUM,
  64. .iomux_func = U1CTS_MUX_FUNC,
  65. .input = 1,
  66. .signal = UART1_CTS_PAD_IN_IDX,
  67. },
  68. },
  69. .irq = ETS_UART1_INTR_SOURCE,
  70. .module = PERIPH_UART1_MODULE,
  71. },
  72. { // HP UART2
  73. .pins = {
  74. [SOC_UART_TX_PIN_IDX] = {
  75. .default_gpio = U2TXD_GPIO_NUM,
  76. .iomux_func = U2TXD_MUX_FUNC,
  77. .input = 0,
  78. .signal = UART2_TXD_PAD_OUT_IDX,
  79. },
  80. [SOC_UART_RX_PIN_IDX] = {
  81. .default_gpio = U2RXD_GPIO_NUM,
  82. .iomux_func = U2RXD_MUX_FUNC,
  83. .input = 1,
  84. .signal = UART2_RXD_PAD_IN_IDX,
  85. },
  86. [SOC_UART_RTS_PIN_IDX] = {
  87. .default_gpio = U2RTS_GPIO_NUM,
  88. .iomux_func = U2RTS_MUX_FUNC,
  89. .input = 0,
  90. .signal = UART2_RTS_PAD_OUT_IDX,
  91. },
  92. [SOC_UART_CTS_PIN_IDX] = {
  93. .default_gpio = U2CTS_GPIO_NUM,
  94. .iomux_func = U2CTS_MUX_FUNC,
  95. .input = 1,
  96. .signal = UART2_CTS_PAD_IN_IDX,
  97. },
  98. },
  99. .irq = ETS_UART2_INTR_SOURCE,
  100. .module = PERIPH_UART2_MODULE,
  101. },
  102. { // HP UART3
  103. .pins = {
  104. [SOC_UART_TX_PIN_IDX] = {
  105. .default_gpio = U3TXD_GPIO_NUM,
  106. .iomux_func = U3TXD_MUX_FUNC,
  107. .input = 0,
  108. .signal = UART3_TXD_PAD_OUT_IDX,
  109. },
  110. [SOC_UART_RX_PIN_IDX] = {
  111. .default_gpio = U3RXD_GPIO_NUM,
  112. .iomux_func = U3RXD_MUX_FUNC,
  113. .input = 1,
  114. .signal = UART3_RXD_PAD_IN_IDX,
  115. },
  116. [SOC_UART_RTS_PIN_IDX] = {
  117. .default_gpio = U3RTS_GPIO_NUM,
  118. .iomux_func = U3RTS_MUX_FUNC,
  119. .input = 0,
  120. .signal = UART3_RTS_PAD_OUT_IDX,
  121. },
  122. [SOC_UART_CTS_PIN_IDX] = {
  123. .default_gpio = U3CTS_GPIO_NUM,
  124. .iomux_func = U3CTS_MUX_FUNC,
  125. .input = 1,
  126. .signal = UART3_CTS_PAD_IN_IDX,
  127. },
  128. },
  129. .irq = ETS_UART3_INTR_SOURCE,
  130. .module = PERIPH_UART3_MODULE,
  131. },
  132. { // HP UART4
  133. .pins = {
  134. [SOC_UART_TX_PIN_IDX] = {
  135. .default_gpio = U4TXD_GPIO_NUM,
  136. .iomux_func = U4TXD_MUX_FUNC,
  137. .input = 0,
  138. .signal = UART4_TXD_PAD_OUT_IDX,
  139. },
  140. [SOC_UART_RX_PIN_IDX] = {
  141. .default_gpio = U4RXD_GPIO_NUM,
  142. .iomux_func = U4RXD_MUX_FUNC,
  143. .input = 1,
  144. .signal = UART4_RXD_PAD_IN_IDX,
  145. },
  146. [SOC_UART_RTS_PIN_IDX] = {
  147. .default_gpio = U4RTS_GPIO_NUM,
  148. .iomux_func = U4RTS_MUX_FUNC,
  149. .input = 0,
  150. .signal = UART4_RTS_PAD_OUT_IDX,
  151. },
  152. [SOC_UART_CTS_PIN_IDX] = {
  153. .default_gpio = U4CTS_GPIO_NUM,
  154. .iomux_func = U4CTS_MUX_FUNC,
  155. .input = 1,
  156. .signal = UART4_CTS_PAD_IN_IDX,
  157. },
  158. },
  159. .irq = ETS_UART4_INTR_SOURCE,
  160. .module = PERIPH_UART4_MODULE,
  161. },
  162. { // LP UART0
  163. .pins = {
  164. [SOC_UART_TX_PIN_IDX] = {
  165. .default_gpio = LP_U0TXD_GPIO_NUM,
  166. .iomux_func = LP_U0TXD_MUX_FUNC,
  167. .input = 0,
  168. .signal = LP_UART_TXD_PAD_OUT_IDX,
  169. },
  170. [SOC_UART_RX_PIN_IDX] = {
  171. .default_gpio = LP_U0RXD_GPIO_NUM,
  172. .iomux_func = LP_U0RXD_MUX_FUNC,
  173. .input = 1,
  174. .signal = LP_UART_RXD_PAD_IN_IDX,
  175. },
  176. [SOC_UART_RTS_PIN_IDX] = {
  177. .default_gpio = LP_U0RTS_GPIO_NUM,
  178. .iomux_func = LP_U0RTS_MUX_FUNC,
  179. .input = 0,
  180. .signal = LP_UART_RTSN_PAD_OUT_IDX,
  181. },
  182. [SOC_UART_CTS_PIN_IDX] = {
  183. .default_gpio = LP_U0CTS_GPIO_NUM,
  184. .iomux_func = LP_U0CTS_MUX_FUNC,
  185. .input = 1,
  186. .signal = LP_UART_CTSN_PAD_IN_IDX,
  187. },
  188. },
  189. .irq = ETS_LP_UART_INTR_SOURCE,
  190. .module = PERIPH_LP_UART0_MODULE,
  191. },
  192. };