uart_irda_cir.h 32 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661
  1. /**
  2. * \file uart_irda_cir.h
  3. *
  4. * \brief This file contains the prototyes of the functions defined in
  5. * <uart_irda_cir.c>. This also contains some related macro
  6. * definitions and some files to be included.
  7. *
  8. */
  9. /*
  10. * Copyright (C) 2010 Texas Instruments Incorporated - http://www.ti.com/
  11. */
  12. /*
  13. * Redistribution and use in source and binary forms, with or without
  14. * modification, are permitted provided that the following conditions
  15. * are met:
  16. *
  17. * Redistributions of source code must retain the above copyright
  18. * notice, this list of conditions and the following disclaimer.
  19. *
  20. * Redistributions in binary form must reproduce the above copyright
  21. * notice, this list of conditions and the following disclaimer in the
  22. * documentation and/or other materials provided with the
  23. * distribution.
  24. *
  25. * Neither the name of Texas Instruments Incorporated nor the names of
  26. * its contributors may be used to endorse or promote products derived
  27. * from this software without specific prior written permission.
  28. *
  29. * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  30. * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  31. * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  32. * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
  33. * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  34. * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  35. * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
  36. * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
  37. * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  38. * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  39. * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  40. *
  41. */
  42. #ifndef _UART_IRDA_CIR_H_
  43. #define _UART_IRDA_CIR_H_
  44. #include "hw_uart_irda_cir.h"
  45. #ifdef __cplusplus
  46. extern "C" {
  47. #endif
  48. /****************************************************************************
  49. ** MACRO DEFINITIONS
  50. ****************************************************************************/
  51. /* The size of the Transmitter FIFO. */
  52. #define TX_FIFO_SIZE (64)
  53. /* The size of the Receiver FIFO. */
  54. #define RX_FIFO_SIZE (64)
  55. /*
  56. ** Values to configure the Operating modes of UART.
  57. */
  58. #define UART16x_OPER_MODE (UART_MDR1_MODE_SELECT_UART16X)
  59. #define UART_SIR_OPER_MODE (UART_MDR1_MODE_SELECT_SIR)
  60. #define UART16x_AUTO_BAUD_OPER_MODE (UART_MDR1_MODE_SELECT_UART16XAUTO)
  61. #define UART13x_OPER_MODE (UART_MDR1_MODE_SELECT_UART13X)
  62. #define UART_MIR_OPER_MODE (UART_MDR1_MODE_SELECT_MIR)
  63. #define UART_FIR_OPER_MODE (UART_MDR1_MODE_SELECT_FIR)
  64. #define UART_CIR_OPER_MODE (UART_MDR1_MODE_SELECT_CIR)
  65. #define UART_DISABLED_MODE (UART_MDR1_MODE_SELECT_DISABLED)
  66. /****************************************************************************/
  67. /*
  68. ** Values to control the Line characteristics.
  69. */
  70. /* Break condition generation controls. */
  71. #define UART_BREAK_COND_DISABLE (UART_LCR_BREAK_EN_NORMAL << \
  72. UART_LCR_BREAK_EN_SHIFT)
  73. #define UART_BREAK_COND_ENABLE (UART_LCR_BREAK_EN_FORCE << \
  74. UART_LCR_BREAK_EN_SHIFT)
  75. /* Values to control parity feature. */
  76. #define UART_PARITY_REPR_1 (UART_LCR_PARITY_TYPE2 | \
  77. (UART_LCR_PARITY_TYPE1_ODD << \
  78. UART_LCR_PARITY_TYPE1_SHIFT) | \
  79. UART_LCR_PARITY_EN)
  80. #define UART_PARITY_REPR_0 (UART_LCR_PARITY_TYPE2 | \
  81. (UART_LCR_PARITY_TYPE1_EVEN << \
  82. UART_LCR_PARITY_TYPE1_SHIFT) | \
  83. UART_LCR_PARITY_EN)
  84. #define UART_ODD_PARITY ((UART_LCR_PARITY_TYPE1_ODD << \
  85. UART_LCR_PARITY_TYPE1_SHIFT) | \
  86. UART_LCR_PARITY_EN)
  87. #define UART_EVEN_PARITY ((UART_LCR_PARITY_TYPE1_EVEN << \
  88. UART_LCR_PARITY_TYPE1_SHIFT) | \
  89. UART_LCR_PARITY_EN)
  90. #define UART_PARITY_NONE (UART_LCR_PARITY_EN_DISABLE << \
  91. UART_LCR_PARITY_EN_SHIFT)
  92. /* Number of Stop Bits per frame. */
  93. #define UART_FRAME_NUM_STB_1 (UART_LCR_NB_STOP_1BIT << \
  94. UART_LCR_NB_STOP_SHIFT)
  95. #define UART_FRAME_NUM_STB_1_5_2 (UART_LCR_NB_STOP_2BIT << \
  96. UART_LCR_NB_STOP_SHIFT)
  97. /* Word Length per frame. */
  98. #define UART_FRAME_WORD_LENGTH_5 (UART_LCR_CHAR_LENGTH_5BIT)
  99. #define UART_FRAME_WORD_LENGTH_6 (UART_LCR_CHAR_LENGTH_6BIT)
  100. #define UART_FRAME_WORD_LENGTH_7 (UART_LCR_CHAR_LENGTH_7BIT)
  101. #define UART_FRAME_WORD_LENGTH_8 (UART_LCR_CHAR_LENGTH_8BIT)
  102. /****************************************************************************/
  103. /*
  104. ** Values associated with setting the Trigger Levels and DMA mode selection.
  105. */
  106. /* Values for trigger level for the Receiver FIFO. */
  107. #define UART_FCR_RX_TRIG_LVL_8 (UART_FCR_RX_FIFO_TRIG_8CHAR << \
  108. UART_FCR_RX_FIFO_TRIG_SHIFT)
  109. #define UART_FCR_RX_TRIG_LVL_16 (UART_FCR_RX_FIFO_TRIG_16CHAR << \
  110. UART_FCR_RX_FIFO_TRIG_SHIFT)
  111. #define UART_FCR_RX_TRIG_LVL_56 (UART_FCR_RX_FIFO_TRIG_56CHAR << \
  112. UART_FCR_RX_FIFO_TRIG_SHIFT)
  113. #define UART_FCR_RX_TRIG_LVL_60 (UART_FCR_RX_FIFO_TRIG_60CHAR << \
  114. UART_FCR_RX_FIFO_TRIG_SHIFT)
  115. /* Values for the trigger level for the Transmitter FIFO. */
  116. #define UART_FCR_TX_TRIG_LVL_8 (UART_FCR_TX_FIFO_TRIG_8SPACES << \
  117. UART_FCR_TX_FIFO_TRIG_SHIFT)
  118. #define UART_FCR_TX_TRIG_LVL_16 (UART_FCR_TX_FIFO_TRIG_16SPACES << \
  119. UART_FCR_TX_FIFO_TRIG_SHIFT)
  120. #define UART_FCR_TX_TRIG_LVL_32 (UART_FCR_TX_FIFO_TRIG_32SPACES << \
  121. UART_FCR_TX_FIFO_TRIG_SHIFT)
  122. #define UART_FCR_TX_TRIG_LVL_56 (UART_FCR_TX_FIFO_TRIG_56SPACES << \
  123. UART_FCR_TX_FIFO_TRIG_SHIFT)
  124. /* Values corresponding to DMA mode selection. */
  125. #define UART_DMA_MODE_0_ENABLE (UART_SCR_DMA_MODE_2_MODE0)
  126. #define UART_DMA_MODE_1_ENABLE (UART_SCR_DMA_MODE_2_MODE1)
  127. #define UART_DMA_MODE_2_ENABLE (UART_SCR_DMA_MODE_2_MODE2)
  128. #define UART_DMA_MODE_3_ENABLE (UART_SCR_DMA_MODE_2_MODE3)
  129. /*
  130. ** Values used to choose the path for configuring the DMA Mode.
  131. ** DMA Mode could be configured either through FCR or SCR.
  132. */
  133. #define UART_DMA_EN_PATH_FCR (UART_SCR_DMA_MODE_CTL_FCR)
  134. #define UART_DMA_EN_PATH_SCR (UART_SCR_DMA_MODE_CTL_SCR)
  135. /****************************************************************************/
  136. /*
  137. ** Values related to enabling/disabling of Interrupts.
  138. */
  139. /* Values for enabling/disabling the interrupts of UART. */
  140. #define UART_INT_CTS (UART_IER_CTS_IT)
  141. #define UART_INT_RTS (UART_IER_RTS_IT)
  142. #define UART_INT_XOFF (UART_IER_XOFF_IT)
  143. #define UART_INT_SLEEPMODE (UART_IER_SLEEP_MODE_IT)
  144. #define UART_INT_MODEM_STAT (UART_IER_MODEM_STS_IT)
  145. #define UART_INT_LINE_STAT (UART_IER_LINE_STS_IT)
  146. #define UART_INT_THR (UART_IER_THR_IT)
  147. #define UART_INT_RHR_CTI (UART_IER_RHR_IT)
  148. /****************************************************************************/
  149. /*
  150. ** Values related to Line Status information.
  151. */
  152. /* Values pertaining to UART Line Status information. */
  153. #define UART_FIFO_PE_FE_BI_DETECTED (UART_LSR_RX_FIFO_STS)
  154. #define UART_BREAK_DETECTED_ERROR (UART_LSR_RX_BI)
  155. #define UART_FRAMING_ERROR (UART_LSR_RX_FE)
  156. #define UART_PARITY_ERROR (UART_LSR_RX_PE)
  157. #define UART_OVERRUN_ERROR (UART_LSR_RX_OE)
  158. /****************************************************************************/
  159. /*
  160. ** Values related to status of Interrupt souces.
  161. */
  162. /* Values pertaining to status of UART Interrupt sources. */
  163. #define UART_INTID_MODEM_STAT (UART_IIR_IT_TYPE_MODEMINT << \
  164. UART_IIR_IT_TYPE_SHIFT)
  165. #define UART_INTID_TX_THRES_REACH (UART_IIR_IT_TYPE_THRINT << \
  166. UART_IIR_IT_TYPE_SHIFT)
  167. #define UART_INTID_RX_THRES_REACH (UART_IIR_IT_TYPE_RHRINT << \
  168. UART_IIR_IT_TYPE_SHIFT)
  169. #define UART_INTID_RX_LINE_STAT_ERROR (UART_IIR_IT_TYPE_RXSTATUSERROR << \
  170. UART_IIR_IT_TYPE_SHIFT)
  171. #define UART_INTID_CHAR_TIMEOUT (UART_IIR_IT_TYPE_RXTIMEOUT << \
  172. UART_IIR_IT_TYPE_SHIFT)
  173. #define UART_INTID_XOFF_SPEC_CHAR_DETECT (UART_IIR_IT_TYPE_XOFF << \
  174. UART_IIR_IT_TYPE_SHIFT)
  175. #define UART_INTID_MODEM_SIG_STATE_CHANGE (UART_IIR_IT_TYPE_STATECHANGE << \
  176. UART_IIR_IT_TYPE_SHIFT)
  177. /* Values indicating the UART Interrupt pending status. */
  178. #define UART_INT_PENDING (0)
  179. #define UART_N0_INT_PENDING (1)
  180. /****************************************************************************/
  181. /*
  182. ** Values pertaining to control of Enhanced Features.
  183. */
  184. /* Values for controlling Auto-CTS and Auto-RTS features. */
  185. #define UART_AUTO_CTS_ENABLE (UART_EFR_AUTO_CTS_EN)
  186. #define UART_AUTO_CTS_DISABLE (UART_EFR_AUTO_CTS_EN_NORMAL)
  187. #define UART_AUTO_RTS_ENABLE (UART_EFR_AUTO_RTS_EN)
  188. #define UART_AUTO_RTS_DISABLE (UART_EFR_AUTO_RTS_EN_NORMAL)
  189. /* Values to enable/disable detection of Special Character. */
  190. #define UART_SPECIAL_CHAR_DETECT_ENABLE (UART_EFR_SPECIAL_CHAR_DETECT)
  191. #define UART_SPECIAL_CHAR_DETECT_DISABLE (UART_EFR_SPECIAL_CHAR_DETECT_NORMAL)
  192. /* Values to configure the options for Software Flow Control. */
  193. #define UART_NO_SOFTWARE_FLOW_CONTROL ((UART_EFR_SW_FLOW_CONTROL_TX_NONE << \
  194. UART_EFR_SW_FLOW_CONTROL_TX_SHIFT) | \
  195. (UART_EFR_SW_FLOW_CONTROL_RX_NONE << \
  196. UART_EFR_SW_FLOW_CONTROL_RX_SHIFT))
  197. #define UART_TX_RX_XON1_XOFF1 ((UART_EFR_SW_FLOW_CONTROL_TX_XONOFF1 << \
  198. UART_EFR_SW_FLOW_CONTROL_TX_SHIFT) | \
  199. (UART_EFR_SW_FLOW_CONTROL_RX_XONOFF1 << \
  200. UART_EFR_SW_FLOW_CONTROL_RX_SHIFT))
  201. #define UART_TX_RX_XON2_XOFF2 ((UART_EFR_SW_FLOW_CONTROL_TX_XONOFF2 << \
  202. UART_EFR_SW_FLOW_CONTROL_TX_SHIFT) | \
  203. (UART_EFR_SW_FLOW_CONTROL_RX_XONOFF2 << \
  204. UART_EFR_SW_FLOW_CONTROL_RX_SHIFT))
  205. #define UART_TX_RX_XON1_XOFF1_XON2_XOFF2 ((UART_EFR_SW_FLOW_CONTROL_TX_XONOFF1AND2 << \
  206. UART_EFR_SW_FLOW_CONTROL_TX_SHIFT) | \
  207. (UART_EFR_SW_FLOW_CONTROL_RX_XONOFF1AND2 << \
  208. UART_EFR_SW_FLOW_CONTROL_RX_SHIFT))
  209. /****************************************************************************/
  210. /*
  211. ** Values corresponding to Mode Definition Register 2(MDR2).
  212. */
  213. /* Values to enable/disable Pulse shaping for UART. */
  214. #define UART_PULSE_NORMAL (UART_MDR2_UART_PULSE_NORMAL << \
  215. UART_MDR2_UART_PULSE_SHIFT)
  216. #define UART_PULSE_SHAPING (UART_MDR2_UART_PULSE_SHAPING << \
  217. UART_MDR2_UART_PULSE_SHIFT)
  218. /****************************************************************************/
  219. /*
  220. ** Values corresponding to Mode Definition Register 3(MDR3).
  221. */
  222. /* Values used to control the method of setting the TX DMA Threshold value. */
  223. #define UART_TX_DMA_THRESHOLD_64 (UART_MDR3_SET_TX_DMA_THRESHOLD_64 << \
  224. UART_MDR3_SET_DMA_TX_THRESHOLD_SHIFT)
  225. #define UART_TX_DMA_THRESHOLD_REG (UART_MDR3_SET_TX_DMA_THRESHOLD_REG << \
  226. UART_MDR3_SET_DMA_TX_THRESHOLD_SHIFT)
  227. /****************************************************************************/
  228. /*
  229. ** Macros related to control and status of Modem Signals.
  230. */
  231. /* Values to enable/disable XON any feature. */
  232. #define UART_XON_ANY_ENABLE (UART_MCR_XON_EN_ENABLE << \
  233. UART_MCR_XON_EN_SHIFT)
  234. #define UART_XON_ANY_DISABLE (UART_MCR_XON_EN_DISABLE << \
  235. UART_MCR_XON_EN_SHIFT)
  236. /* Values to enable/disable Loopback mode of operation. */
  237. #define UART_LOOPBACK_MODE_ENABLE (UART_MCR_LOOPBACK_EN_LOOPBACK << \
  238. UART_MCR_LOOPBACK_EN_SHIFT)
  239. #define UART_LOOPBACK_MODE_DISABLE (UART_MCR_LOOPBACK_EN_NORMAL << \
  240. UART_MCR_LOOPBACK_EN_SHIFT)
  241. /* Macros used to force the Modem Control lines to active/inactive states. */
  242. #define UART_DCD_CONTROL (UART_MCR_CD_STS_CH)
  243. #define UART_RI_CONTROL (UART_MCR_RI_STS_CH)
  244. #define UART_RTS_CONTROL (UART_MCR_RTS)
  245. #define UART_DTR_CONTROL (UART_MCR_DTR)
  246. /* Values that indicate the values on Modem Control lines. */
  247. #define UART_DCD_VALUE (UART_MSR_NCD_STS)
  248. #define UART_RI_VALUE (UART_MSR_NRI_STS)
  249. #define UART_DSR_VALUE (UART_MSR_NDSR_STS)
  250. #define UART_CTS_VALUE (UART_MSR_NCTS_STS)
  251. /* Values used to detect the changes in Modem Control lines. */
  252. #define UART_DCD_STS_CHANGED (UART_MSR_DCD_STS)
  253. #define UART_RI_STS_CHANGED (UART_MSR_RI_STS)
  254. #define UART_DSR_STS_CHANGED (UART_MSR_DSR_STS)
  255. #define UART_CTS_STS_CHANGED (UART_MSR_CTS_STS)
  256. /****************************************************************************/
  257. /*
  258. ** Values related to the control and status of Supplementary registers.
  259. */
  260. /*
  261. ** Values used to enable/disable a granularity of 1 for TX and RX FIFO trigger
  262. ** levels.
  263. */
  264. #define UART_RX_TRIG_LVL_GRAN_1_DISABLE (UART_SCR_RX_TRIG_GRANU1_DISABLE << \
  265. UART_SCR_RX_TRIG_GRANU1_SHIFT)
  266. #define UART_RX_TRIG_LVL_GRAN_1_ENABLE (UART_SCR_RX_TRIG_GRANU1_ENABLE << \
  267. UART_SCR_RX_TRIG_GRANU1_SHIFT)
  268. #define UART_TX_TRIG_LVL_GRAN_1_DISABLE (UART_SCR_TX_TRIG_GRANU1_DISABLE << \
  269. UART_SCR_TX_TRIG_GRANU1_SHIFT)
  270. #define UART_TX_FIFO_LVL_GRAN_1_ENABLE (UART_SCR_TX_TRIG_GRANU1_ENABLE << \
  271. UART_SCR_TX_TRIG_GRANU1_SHIFT)
  272. /* Value used to enable/disable DSRn interrupt. */
  273. #define UART_DSRn_INT_DISABLE (UART_SCR_DSR_IT_DISABLE << \
  274. UART_SCR_DSR_IT_SHIFT)
  275. #define UART_DSRn_INT_ENABLE (UART_SCR_DSR_IT_ENABLE << \
  276. UART_SCR_DSR_IT_SHIFT)
  277. /* Values to control the module Wake-Up rights for RX, CTSn and DSRn pins. */
  278. #define UART_RX_CTS_DSR_WAKEUP_DISABLE (UART_SCR_RX_CTS_DSR_WAKE_UP_ENABLE_DISABLE << \
  279. UART_SCR_RX_CTS_DSR_WAKE_UP_ENABLE_SHIFT)
  280. #define UART_RX_CTS_DSR_WAKEUP_ENABLE (UART_SCR_RX_CTS_DSR_WAKE_UP_ENABLE_ENABLE << \
  281. UART_SCR_RX_CTS_DSR_WAKE_UP_ENABLE_SHIFT)
  282. /* Values to control the THR interrupt modes. */
  283. #define UART_THR_INT_NORMAL (UART_SCR_TX_EMPTY_CTL_IT_NORMAL << \
  284. UART_SCR_TX_EMPTY_CTL_IT_SHIFT)
  285. #define UART_THR_INT_FIFO_TSR_EMPTY (UART_SCR_TX_EMPTY_CTL_IT_EMPTY << \
  286. UART_SCR_TX_EMPTY_CTL_IT_SHIFT)
  287. /* Values to control the DMA counter reset features. */
  288. #define UART_DMA_CNTR_NO_RESET_FIFO_RESET (UART_SSR_DMA_COUNTER_RST_MODE0 << \
  289. UART_SSR_DMA_COUNTER_RST_SHIFT)
  290. #define UART_DMA_CNTR_RESET_FIFO_RESET (UART_SSR_DMA_COUNTER_RST_MODE1 << \
  291. UART_SSR_DMA_COUNTER_RST_SHIFT)
  292. /* Values indicating the Falling edge status on RX, CTSn and DSRn pins. */
  293. #define UART_RX_CTS_DSR_NO_FALL_EDGE (UART_SSR_RX_CTS_DSR_WAKE_UP_STS_NONE << \
  294. UART_SSR_RX_CTS_DSR_WAKE_UP_STS_SHIFT)
  295. #define UART_RX_CTS_DSR_FALL_EDGE (UART_SSR_RX_CTS_DSR_WAKE_UP_STS_DETECTED << \
  296. UART_SSR_RX_CTS_DSR_WAKE_UP_STS_SHIFT)
  297. /* Values indicating the filled status of TX FIFO. */
  298. #define UART_TX_FIFO_NOT_FULL (UART_SSR_TX_FIFO_FULL_NOTFULL)
  299. #define UART_TX_FIFO_FULL (UART_SSR_TX_FIFO_FULL_FULL)
  300. /****************************************************************************/
  301. /*
  302. ** Values related to Auxilliary Control Register(ACREG).
  303. */
  304. /* Values to set/clear the SD pin. */
  305. #define UART_SD_PIN_LOW (UART_ACREG_SD_MOD_LOW << \
  306. UART_ACREG_SD_MOD_SHIFT)
  307. #define UART_SD_PIN_HIGH (UART_ACREG_SD_MOD_HIGH << \
  308. UART_ACREG_SD_MOD_SHIFT)
  309. /****************************************************************************/
  310. /*
  311. ** Values controlling System Configuration functions.
  312. */
  313. /* Values controlling Power Management Request/Acknowledgement modes. */
  314. #define UART_IDLEMODE_FORCE_IDLE (UART_SYSC_IDLEMODE_FORCE << \
  315. UART_SYSC_IDLEMODE_SHIFT)
  316. #define UART_IDLEMODE_NO_IDLE (UART_SYSC_IDLEMODE_NOIDLE << \
  317. UART_SYSC_IDLEMODE_SHIFT)
  318. #define UART_IDLEMODE_SMART_IDLE (UART_SYSC_IDLEMODE_SMART << \
  319. UART_SYSC_IDLEMODE_SHIFT)
  320. #define UART_IDLEMODE_SMART_IDLE_WAKEUP (UART_SYSC_IDLEMODE_WAKEUP << \
  321. UART_SYSC_IDLEMODE_SHIFT)
  322. /* Values enabling/disabling WakeUp capability. */
  323. #define UART_WAKEUP_ENABLE (UART_SYSC_ENAWAKEUP_ENABLE << \
  324. UART_SYSC_ENAWAKEUP_SHIFT)
  325. #define UART_WAKEUP_DISABLE (UART_SYSC_ENAWAKEUP_DISABLE << \
  326. UART_SYSC_ENAWAKEUP_SHIFT)
  327. /* Values to enable /disable Autoidle mode. */
  328. #define UART_AUTO_IDLE_MODE_ENABLE (UART_SYSC_AUTOIDLE_ENABLE)
  329. #define UART_AUTO_IDLE_MODE_DISABLE (UART_SYSC_AUTOIDLE_DISABLE)
  330. /****************************************************************************/
  331. /*
  332. ** Values configuring Wake-up modes for the UART in Wake-Up Enable Register.
  333. */
  334. /* Values that enable/disable Wake-Up generation ability for various signals. */
  335. #define UART_WAKEUP_TX_INTERRUPT (UART_WER_EVENT_7_TX_WAKEUP_EN)
  336. #define UART_WAKEUP_RLS_INTERRUPT (UART_WER_EVENT_6_RECEIVER_LINE_STATUS_INTERRUPT)
  337. #define UART_WAKEUP_RHR_INTERRUPT (UART_WER_EVENT_5_RHR_INTERRUPT)
  338. #define UART_WAKEUP_RX_ACTIVITY (UART_WER_EVENT_4_RX_ACTIVITY)
  339. #define UART_WAKEUP_DCD_ACTIVITY (UART_WER_EVENT_3_DCD_CD_ACTIVITY)
  340. #define UART_WAKEUP_RI_ACTIVITY (UART_WER_EVENT_2_RI_ACTIVITY)
  341. #define UART_WAKEUP_DSR_ACTIVITY (UART_WER_EVENT_1_DSR_ACTIVITY)
  342. #define UART_WAKEUP_CTS_ACTIVITY (UART_WER_EVENT_0_CTS_ACTIVITY)
  343. /****************************************************************************/
  344. /*
  345. ** Values indicating the line characteristics of UART Autobauding mode
  346. ** communication.
  347. */
  348. /* Values indicating the parity in UART Autobauding mode. */
  349. #define UART_AUTOBAUD_NO_PARITY (UART_UASR_PARITY_TYPE_NONE << \
  350. UART_UASR_PARITY_TYPE_SHIFT)
  351. #define UART_AUTOBAUD_PARITY_SPACE (UART_UASR_PARITY_TYPE_SPACE << \
  352. UART_UASR_PARITY_TYPE_SHIFT)
  353. #define UART_AUTOBAUD_EVEN_PARITY (UART_UASR_PARITY_TYPE_EVEN << \
  354. UART_UASR_PARITY_TYPE_SHIFT)
  355. #define UART_AUTOBAUD_ODD_PARITY (UART_UASR_PARITY_TYPE_ODD << \
  356. UART_UASR_PARITY_TYPE_SHIFT)
  357. /* Values indicating the word length in UART Autobaud mode. */
  358. #define UART_AUTOBAUD_CHAR_LENGTH_7 (UART_UASR_BIT_BY_CHAR_7BITS << \
  359. UART_UASR_BIT_BY_CHAR_SHIFT)
  360. #define UART_AUTOBAUD_CHAR_LENGTH_8 (UART_UASR_BIT_BY_CHAR_8BITS << \
  361. UART_UASR_BIT_BY_CHAR_SHIFT)
  362. /* Values indicating the baud rate in UART Autobaud mode. */
  363. #define UART_AUTOBAUD_NO_SPEED_IDEN (UART_UASR_SPEED_NONE)
  364. #define UART_AUTOBAUD_SPEED_115200 (UART_UASR_SPEED_115200)
  365. #define UART_AUTOBAUD_SPEED_57600 (UART_UASR_SPEED_57600)
  366. #define UART_AUTOBAUD_SPEED_38400 (UART_UASR_SPEED_38400)
  367. #define UART_AUTOBAUD_SPEED_28800 (UART_UASR_SPEED_28800)
  368. #define UART_AUTOBAUD_SPEED_19200 (UART_UASR_SPEED_19200)
  369. #define UART_AUTOBAUD_SPEED_14400 (UART_UASR_SPEED_14400)
  370. #define UART_AUTOBAUD_SPEED_9600 (UART_UASR_SPEED_9600)
  371. #define UART_AUTOBAUD_SPEED_4800 (UART_UASR_SPEED_4800)
  372. #define UART_AUTOBAUD_SPEED_2400 (UART_UASR_SPEED_2400)
  373. #define UART_AUTOBAUD_SPEED_1200 (UART_UASR_SPEED_1200)
  374. /****************************************************************************/
  375. /*
  376. ** Miscellaneous macros.
  377. */
  378. /*
  379. ** Values used to choose the trigger level granularity.
  380. */
  381. #define UART_TRIG_LVL_GRANULARITY_4 (0x0000)
  382. #define UART_TRIG_LVL_GRANULARITY_1 (0x0001)
  383. /* Values to be used while switching between register configuration modes. */
  384. #define UART_REG_CONFIG_MODE_A (0x0080)
  385. #define UART_REG_CONFIG_MODE_B (0x00BF)
  386. #define UART_REG_OPERATIONAL_MODE (0x007F)
  387. /* Parameterized macro to configure the FIFO settings. */
  388. #define UART_FIFO_CONFIG(txGra, rxGra, txTrig, rxTrig, txClr, rxClr, dmaEnPath, dmaMode) \
  389. ((unsigned int) \
  390. (((txGra & 0xF) << 26) | \
  391. ((rxGra & 0xF) << 22) | \
  392. ((txTrig & 0xFF) << 14) | \
  393. ((rxTrig & 0xFF) << 6) | \
  394. ((txClr & 0x1) << 5) | \
  395. ((rxClr & 0x1) << 4) | \
  396. ((dmaEnPath & 0x1) << 3) | \
  397. (dmaMode & 0x7)))
  398. #define UART_FIFO_CONFIG_TXGRA (0xF << 26)
  399. #define UART_FIFO_CONFIG_RXGRA (0xF << 22)
  400. #define UART_FIFO_CONFIG_TXTRIG (0xFF << 14)
  401. #define UART_FIFO_CONFIG_RXTRIG (0xFF << 6)
  402. #define UART_FIFO_CONFIG_TXCLR (0x1 << 5)
  403. #define UART_FIFO_CONFIG_RXCLR (0x1 << 4)
  404. #define UART_FIFO_CONFIG_DMAENPATH (0x1 << 3)
  405. #define UART_FIFO_CONFIG_DMAMODE (0x7 << 0)
  406. /* Parameterized macro used to determine a value to be written to FCR. */
  407. #define UART_FCR_PROGRAM(rxFIFOTrig, txFIFOTrig, dmaMode, txClr, rxClr, fifoEn) \
  408. ((unsigned int) \
  409. (((rxFIFOTrig & 0x3) << 6) | \
  410. ((txFIFOTrig & 0x3) << 4) | \
  411. ((dmaMode & 0x1) << 3) | \
  412. ((txClr & 0x1) << 2) | \
  413. ((rxClr & 0x1) << 1) | \
  414. (fifoEn & 0x1)))
  415. /* Over-sampling rate for MIR mode used to obtain the Divisor Values. */
  416. #define UART_MIR_OVERSAMPLING_RATE_41 (41)
  417. #define UART_MIR_OVERSAMPLING_RATE_42 (42)
  418. /******************************************************************************
  419. ** FUNCTION PROTOTYPES
  420. ******************************************************************************/
  421. /* APIs pertaining to UART. */
  422. extern unsigned int UARTOperatingModeSelect(unsigned int baseAdd,
  423. unsigned int modeFlag);
  424. extern unsigned int UARTDivisorValCompute(unsigned int moduleClk,
  425. unsigned int baudRate,
  426. unsigned int modeFlag,
  427. unsigned int mirOverSampRate);
  428. extern unsigned int UARTDivisorLatchWrite(unsigned int baseAdd,
  429. unsigned int divisorValue);
  430. extern void UARTDivisorLatchEnable(unsigned int baseAdd);
  431. extern void UARTDivisorLatchDisable(unsigned int baseAdd);
  432. extern unsigned int UARTRegConfigModeEnable(unsigned int baseAdd,
  433. unsigned int modeFlag);
  434. extern void UARTRegConfModeRestore(unsigned int baseAdd,
  435. unsigned int lcrRegValue);
  436. extern void UARTBreakCtl(unsigned int baseAdd, unsigned int breakState);
  437. extern void UARTLineCharacConfig(unsigned int baseAdd,
  438. unsigned int wLenStbFlag,
  439. unsigned int parityFlag);
  440. extern void UARTParityModeSet(unsigned int baseAdd, unsigned int parityFlag);
  441. extern unsigned int UARTParityModeGet(unsigned int baseAdd);
  442. extern void UARTDMAEnable(unsigned int baseAdd, unsigned int dmaModeFlag);
  443. extern void UARTDMADisable(unsigned int baseAdd);
  444. extern unsigned int UARTFIFOConfig(unsigned int baseAdd,
  445. unsigned int fifoConfig);
  446. extern unsigned int UARTEnhanFuncEnable(unsigned int baseAdd);
  447. extern void UARTEnhanFuncBitValRestore(unsigned int baseAdd,
  448. unsigned int enhanFnBitVal);
  449. extern unsigned int UARTSubConfigMSRSPRModeEn(unsigned int baseAdd);
  450. extern unsigned int UARTSubConfigTCRTLRModeEn(unsigned int baseAdd);
  451. extern unsigned int UARTSubConfigXOFFModeEn(unsigned int baseAdd);
  452. extern void UARTTCRTLRBitValRestore(unsigned int baseAdd,
  453. unsigned int tcrTlrBitVal);
  454. extern void UARTIntEnable(unsigned int baseAdd, unsigned int intFlag);
  455. extern void UARTIntDisable(unsigned int baseAdd, unsigned int intFlag);
  456. extern unsigned int UARTSpaceAvail(unsigned int baseAdd);
  457. extern unsigned int UARTCharsAvail(unsigned int baseAdd);
  458. extern unsigned int UARTCharPutNonBlocking(unsigned int baseAdd,
  459. unsigned char byteWrite);
  460. extern signed char UARTCharGetNonBlocking(unsigned int baseAdd);
  461. extern signed char UARTCharGet(unsigned int baseAdd);
  462. extern unsigned char UARTCharGetTimeout(unsigned int baseAdd,
  463. unsigned int timeOutVal);
  464. extern void UARTCharPut(unsigned int baseAdd, unsigned char byteTx);
  465. extern void UARTFIFOCharPut(unsigned int baseAdd, unsigned char byteTx);
  466. extern signed char UARTFIFOCharGet(unsigned int baseAdd);
  467. extern unsigned int UARTFIFOWrite(unsigned int baseAdd, unsigned char *pBuffer,
  468. unsigned int numTxBytes);
  469. extern unsigned int UARTRxErrorGet(unsigned int baseAdd);
  470. extern unsigned int UARTIntIdentityGet(unsigned int baseAdd);
  471. extern unsigned int UARTIntPendingStatusGet(unsigned int baseAdd);
  472. extern unsigned int UARTFIFOEnableStatusGet(unsigned int baseAdd);
  473. extern void UARTAutoRTSAutoCTSControl(unsigned int baseAdd,
  474. unsigned int autoCtsControl,
  475. unsigned int autoRtsControl);
  476. extern void UARTSpecialCharDetectControl(unsigned int baseAdd,
  477. unsigned int controlFlag);
  478. extern void UARTSoftwareFlowCtrlOptSet(unsigned int baseAdd,
  479. unsigned int swFlowCtrl);
  480. extern void UARTPulseShapingControl(unsigned int baseAdd,
  481. unsigned int shapeControl);
  482. extern void UARTModuleReset(unsigned int baseAdd);
  483. extern void UARTIdleModeConfigure(unsigned int baseAdd, unsigned int modeFlag);
  484. extern void UARTWakeUpControl(unsigned int baseAdd, unsigned int controlFlag);
  485. extern void UARTAutoIdleModeControl(unsigned int baseAdd,
  486. unsigned int modeFlag);
  487. extern void UARTFlowCtrlTrigLvlConfig(unsigned int baseAdd,
  488. unsigned int rtsHaltFlag,
  489. unsigned int rtsStartFlag);
  490. extern void UARTXON1XOFF1ValProgram(unsigned int baseAdd,
  491. unsigned char xon1Value,
  492. unsigned char xoff1Value);
  493. extern void UARTXON2XOFF2ValProgram(unsigned int baseAdd,
  494. unsigned char xon2Value,
  495. unsigned char xoff2Value);
  496. extern void UARTXONAnyFeatureControl(unsigned int baseAdd,
  497. unsigned int controlFlag);
  498. extern void UARTLoopbackModeControl(unsigned int baseAdd,
  499. unsigned int controlFlag);
  500. extern void UARTModemControlSet(unsigned int baseAdd, unsigned int modeFlag);
  501. extern void UARTModemControlClear(unsigned int baseAdd, unsigned int modeFlag);
  502. extern unsigned int UARTModemStatusGet(unsigned int baseAdd);
  503. extern unsigned int UARTModemStatusChangeCheck(unsigned int baseAdd);
  504. extern void UARTResumeOperation(unsigned int baseAdd);
  505. extern void UARTWakeUpEventsEnable(unsigned int baseAdd,
  506. unsigned int wakeUpFlag);
  507. extern void UARTWakeUpEventsDisable(unsigned int baseAdd,
  508. unsigned int wakeUpFlag);
  509. extern void UARTFIFOTrigLvlGranControl(unsigned int baseAdd,
  510. unsigned int rxFIFOGranCtrl,
  511. unsigned int txFIFOGranCtrl);
  512. extern void UARTDSRInterruptControl(unsigned int baseAdd,
  513. unsigned int controlFlag);
  514. extern void UARTTxEmptyIntControl(unsigned int baseAdd,
  515. unsigned int controlFlag);
  516. extern void UARTRXCTSDSRWakeUpConfigure(unsigned int baseAdd,
  517. unsigned int wakeUpFlag);
  518. extern unsigned int UARTRXCTSDSRTransitionStatusGet(unsigned int baseAdd);
  519. extern void UARTDMACounterResetControl(unsigned int baseAdd,
  520. unsigned int controlFlag);
  521. extern unsigned int UARTTxFIFOFullStatusGet(unsigned int baseAdd);
  522. extern unsigned int UARTTxFIFOLevelGet(unsigned int baseAdd);
  523. extern unsigned int UARTRxFIFOLevelGet(unsigned int baseAdd);
  524. extern unsigned int UARTAutobaudParityGet(unsigned int baseAdd);
  525. extern unsigned int UARTAutobaudWordLenGet(unsigned int baseAdd);
  526. extern unsigned int UARTAutobaudSpeedGet(unsigned int baseAdd);
  527. extern void UARTScratchPadRegWrite(unsigned int baseAdd,
  528. unsigned int scratchValue);
  529. extern unsigned int UARTScratchPadRegRead(unsigned int baseAdd);
  530. extern unsigned int UARTModuleVersionNumberGet(unsigned int baseAdd);
  531. extern void UARTFIFORegisterWrite(unsigned int baseAdd, unsigned int fcrValue);
  532. extern void UARTTxDMAThresholdControl(unsigned int baseAdd, unsigned int thrsCtrlFlag);
  533. extern void UARTTxDMAThresholdValConfig(unsigned int baseAdd, unsigned int thrsValue);
  534. #ifdef __cplusplus
  535. }
  536. #endif
  537. #endif
  538. /********************************* End of File********************************/