imx_uart.h 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. /*
  2. * Copyright (c) Linaro 2018 Limited and Contributors. All rights reserved.
  3. *
  4. * SPDX-License-Identifier: BSD-3-Clause
  5. */
  6. #ifndef IMX_UART_H
  7. #define IMX_UART_H
  8. #include <drivers/console.h>
  9. #define IMX_UART_RXD_OFFSET 0x00
  10. #define IMX_UART_RXD_CHARRDY BIT(15)
  11. #define IMX_UART_RXD_ERR BIT(14)
  12. #define IMX_UART_RXD_OVERRUN BIT(13)
  13. #define IMX_UART_RXD_FRMERR BIT(12)
  14. #define IMX_UART_RXD_BRK BIT(11)
  15. #define IMX_UART_RXD_PRERR BIT(10)
  16. #define IMX_UART_TXD_OFFSET 0x40
  17. #define IMX_UART_CR1_OFFSET 0x80
  18. #define IMX_UART_CR1_ADEN BIT(15)
  19. #define IMX_UART_CR1_ADBR BIT(14)
  20. #define IMX_UART_CR1_TRDYEN BIT(13)
  21. #define IMX_UART_CR1_IDEN BIT(12)
  22. #define IMX_UART_CR1_RRDYEN BIT(9)
  23. #define IMX_UART_CR1_RXDMAEN BIT(8)
  24. #define IMX_UART_CR1_IREN BIT(7)
  25. #define IMX_UART_CR1_TXMPTYEN BIT(6)
  26. #define IMX_UART_CR1_RTSDEN BIT(5)
  27. #define IMX_UART_CR1_SNDBRK BIT(4)
  28. #define IMX_UART_CR1_TXDMAEN BIT(3)
  29. #define IMX_UART_CR1_ATDMAEN BIT(2)
  30. #define IMX_UART_CR1_DOZE BIT(1)
  31. #define IMX_UART_CR1_UARTEN BIT(0)
  32. #define IMX_UART_CR2_OFFSET 0x84
  33. #define IMX_UART_CR2_ESCI BIT(15)
  34. #define IMX_UART_CR2_IRTS BIT(14)
  35. #define IMX_UART_CR2_CTSC BIT(13)
  36. #define IMX_UART_CR2_CTS BIT(12)
  37. #define IMX_UART_CR2_ESCEN BIT(11)
  38. #define IMX_UART_CR2_PREN BIT(8)
  39. #define IMX_UART_CR2_PROE BIT(7)
  40. #define IMX_UART_CR2_STPB BIT(6)
  41. #define IMX_UART_CR2_WS BIT(5)
  42. #define IMX_UART_CR2_RTSEN BIT(4)
  43. #define IMX_UART_CR2_ATEN BIT(3)
  44. #define IMX_UART_CR2_TXEN BIT(2)
  45. #define IMX_UART_CR2_RXEN BIT(1)
  46. #define IMX_UART_CR2_SRST BIT(0)
  47. #define IMX_UART_CR3_OFFSET 0x88
  48. #define IMX_UART_CR3_DTREN BIT(13)
  49. #define IMX_UART_CR3_PARERREN BIT(12)
  50. #define IMX_UART_CR3_FARERREN BIT(11)
  51. #define IMX_UART_CR3_DSD BIT(10)
  52. #define IMX_UART_CR3_DCD BIT(9)
  53. #define IMX_UART_CR3_RI BIT(8)
  54. #define IMX_UART_CR3_ADNIMP BIT(7)
  55. #define IMX_UART_CR3_RXDSEN BIT(6)
  56. #define IMX_UART_CR3_AIRINTEN BIT(5)
  57. #define IMX_UART_CR3_AWAKEN BIT(4)
  58. #define IMX_UART_CR3_DTRDEN BIT(3)
  59. #define IMX_UART_CR3_RXDMUXSEL BIT(2)
  60. #define IMX_UART_CR3_INVT BIT(1)
  61. #define IMX_UART_CR3_ACIEN BIT(0)
  62. #define IMX_UART_CR4_OFFSET 0x8c
  63. #define IMX_UART_CR4_INVR BIT(9)
  64. #define IMX_UART_CR4_ENIRI BIT(8)
  65. #define IMX_UART_CR4_WKEN BIT(7)
  66. #define IMX_UART_CR4_IDDMAEN BIT(6)
  67. #define IMX_UART_CR4_IRSC BIT(5)
  68. #define IMX_UART_CR4_LPBYP BIT(4)
  69. #define IMX_UART_CR4_TCEN BIT(3)
  70. #define IMX_UART_CR4_BKEN BIT(2)
  71. #define IMX_UART_CR4_OREN BIT(1)
  72. #define IMX_UART_CR4_DREN BIT(0)
  73. #define IMX_UART_FCR_OFFSET 0x90
  74. #define IMX_UART_FCR_TXTL_MASK (BIT(15) | BIT(14) | BIT(13) | BIT(12) |\
  75. BIT(11) | BIT(10))
  76. #define IMX_UART_FCR_TXTL(x) ((x) << 10)
  77. #define IMX_UART_FCR_RFDIV_MASK (BIT(9) | BIT(8) | BIT(7))
  78. #define IMX_UART_FCR_RFDIV7 (BIT(9) | BIT(8))
  79. #define IMX_UART_FCR_RFDIV1 (BIT(9) | BIT(7))
  80. #define IMX_UART_FCR_RFDIV2 BIT(9)
  81. #define IMX_UART_FCR_RFDIV3 (BIT(8) | BIT(7))
  82. #define IMX_UART_FCR_RFDIV4 BIT(8)
  83. #define IMX_UART_FCR_RFDIV5 BIT(7)
  84. #define IMX_UART_FCR_RFDIV6 0
  85. #define IMX_UART_FCR_DCEDTE BIT(6)
  86. #define IMX_UART_FCR_RXTL_MASK (BIT(5) | BIT(4) | BIT(3) | BIT(2) |\
  87. BIT(1) | BIT(0))
  88. #define IMX_UART_FCR_RXTL(x) x
  89. #define IMX_UART_STAT1_OFFSET 0x94
  90. #define IMX_UART_STAT1_PARITYERR BIT(15)
  91. #define IMX_UART_STAT1_RTSS BIT(14)
  92. #define IMX_UART_STAT1_TRDY BIT(13)
  93. #define IMX_UART_STAT1_RTSD BIT(12)
  94. #define IMX_UART_STAT1_ESCF BIT(11)
  95. #define IMX_UART_STAT1_FRAMEERR BIT(10)
  96. #define IMX_UART_STAT1_RRDY BIT(9)
  97. #define IMX_UART_STAT1_AGTIM BIT(8)
  98. #define IMX_UART_STAT1_DTRD BIT(7)
  99. #define IMX_UART_STAT1_RXDS BIT(6)
  100. #define IMX_UART_STAT1_AIRINT BIT(5)
  101. #define IMX_UART_STAT1_AWAKE BIT(4)
  102. #define IMX_UART_STAT1_SAD BIT(3)
  103. #define IMX_UART_STAT2_OFFSET 0x98
  104. #define IMX_UART_STAT2_ADET BIT(15)
  105. #define IMX_UART_STAT2_TXFE BIT(14)
  106. #define IMX_UART_STAT2_DTRF BIT(13)
  107. #define IMX_UART_STAT2_IDLE BIT(12)
  108. #define IMX_UART_STAT2_ACST BIT(11)
  109. #define IMX_UART_STAT2_RIDELT BIT(10)
  110. #define IMX_UART_STAT2_RIIN BIT(9)
  111. #define IMX_UART_STAT2_IRINT BIT(8)
  112. #define IMX_UART_STAT2_WAKE BIT(7)
  113. #define IMX_UART_STAT2_DCDDELT BIT(6)
  114. #define IMX_UART_STAT2_DCDIN BIT(5)
  115. #define IMX_UART_STAT2_RTSF BIT(4)
  116. #define IMX_UART_STAT2_TXDC BIT(3)
  117. #define IMX_UART_STAT2_BRCD BIT(2)
  118. #define IMX_UART_STAT2_ORE BIT(1)
  119. #define IMX_UART_STAT2_RCR BIT(0)
  120. #define IMX_UART_ESC_OFFSET 0x9c
  121. #define IMX_UART_TIM_OFFSET 0xa0
  122. #define IMX_UART_BIR_OFFSET 0xa4
  123. #define IMX_UART_BMR_OFFSET 0xa8
  124. #define IMX_UART_BRC_OFFSET 0xac
  125. #define IMX_UART_ONEMS_OFFSET 0xb0
  126. #define IMX_UART_TS_OFFSET 0xb4
  127. #define IMX_UART_TS_FRCPERR BIT(13)
  128. #define IMX_UART_TS_LOOP BIT(12)
  129. #define IMX_UART_TS_DBGEN BIT(11)
  130. #define IMX_UART_TS_LOOPIR BIT(10)
  131. #define IMX_UART_TS_RXDBG BIT(9)
  132. #define IMX_UART_TS_TXEMPTY BIT(6)
  133. #define IMX_UART_TS_RXEMPTY BIT(5)
  134. #define IMX_UART_TS_TXFULL BIT(4)
  135. #define IMX_UART_TS_RXFULL BIT(3)
  136. #define IMX_UART_TS_SOFTRST BIT(0)
  137. #ifndef __ASSEMBLER__
  138. int console_imx_uart_register(uintptr_t baseaddr,
  139. uint32_t clock,
  140. uint32_t baud,
  141. console_t *console);
  142. #endif /*__ASSEMBLER__*/
  143. #endif /* IMX_UART_H */