ae210p_defs.h 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306
  1. /*****************************************************************************
  2. *
  3. * Copyright Andes Technology Corporation 2014
  4. * All Rights Reserved.
  5. *
  6. * Revision History:
  7. *
  8. * Jan.11.2014 Created.
  9. ****************************************************************************/
  10. #ifndef __AE210_DEFS_H__
  11. #define __AE210_DEFS_H__
  12. /*****************************************************************************
  13. * AHB_SLAVE_4_7 - AE210P AHB
  14. ****************************************************************************/
  15. /*****************************************************************************
  16. * BMC (APB Decoder)- AE210P AHB
  17. ****************************************************************************/
  18. /*****************************************************************************
  19. * OSC - AE210P OSC
  20. ****************************************************************************/
  21. /* OSC control Register (+0x00) */
  22. #define OSC_CTRL_OVL_SZ_SHIFT 24
  23. #define OSC_CTRL_OVLVALID_SHIFT 31
  24. #define OSC_CTRL_OVL_SZ_MASK 0x07000000
  25. #define OSC_CTRL_OVLVALID_MASK 0x80000000
  26. /* OSC Fixed Region Size Register (+0x04) */
  27. #define OSC_OVLFS_OVL_FSZ_MASK 0x000FFFFF
  28. /* OSC Overlay Region Base Register (+0x08) */
  29. #define OSC_OVLBASE_OVL_BASE_MASK 0x000FFFFF
  30. /* OSC Overlay Region End Register (+0x0C) */
  31. #define OSC_OVLEND_OVL_END_MASK 0x001FFFFF
  32. /*****************************************************************************
  33. * DMAC - AE210P AHB
  34. ****************************************************************************/
  35. /*****************************************************************************
  36. * AHB_SLAVE_0_3 - AE210P AHB
  37. ****************************************************************************/
  38. //TODO
  39. //finish this table
  40. /*****************************************************************************
  41. * APBBR(N/A) - AE210P AHB to APB Bridge
  42. ****************************************************************************/
  43. /*****************************************************************************
  44. * SMU - AE210P Core APB
  45. ****************************************************************************/
  46. /*****************************************************************************
  47. * UARTx - AE210P Core APB
  48. ****************************************************************************/
  49. /* Macros for specifying which UART to use. */
  50. #define UARTC_NUM_DEVICES 2
  51. /* IER Register (+0x04) */
  52. #define UARTC_IER_RDR 0x01 /* Data Ready Enable */
  53. #define UARTC_IER_THRE 0x02 /* THR Empty Enable */
  54. #define UARTC_IER_RLS 0x04 /* Receive Line Status Enable */
  55. #define UARTC_CIER_MS 0x08 /* Modem Staus Enable */
  56. /* IIR Register (+0x08) */
  57. #define UARTC_IIR_NONE 0x01 /* No interrupt pending */
  58. #define UARTC_IIR_RLS 0x06 /* Receive Line Status */
  59. #define UARTC_IIR_RDR 0x04 /* Receive Data Ready */
  60. #define UARTC_IIR_RTO 0x0c /* Receive Time Out */
  61. #define UARTC_IIR_THRE 0x02 /* THR Empty */
  62. #define UARTC_IIR_MODEM 0x00 /* Modem Status */
  63. #define UARTC_IIR_INT_MASK 0x0f /* Initerrupt Status Bits Mask */
  64. #define UARTC_IIR_TFIFO_FULL 0x10 /* TX FIFO full */
  65. #define UARTC_IIR_FIFO_EN 0xc0 /* FIFO mode is enabled, set when FCR[0] is 1 */
  66. /* FCR Register (+0x08) */
  67. #define UARTC_FCR_FIFO_EN 0x01 /* FIFO Enable */
  68. #define UARTC_FCR_RFIFO_RESET 0x02 /* Rx FIFO Reset */
  69. #define UARTC_FCR_TFIFO_RESET 0x04 /* Tx FIFO Reset */
  70. #define UARTC_FCR_DMA_EN 0x08 /* Select UART DMA mode */
  71. #define UARTC_FCR_TFIFO16_TRGL1 0x00 /* TX 16-byte FIFO int trigger level - 1 char */
  72. #define UARTC_FCR_TFIFO16_TRGL3 0x10 /* TX 16-byte FIFO int trigger level - 3 char */
  73. #define UARTC_FCR_TFIFO16_TRGL9 0x20 /* TX 16-byte FIFO int trigger level - 9 char */
  74. #define UARTC_FCR_TFIFO16_TRGL13 0x30 /* TX 16-byte FIFO int trigger level - 13 char */
  75. #define UARTC_FCR_RFIFO16_TRGL1 0x00 /* RX 16-byte FIFO int trigger level - 1 char */
  76. #define UARTC_FCR_RFIFO16_TRGL4 0x40 /* RX 16-byte FIFO int trigger level - 4 char */
  77. #define UARTC_FCR_RFIFO16_TRGL8 0x80 /* RX 16-byte FIFO int trigger level - 8 char */
  78. #define UARTC_FCR_RFIFO16_TRGL14 0xc0 /* RX 16-byte FIFO int trigger level - 14 char */
  79. /* FCR Register (+0x08) */
  80. #define UARTC_FCR_FIFO_EN_MASK 0x01 /* FIFO Enable */
  81. #define UARTC_FCR_FIFO_EN_BIT 0
  82. #define UARTC_FCR_RFIFO_RESET_MASK 0x02 /* Rx FIFO Reset */
  83. #define UARTC_FCR_RFIFO_RESET_BIT 1
  84. #define UARTC_FCR_TFIFO_RESET_MASK 0x04 /* Tx FIFO Reset */
  85. #define UARTC_FCR_TFIFO_RESET_BIT 2
  86. #define UARTC_FCR_DMA_EN_MASK 0x08 /* Select UART DMA mode */
  87. #define UARTC_FCR_DMA_EN_BIT 3
  88. #define UARTC_FCR_TXFIFO_TRGL_MASK 0x30 /* TX FIFO int trigger level */
  89. #define UARTC_FCR_TXFIFO_TRGL_SHIFT 4
  90. #define UARTC_FCR_RXFIFO_TRGL_MASK 0xc0 /* RX FIFO int trigger level */
  91. #define UARTC_FCR_RXFIFO_TRGL_SHIFT 6
  92. /* LCR Register (+0x0c) */
  93. #define UARTC_LCR_BITS5 0x00
  94. #define UARTC_LCR_BITS6 0x01
  95. #define UARTC_LCR_BITS7 0x02
  96. #define UARTC_LCR_BITS8 0x03
  97. #define UARTC_LCR_STOP1 0x00
  98. #define UARTC_LCR_STOP2 0x04
  99. #define UARTC_LCR_PARITY_EN 0x08 /* Parity Enable */
  100. #define UARTC_LCR_PARITY_NONE 0x00 /* No Parity Check */
  101. #define UARTC_LCR_PARITY_EVEN 0x18 /* Even Parity */
  102. #define UARTC_LCR_PARITY_ODD 0x08 /* Odd Parity */
  103. #if 0
  104. #define UARTC_LCR_PARITY_1 0x21 /* 1 Parity Bit */
  105. #define UARTC_LCR_PARITY_0 0x31 /* 0 Parity Bit */
  106. #endif
  107. #define UARTC_LCR_SETBREAK 0x40 /* Set Break condition */
  108. #define UARTC_LCR_DLAB 0x80 /* Divisor Latch Access Bit */
  109. /* MCR Register (+0x10) */
  110. #define UARTC_MCR_DTR 0x01 /* Data Terminal Ready */
  111. #define UARTC_MCR_RTS 0x02 /* Request to Send */
  112. #define UARTC_MCR_OUT1 0x04 /* output1 */
  113. #define UARTC_MCR_OUT2 0x08 /* output2 or global interrupt enable */
  114. #define UARTC_MCR_LPBK 0x10 /* loopback mode */
  115. #define UARTC_MCR_DMAMODE2 0x20 /* DMA mode2 */
  116. #define UARTC_MCR_OUT3 0x40 /* output 3 */
  117. /* LSR Register (+0x14) */
  118. #define UARTC_LSR_RDR 0x1 /* Data Ready */
  119. #define UARTC_LSR_OE 0x2 /* Overrun Error */
  120. #define UARTC_LSR_PE 0x4 /* Parity Error */
  121. #define UARTC_LSR_FE 0x8 /* Framing Error */
  122. #define UARTC_LSR_BI 0x10 /* Break Interrupt */
  123. #define UARTC_LSR_THRE 0x20 /* THR/FIFO Empty */
  124. #define UARTC_LSR_TE 0x40 /* THR/FIFO and TFR Empty */
  125. #define UARTC_LSR_DE 0x80 /* FIFO Data Error */
  126. /* MSR Register (+0x18) */
  127. #define UARTC_MSR_DELTACTS 0x1 /* Delta CTS */
  128. #define UARTC_MSR_DELTADSR 0x2 /* Delta DSR */
  129. #define UARTC_MSR_TERI 0x4 /* Trailing Edge RI */
  130. #define UARTC_MSR_DELTACD 0x8 /* Delta CD */
  131. #define UARTC_MSR_CTS 0x10 /* Clear To Send */
  132. #define UARTC_MSR_DSR 0x20 /* Data Set Ready */
  133. #define UARTC_MSR_RI 0x40 /* Ring Indicator */
  134. #define UARTC_MSR_DCD 0x80 /* Data Carrier Detect */
  135. /* MDR register (+0x20) */
  136. #define UARTC_MDR_MODE_SEL_SHIFT 0
  137. #define UARTC_MDR_SIP_BYCPU_BIT 2
  138. #define UARTC_MDR_FMEND_MD_BIT 3
  139. #define UARTC_MDR_DMA_EN_BIT 4
  140. #define UARTC_MDR_FIR_INV_RX_BIT 5
  141. #define UARTC_MDR_IR_INV_TX_BIT 6
  142. #define UARTC_MDR_MODE_SEL_MASK 0x03
  143. #define UARTC_MDR_SIP_BYCPU_MASK 0x04 /* 0: 1.6us end pulse; 1: depends on ACR[4] */
  144. #define UARTC_MDR_FMEND_MD_MASK 0x08 /* 0: Frame length counter method; 1: Set end of transmission bit method */
  145. #define UARTC_MDR_DMA_EN_MASK 0x10 /* Enable DMA mode. (PIO int should turn off) */
  146. #define UARTC_MDR_FIR_INV_RX_MASK 0x20 /* (FIR only) Invert receiver input signal */
  147. #define UARTC_MDR_IR_INV_TX_MASK 0x40 /* (FIR/SIR) Invert pulse during transmission */
  148. #define UARTC_MDR_MODE_UART 0
  149. #define UARTC_MDR_MODE_SIR 1
  150. #define UARTC_MDR_MODE_FIR 2
  151. /* ACR register (+0x24) */
  152. #define UARTC_ACR_IR_TX_EN 0x01
  153. #define UARTC_ACR_IR_RX_EN 0x02
  154. #define UARTC_ACR_FIR_SETEOT 0x04
  155. /*****************************************************************************
  156. * PIT - AG101 Core APB
  157. ****************************************************************************/
  158. /* Interrupt Enable Register */
  159. #define PIT_CH_NUM_MASK 0x7
  160. /* Channel & Interrupt Enable Reg */
  161. #define PIT_C0_TMR0_EN 0x1
  162. #define PIT_C0_TMR1_EN 0x2
  163. #define PIT_C0_TMR2_EN 0x4
  164. #define PIT_C0_TMR3_EN 0x8
  165. #define PIT_C1_TMR0_EN 0x10
  166. #define PIT_C1_TMR1_EN 0x20
  167. #define PIT_C1_TMR2_EN 0x40
  168. #define PIT_C1_TMR3_EN 0x80
  169. #define PIT_C2_TMR0_EN 0x100
  170. #define PIT_C2_TMR1_EN 0x200
  171. #define PIT_C2_TMR2_EN 0x400
  172. #define PIT_C2_TMR3_EN 0x800
  173. #define PIT_C3_TMR0_EN 0x1000
  174. #define PIT_C3_TMR1_EN 0x2000
  175. #define PIT_C3_TMR2_EN 0x4000
  176. #define PIT_C3_TMR3_EN 0x8000
  177. /* Interrupt Status Register */
  178. /* Clean Timer interrupt pending bit, write 1 clean */
  179. #define PIT_C0_TMR0_PEND_W1C 0x1
  180. #define PIT_C0_TMR1_PEND_W1C 0x2
  181. #define PIT_C0_TMR2_PEND_W1C 0x4
  182. #define PIT_C0_TMR3_PEND_W1C 0x8
  183. #define PIT_C1_TMR0_PEND_W1C 0x10
  184. #define PIT_C1_TMR1_PEND_W1C 0x20
  185. #define PIT_C1_TMR2_PEND_W1C 0x40
  186. #define PIT_C1_TMR3_PEND_W1C 0x80
  187. #define PIT_C2_TMR0_PEND_W1C 0x100
  188. #define PIT_C2_TMR1_PEND_W1C 0x200
  189. #define PIT_C2_TMR2_PEND_W1C 0x400
  190. #define PIT_C2_TMR3_PEND_W1C 0x800
  191. #define PIT_C3_TMR0_PEND_W1C 0x1000
  192. #define PIT_C3_TMR1_PEND_W1C 0x2000
  193. #define PIT_C3_TMR2_PEND_W1C 0x4000
  194. #define PIT_C3_TMR3_PEND_W1C 0x8000
  195. /* channel 0~3 control register */
  196. /* ChClk*/
  197. #define PIT_CH_CTL_APBCLK 0x8
  198. /* ChMode*/
  199. #define PIT_CH_CTL_TMR32 0x1
  200. #define PIT_CH_CTL_TMR16 0x2
  201. #define PIT_CH_CTL_TMR8 0x3
  202. #define PIT_CH_CTL_PWM 0x4
  203. #define PIT_CH_CTL_MIX16 0x6
  204. #define PIT_CH_CTL_MIX8 0x7
  205. /*****************************************************************************
  206. * WDT - AG101 Core APB
  207. ****************************************************************************/
  208. //TODO
  209. //finish this table
  210. /*****************************************************************************
  211. * RTC - AE210P APB
  212. ****************************************************************************/
  213. //TODO
  214. //Finish this table
  215. /*****************************************************************************
  216. * GPIO - AE210P APB
  217. ****************************************************************************/
  218. /*****************************************************************************
  219. * I2C - AG101 Core APB
  220. ****************************************************************************/
  221. /*****************************************************************************
  222. * SPI1 - AG101 Core APB
  223. ****************************************************************************/
  224. /*****************************************************************************
  225. * SPI2 - AG101 Core APB
  226. ****************************************************************************/
  227. /*****************************************************************************
  228. * APB_SLAVE_0_4 - AG101 Core APB
  229. ****************************************************************************/
  230. /*****************************************************************************
  231. * Interface & Definitions
  232. ****************************************************************************/
  233. /* TODO: timer-polling method */
  234. #if (defined(CONFIG_CPU_ICACHE_ENABLE) && defined(CONFIG_CPU_DCACHE_ENABLE))
  235. #define _nds_kwait(count) \
  236. do { \
  237. volatile uint32_t i = 0; \
  238. while (i++ < (uint32_t)(count)) \
  239. ; \
  240. } while(0)
  241. #else
  242. #define _nds_kwait(count) \
  243. do { \
  244. volatile uint32_t i = 0; \
  245. uint32_t c = (count > 0x10) ? count / 0x10 : 0x10; \
  246. while (i++ < (uint32_t)(c)) \
  247. ; \
  248. } while(0)
  249. #endif
  250. #endif /* __AE210P_DEFS_H__ */