am33xx.h 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341
  1. #ifndef __AM33XX_H__
  2. #define __AM33XX_H__
  3. #define REG32(x) (*((volatile unsigned int *)(x)))
  4. #define REG16(x) (*((volatile unsigned short *)(x)))
  5. /** Cache Line size in ARM Cortex-A8. */
  6. #define AM33XX_CACHELINE_SIZE (64)
  7. /** @brief Base address of AINTC memory mapped registers */
  8. #define AM33XX_AINTC_REGS (0x48200000)
  9. /** @brief Base addresses of control module registers */
  10. #define AM33XX_CTLM_REGS (0x44e10000)
  11. /** @brief Base addresses of USB memory mapped registers */
  12. #define AM33XX_USB_0_BASE (0x47401400)
  13. #define AM33XX_USB_1_BASE (0x47401C00)
  14. /** @brief Base addresses of SPI memory mapped registers */
  15. #define AM33XX_SPI_0_REGS (0x48030000)
  16. #define AM33XX_SPI_1_REGS (0x481A0000)
  17. /** @brief Base addresses of GPIO memory mapped registers */
  18. #define AM33XX_GPIO_0_REGS (0x44E07000)
  19. #define AM33XX_GPIO_1_REGS (0x4804C000)
  20. #define AM33XX_GPIO_2_REGS (0x481AC000)
  21. #define AM33XX_GPIO_3_REGS (0x481AE000)
  22. /** @brief Base addresses of DMTIMER memory mapped registers */
  23. #define AM33XX_DMTIMER_0_REGS (0x44E05000)
  24. #define AM33XX_DMTIMER_1_REGS (0x44E31000)
  25. #define AM33XX_DMTIMER_2_REGS (0x48040000)
  26. #define AM33XX_DMTIMER_3_REGS (0x48042000)
  27. #define AM33XX_DMTIMER_4_REGS (0x48044000)
  28. #define AM33XX_DMTIMER_5_REGS (0x48046000)
  29. #define AM33XX_DMTIMER_6_REGS (0x48048000)
  30. #define AM33XX_DMTIMER_7_REGS (0x4804A000)
  31. /** @brief Base address of MMC memory mapped registers */
  32. #define AM33XX_MMCHS_0_REGS (0x48060000)
  33. #define AM33XX_MMCHS_1_REGS (0x481D8000)
  34. #define AM33XX_MMCHS_2_REGS (0x47810000)
  35. /** @brief Base address of GPMC memory mapped registers */
  36. #define AM33XX_GPMC_0_REGS (0x50000000)
  37. /** @brief Base address of GPMC memory mapped registers */
  38. #define AM33XX_ELM_0_REGS (0x48080000)
  39. /** @brief Base address of I2C memory mapped registers */
  40. #define AM33XX_I2C_0_REGS (0x44E0B000)
  41. #define AM33XX_I2C_1_REGS (0x4802A000)
  42. #define AM33XX_I2C_2_REGS (0x4819C000)
  43. /** @brief Base address of WDT memory mapped registers */
  44. #define AM33XX_WDT_0_REGS (0x44E33000)
  45. #define AM33XX_WDT_1_REGS (0x44E35000)
  46. /** @brief Base address of WDT memory mapped registers */
  47. #define AM33XX_CPSW_SS_REGS (0x4A100000)
  48. #define AM33XX_CPSW_MDIO_REGS (0x4A101000)
  49. #define AM33XX_CPSW_WR_REGS (0x4A101200)
  50. #define AM33XX_CPSW_CPDMA_REGS (0x4A100800)
  51. #define AM33XX_CPSW_ALE_REGS (0x4A100D00)
  52. #define AM33XX_CPSW_STAT_REGS (0x4A100900)
  53. #define AM33XX_CPSW_PORT_0_REGS (0x4A100100)
  54. #define AM33XX_CPSW_PORT_1_REGS (0x4A100200)
  55. #define AM33XX_CPSW_SLIVER_1_REGS (0x4A100D80)
  56. #define AM33XX_CPSW_PORT_2_REGS (0x4A100300)
  57. #define AM33XX_CPSW_SLIVER_2_REGS (0x4A100DC0)
  58. #define AM33XX_CPSW_CPPI_RAM_REGS (0x4A102000)
  59. /** @brief Base address of McASP memory mapped registers */
  60. #define AM33XX_MCASP_1_CTRL_REGS (0x4803C000)
  61. #define AM33XX_MCASP_1_FIFO_REGS (AM33XX_MCASP_1_CTRL_REGS + 0x1000)
  62. #define AM33XX_MCASP_1_DATA_REGS (0x46400000)
  63. /** @brief Base address of EMIF memory mapped registers */
  64. #define AM33XX_EMIF_0_REGS (0x4C000000)
  65. /** @brief Base addresses of RTC memory mapped registers */
  66. #define AM33XX_RTC_0_REGS (0x44E3E000)
  67. #define CM_PER(base) ((base) + 0)
  68. #define CM_PER_L4LS_CLKSTCTRL(base) (CM_PER(base) + 0)
  69. #define CM_PER_UART1_CLKCTRL(base) (CM_PER(base) + 0x6C)
  70. #define CM_PER_UART2_CLKCTRL(base) (CM_PER(base) + 0x70)
  71. #define CM_PER_UART3_CLKCTRL(base) (CM_PER(base) + 0x74)
  72. #define CM_PER_UART4_CLKCTRL(base) (CM_PER(base) + 0x78)
  73. #define CM_PER_UART5_CLKCTRL(base) (CM_PER(base) + 0x38)
  74. #define CM_WKUP(base) ((base) + 0x400)
  75. #define CM_DPLL(base) ((base) + 0x500)
  76. #define CM_MPU(base) ((base) + 0x600)
  77. #define CM_DEVICE(base) ((base) + 0x700)
  78. #define CM_RTC(base) ((base) + 0x800)
  79. #define CM_GFX(base) ((base) + 0x900)
  80. #define CM_CEFUSE(base) ((base) + 0xA00)
  81. #define OCP_AM33XXKET_RAM(base) ((base) + 0xB00)
  82. #define PRM_PER(base) ((base) + 0xC00)
  83. #define PRM_PER_PWRSTST(base) (PRM_PER(base) + 0x008)
  84. #define PRM_PER_PWRSTCTRL(base) (PRM_PER(base) + 0x00C)
  85. #define PRM_WKUP(base) ((base) + 0xD00)
  86. #define PRM_MPU(base) ((base) + 0xE00)
  87. #define PRM_DEVICE(base) ((base) + 0xF00)
  88. #define PRM_RTC(base) ((base) + 0x1000)
  89. #define PRM_GFX(base) ((base) + 0x1100)
  90. #define PRM_CEFUSE(base) ((base) + 0x1200)
  91. /** @brief Base addresses of PRCM memory mapped registers */
  92. #define AM33XX_PRCM_REGS (0x44E00000)
  93. #define AM33XX_CM_PER_REGS CM_PER(AM33XX_PRCM_REGS)
  94. #define AM33XX_CM_WKUP_REGS CM_WKUP(AM33XX_PRCM_REGS)
  95. #define AM33XX_CM_DPLL_REGS CM_DPLL(AM33XX_PRCM_REGS)
  96. #define AM33XX_CM_MPU_REGS CM_MPU(AM33XX_PRCM_REGS)
  97. #define AM33XX_CM_DEVICE_REGS CM_DEVICE(AM33XX_PRCM_REGS)
  98. #define AM33XX_CM_RTC_REGS CM_RTC(AM33XX_PRCM_REGS)
  99. #define AM33XX_CM_GFX_REGS CM_GFX(AM33XX_PRCM_REGS)
  100. #define AM33XX_CM_CEFUSE_REGS CM_CEFUSE(AM33XX_PRCM_REGS)
  101. #define AM33XX_OCP_AM33XXKET_RAM_REGS OCP_AM33XXKET_RAM(AM33XX_PRCM_REGS)
  102. #define AM33XX_PRM_PER_REGS PRM_PER(AM33XX_PRCM_REGS)
  103. #define AM33XX_PRM_WKUP_REGS PRM_WKUP(AM33XX_PRCM_REGS)
  104. #define AM33XX_PRM_MPU_REGS PRM_MPU(AM33XX_PRCM_REGS)
  105. #define AM33XX_PRM_DEVICE_REGS PRM_DEVICE(AM33XX_PRCM_REGS)
  106. #define AM33XX_PRM_RTC_REGS PRM_RTC(AM33XX_PRCM_REGS)
  107. #define AM33XX_PRM_GFX_REGS PRM_GFX(AM33XX_PRCM_REGS)
  108. #define AM33XX_PRM_CEFUSE_REGS PRM_CEFUSE(AM33XX_PRCM_REGS)
  109. /** @brief Base address of control module memory mapped registers */
  110. #define AM33XX_CONTROL_REGS (0x44E10000)
  111. /** @brief Base address of Channel controller memory mapped registers */
  112. #define AM33XX_EDMA30CC_0_REGS (0x49000000)
  113. /** @brief Base address of DCAN module memory mapped registers */
  114. #define AM33XX_DCAN_0_REGS (0x481CC000)
  115. #define AM33XX_DCAN_1_REGS (0x481D0000)
  116. /******************************************************************************\
  117. * Parameterizable Configuration:- These are fed directly from the RTL
  118. * parameters for the given AM33XX
  119. \******************************************************************************/
  120. #define TPCC_MUX(n) 0xF90 + ((n) * 4)
  121. #define AM33XX_LCDC_0_REGS 0x4830E000
  122. #define AM33XX_ADC_TSC_0_REGS 0x44E0D000
  123. /** @brief Base addresses of PWMSS memory mapped registers. */
  124. #define AM33XX_PWMSS0_REGS (0x48300000)
  125. #define AM33XX_PWMSS1_REGS (0x48302000)
  126. #define AM33XX_PWMSS2_REGS (0x48304000)
  127. #define AM33XX_ECAP_REGS (0x00000100)
  128. #define AM33XX_EQEP_REGS (0x00000180)
  129. #define AM33XX_EPWM_REGS (0x00000200)
  130. #define AM33XX_ECAP_0_REGS (AM33XX_PWMSS0_REGS + AM33XX_ECAP_REGS)
  131. #define AM33XX_ECAP_1_REGS (AM33XX_PWMSS1_REGS + AM33XX_ECAP_REGS)
  132. #define AM33XX_ECAP_2_REGS (AM33XX_PWMSS2_REGS + AM33XX_ECAP_REGS)
  133. #define AM33XX_EQEP_0_REGS (AM33XX_PWMSS0_REGS + AM33XX_EQEP_REGS)
  134. #define AM33XX_EQEP_1_REGS (AM33XX_PWMSS1_REGS + AM33XX_EQEP_REGS)
  135. #define AM33XX_EQEP_2_REGS (AM33XX_PWMSS2_REGS + AM33XX_EQEP_REGS)
  136. #define AM33XX_EPWM_0_REGS (AM33XX_PWMSS0_REGS + AM33XX_EPWM_REGS)
  137. #define AM33XX_EPWM_1_REGS (AM33XX_PWMSS1_REGS + AM33XX_EPWM_REGS)
  138. #define AM33XX_EPWM_2_REGS (AM33XX_PWMSS2_REGS + AM33XX_EPWM_REGS)
  139. #define AM33XX_EPWM_MODULE_FREQ 100
  140. /* PRCM registers */
  141. #define CM_PER_L4LS_CLKSTCTRL_REG(base) REG32((base) + 0x0)
  142. #define CM_PER_UART1_CLKCTRL_REG(base) REG32(CM_PER_UART1_CLKCTRL(base))
  143. #define CM_PER_UART2_CLKCTRL_REG(base) REG32(CM_PER_UART2_CLKCTRL(base))
  144. #define CM_PER_UART3_CLKCTRL_REG(base) REG32(CM_PER_UART3_CLKCTRL(base))
  145. #define CM_PER_UART4_CLKCTRL_REG(base) REG32(CM_PER_UART4_CLKCTRL(base))
  146. #define CM_PER_UART5_CLKCTRL_REG(base) REG32(CM_PER_UART5_CLKCTRL(base))
  147. #define CM_PER_TIMER7_CLKCTRL(base) REG32((base) + 0x7C)
  148. #define CM_PER_TIMER2_CLKCTRL(base) REG32((base) + 0x80)
  149. #define PRM_PER_PWRSTST_REG(base) REG32(PRM_PER_PWRSTST(base))
  150. #define PRM_PER_PWRSTCTRL_REG(base) REG32(PRM_PER_PWRSTCTRL(base))
  151. #define CM_DPLL_CLKSEL_TIMER7_CLK(base) REG32(CM_DPLL(base) + 0x4)
  152. #define CM_DPLL_CLKSEL_TIMER2_CLK(base) REG32(CM_DPLL(base) + 0x8)
  153. /* timer registers */
  154. #define DMTIMER_TIDR(base) REG32(base + 0x0)
  155. #define DMTIMER_TIOCP_CFG(base) REG32(base + 0x10)
  156. #define DMTIMER_IRQ_EOI(base) REG32(base + 0x20)
  157. #define DMTIMER_IRQSTATUS_RAW(base) REG32(base + 0x24)
  158. #define DMTIMER_IRQSTATUS(base) REG32(base + 0x28)
  159. #define DMTIMER_IRQENABLE_SET(base) REG32(base + 0x2C)
  160. #define DMTIMER_IRQENABLE_CLR(base) REG32(base + 0x30)
  161. #define DMTIMER_IRQWAKEEN(base) REG32(base + 0x34)
  162. #define DMTIMER_TCLR(base) REG32(base + 0x38)
  163. #define DMTIMER_TCRR(base) REG32(base + 0x3C)
  164. #define DMTIMER_TLDR(base) REG32(base + 0x40)
  165. #define DMTIMER_TTGR(base) REG32(base + 0x44)
  166. #define DMTIMER_TWPS(base) REG32(base + 0x48)
  167. #define DMTIMER_TMAR(base) REG32(base + 0x4C)
  168. #define DMTIMER_TCAR(base, n) REG32(base + 0x50 + (((n) - 1) * 8))
  169. #define DMTIMER_TSICR(base) REG32(base + 0x54)
  170. #define EMU_INT 0
  171. #define COMMTX_INT 1
  172. #define COMMRX_INT 2
  173. #define BENCH_INT 3
  174. #define ELM_IRQ_INT 4
  175. #define NMI_INT 7
  176. #define L3DEBUG_INT 9
  177. #define L3APP_INT 10
  178. #define PRCM_INT 11
  179. #define EDMACOMP_INT 12
  180. #define EDMAMPERR_INT 13
  181. #define EDMAERR_INT 14
  182. #define ADC_TSC_GEN_INT 16
  183. #define USBSS_INT 17
  184. #define USB_INT0 18
  185. #define USB_INT1 19
  186. #define PRU_ICSS_EVTOUT0_INT 20
  187. #define PRU_ICSS_EVTOUT1_INT 21
  188. #define PRU_ICSS_EVTOUT2_INT 22
  189. #define PRU_ICSS_EVTOUT3_INT 23
  190. #define PRU_ICSS_EVTOUT4_INT 24
  191. #define PRU_ICSS_EVTOUT5_INT 25
  192. #define PRU_ICSS_EVTOUT6_INT 26
  193. #define PRU_ICSS_EVTOUT7_INT 27
  194. #define MMCSD1_INT 28
  195. #define MMCSD2_INT 29
  196. #define I2C2_INT 30
  197. #define ECAP0_INT 31
  198. #define GPIO_INT2A 32
  199. #define GPIO_INT2B 33
  200. #define USBWAKEUP_INT 34
  201. #define LCDC_INT 36
  202. #define GFX_INT 37
  203. #define EPWM2_INT 39
  204. #define CPSW_RXTHR0_INT 40
  205. #define CPSW_RX_INT0 41
  206. #define CPSW_TX_INT0 42
  207. #define CPSW_MISC0_INT 43
  208. #define UART3_INT 44
  209. #define UART4_INT 45
  210. #define UART5_INT 46
  211. #define ECAP1_INT 47
  212. #define DCAN0_INT0 52
  213. #define DCAN0_INT1 53
  214. #define DCAN0_PARITY 54
  215. #define DCAN1_INT0 55
  216. #define DCAN1_INT1 56
  217. #define DCAN1_PARITY 57
  218. #define EPWM0_TZINT 58
  219. #define EPWM1_TZINT 59
  220. #define EPWM2_TZINT 60
  221. #define ECAP2_INT 61
  222. #define GPIO_INT3A 62
  223. #define GPIO_INT3B 63
  224. #define MMCSD0_INT 64
  225. #define MCSPI0_INT 65
  226. #define TINT0 66
  227. #define TINT1_1MS 67
  228. #define TINT2 68
  229. #define TINT3 69
  230. #define I2C0_INT 70
  231. #define I2C1_INT 71
  232. #define UART0_INT 72
  233. #define UART1_INT 73
  234. #define UART2_INT 74
  235. #define RTC_INT 75
  236. #define RTC_ALARM_INT 76
  237. #define MB_INT0 77
  238. #define M3_TXEV 78
  239. #define EQEP0_INT 79
  240. #define MACTX_INT0 80
  241. #define MCARX_INT0 81
  242. #define MCATX_INT1 82
  243. #define MCARX_INT1 83
  244. #define EPWM0_INT 86
  245. #define EPWM1_INT 87
  246. #define EQEP1_INT 88
  247. #define EQEP2_INT 89
  248. #define DMA_INTR_PIN2 90
  249. #define WDT1_INT 91
  250. #define TINT4 92
  251. #define TINT5 93
  252. #define TINT6 94
  253. #define TINT7 95
  254. #define GPIO_INT0A 96
  255. #define GPIO_INT0B 97
  256. #define GPIO_INT1A 98
  257. #define GPIO_INT1B 99
  258. #define GPMC_INT 100
  259. #define DDRERR0 101
  260. #define TCERR_INT0 112
  261. #define TCERR_INT1 113
  262. #define TCERR_INT2 114
  263. #define ADC_TSC_PEN_INT 115
  264. #define SMRFLX_MPU 120
  265. #define SMRFLX_CORE 121
  266. #define DMA_INTR_PIN0 123
  267. #define DMA_INTR_PIN1 124
  268. #define MCSPI1_INT 125
  269. struct rt_hw_register
  270. {
  271. unsigned long r0;
  272. unsigned long r1;
  273. unsigned long r2;
  274. unsigned long r3;
  275. unsigned long r4;
  276. unsigned long r5;
  277. unsigned long r6;
  278. unsigned long r7;
  279. unsigned long r8;
  280. unsigned long r9;
  281. unsigned long r10;
  282. unsigned long fp;
  283. unsigned long ip;
  284. unsigned long sp;
  285. unsigned long lr;
  286. unsigned long pc;
  287. unsigned long cpsr;
  288. unsigned long ORIG_r0;
  289. };
  290. #define USERMODE 0x10
  291. #define FIQMODE 0x11
  292. #define IRQMODE 0x12
  293. #define SVCMODE 0x13
  294. #define ABORTMODE 0x17
  295. #define UNDEFMODE 0x1b
  296. #define MODEMASK 0x1f
  297. #define NOINT 0xc0
  298. #endif