jz47xx.h 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263
  1. #ifndef __JZ47XX_H__
  2. #define __JZ47XX_H__
  3. #include "../common/mipsregs.h"
  4. #define __REG8(addr) *((volatile unsigned char *)(addr))
  5. #define __REG16(addr) *((volatile unsigned short *)(addr))
  6. #define __REG32(addr) *((volatile unsigned int *)(addr))
  7. #define HARB_BASE 0xB3000000
  8. #define EMC_BASE 0xB3010000
  9. #define DMAC_BASE 0xB3020000
  10. #define UHC_BASE 0xB3030000
  11. #define UDC_BASE 0xB3040000
  12. #define LCD_BASE 0xB3050000
  13. #define CIM_BASE 0xB3060000
  14. #define ETH_BASE 0xB3100000
  15. #define NBM_BASE 0xB3F00000
  16. #define CPM_BASE 0xB0000000
  17. #define INTC_BASE 0xB0001000
  18. #define TCU_BASE 0xB0002000
  19. #define RTC_BASE 0xB0003000
  20. #define GPIO_BASE 0xB0010000
  21. #define AIC_BASE 0xB0020000
  22. #define MSC_BASE 0xB0021000
  23. #define UART0_BASE 0xB0030000
  24. #define UART1_BASE 0xB0031000
  25. #define UART2_BASE 0xB0032000
  26. #define UART3_BASE 0xB0033000
  27. #define FIR_BASE 0xB0040000
  28. #define SCC_BASE 0xB0041000
  29. #define SCC0_BASE 0xB0041000
  30. #define I2C_BASE 0xB0042000
  31. #define SSI_BASE 0xB0043000
  32. #define SCC1_BASE 0xB0044000
  33. #define PWM0_BASE 0xB0050000
  34. #define PWM1_BASE 0xB0051000
  35. #define DES_BASE 0xB0060000
  36. #define UPRT_BASE 0xB0061000
  37. #define KBC_BASE 0xB0062000
  38. /* CPM Register */
  39. #define CPM_CPCCR __REG32(CPM_BASE + 0x00) /* Clock Control Register */
  40. #define CPM_LCR __REG32(CPM_BASE + 0x04) /* Low Power Control Register */
  41. #define CPM_RSR __REG32(CPM_BASE + 0x08) /* Reset Status Register */
  42. #define CPM_CPPCR __REG32(CPM_BASE + 0x10) /* PLL Control Register */
  43. #define CPM_CPPSR __REG32(CPM_BASE + 0x14) /* PLL Switch and Status Register */
  44. #define CPM_CLKGR __REG32(CPM_BASE + 0x20) /* Clock Gate Register */
  45. #define CPM_OPCR __REG32(CPM_BASE + 0x24) /* Osillator and Power Control Register */
  46. #define CPM_I2SCDR __REG32(CPM_BASE + 0x60) /* I2S Device Clock Divider Register */
  47. #define CPM_LPCDR __REG32(CPM_BASE + 0x64) /* LCD Pixel Clock Divider Register */
  48. #define CPM_MSCCDR __REG32(CPM_BASE + 0x68) /* MSC Clock Divider Register */
  49. #define CPM_SSICDR __REG32(CPM_BASE + 0x74) /* SSI Clock Divider Register */
  50. #define CPM_CIMCDR __REG32(CPM_BASE + 0x7C) /* CIM MCLK Clock Divider Register */
  51. /* Interrupt Controller Regester */
  52. #define INTC_ISR __REG32(INTC_BASE + 0x00)
  53. #define INTC_IMR __REG32(INTC_BASE + 0x04)
  54. #define INTC_IMSR __REG32(INTC_BASE + 0x08)
  55. #define INTC_IMCR __REG32(INTC_BASE + 0x0c)
  56. #define INTC_IPR __REG32(INTC_BASE + 0x10)
  57. /* TCU Register */
  58. #define TCU_TSTR __REG32(TCU_BASE + 0xF0)
  59. #define TCU_TSTSR __REG32(TCU_BASE + 0xF4)
  60. #define TCU_TSTCR __REG32(TCU_BASE + 0xF8)
  61. #define TCU_TSR __REG32(TCU_BASE + 0x1C)
  62. #define TCU_TSSR __REG32(TCU_BASE + 0x2C)
  63. #define TCU_TSCR __REG32(TCU_BASE + 0x3C)
  64. #define TCU_TER __REG32(TCU_BASE + 0x10)
  65. #define TCU_TESR __REG32(TCU_BASE + 0x14)
  66. #define TCU_TECR __REG32(TCU_BASE + 0x18)
  67. #define TCU_TFR __REG32(TCU_BASE + 0x20)
  68. #define TCU_TFSR __REG32(TCU_BASE + 0x24)
  69. #define TCU_TFCR __REG32(TCU_BASE + 0x28)
  70. #define TCU_TMR __REG32(TCU_BASE + 0x30)
  71. #define TCU_TMSR __REG32(TCU_BASE + 0x34)
  72. #define TCU_TMCR __REG32(TCU_BASE + 0x38)
  73. #define TCU_TDFR0_OFFSET 0x40
  74. #define TCU_TDFR(x) __REG16(TCU_BASE + (x) * 0x10 + TCU_TDFR0_OFFSET)
  75. #define TCU_TDHR0_OFFSET 0x44
  76. #define TCU_TDHR(x) __REG16(TCU_BASE + (x) * 0x10 + TCU_TDHR0_OFFSET)
  77. #define TCU_TCNT0_OFFSET 0x48
  78. #define TCU_TCNT(x) __REG16(TCU_BASE + (x) * 0x10 + TCU_TCNT0_OFFSET)
  79. #define TCU_TCSR0_OFFSET 0x4C
  80. #define TCU_TCSR(x) __REG16(TCU_BASE + (x) * 0x10 + TCU_TCSR0_OFFSET)
  81. /* TCU Register Definitions */
  82. #define TCU_TCSR_PWM_SD (1 << 9)
  83. #define TCU_TCSR_PWM_INITL_HIGH (1 << 8)
  84. #define TCU_TCSR_PWM_EN (1 << 7)
  85. #define TCU_TCSR_PRESCALE_BIT 3
  86. #define TCU_TCSR_PRESCALE_MASK (0x7 << TCU_TCSR_PRESCALE_BIT)
  87. #define TCU_TCSR_PRESCALE1 (0x0 << TCU_TCSR_PRESCALE_BIT)
  88. #define TCU_TCSR_PRESCALE4 (0x1 << TCU_TCSR_PRESCALE_BIT)
  89. #define TCU_TCSR_PRESCALE16 (0x2 << TCU_TCSR_PRESCALE_BIT)
  90. #define TCU_TCSR_PRESCALE64 (0x3 << TCU_TCSR_PRESCALE_BIT)
  91. #define TCU_TCSR_PRESCALE256 (0x4 << TCU_TCSR_PRESCALE_BIT)
  92. #define TCU_TCSR_PRESCALE1024 (0x5 << TCU_TCSR_PRESCALE_BIT)
  93. #define TCU_TCSR_EXT_EN (1 << 2)
  94. #define TCU_TCSR_RTC_EN (1 << 1)
  95. #define TCU_TCSR_PCK_EN (1 << 0)
  96. #define TCU_TER_OSTEN (1 << 15)
  97. #define TCU_TER_TCEN5 (1 << 5)
  98. #define TCU_TER_TCEN4 (1 << 4)
  99. #define TCU_TER_TCEN3 (1 << 3)
  100. #define TCU_TER_TCEN2 (1 << 2)
  101. #define TCU_TER_TCEN1 (1 << 1)
  102. #define TCU_TER_TCEN0 (1 << 0)
  103. #define TCU_TESR_OSTST (1 << 15)
  104. #define TCU_TESR_TCST5 (1 << 5)
  105. #define TCU_TESR_TCST4 (1 << 4)
  106. #define TCU_TESR_TCST3 (1 << 3)
  107. #define TCU_TESR_TCST2 (1 << 2)
  108. #define TCU_TESR_TCST1 (1 << 1)
  109. #define TCU_TESR_TCST0 (1 << 0)
  110. #define TCU_TECR_OSTCL (1 << 15)
  111. #define TCU_TECR_TCCL5 (1 << 5)
  112. #define TCU_TECR_TCCL4 (1 << 4)
  113. #define TCU_TECR_TCCL3 (1 << 3)
  114. #define TCU_TECR_TCCL2 (1 << 2)
  115. #define TCU_TECR_TCCL1 (1 << 1)
  116. #define TCU_TECR_TCCL0 (1 << 0)
  117. #define TCU_TFR_HFLAG5 (1 << 21)
  118. #define TCU_TFR_HFLAG4 (1 << 20)
  119. #define TCU_TFR_HFLAG3 (1 << 19)
  120. #define TCU_TFR_HFLAG2 (1 << 18)
  121. #define TCU_TFR_HFLAG1 (1 << 17)
  122. #define TCU_TFR_HFLAG0 (1 << 16)
  123. #define TCU_TFR_FFLAG5 (1 << 5)
  124. #define TCU_TFR_FFLAG4 (1 << 4)
  125. #define TCU_TFR_FFLAG3 (1 << 3)
  126. #define TCU_TFR_FFLAG2 (1 << 2)
  127. #define TCU_TFR_FFLAG1 (1 << 1)
  128. #define TCU_TFR_FFLAG0 (1 << 0)
  129. #define TCU_TFSR_HFLAG5 (1 << 21)
  130. #define TCU_TFSR_HFLAG4 (1 << 20)
  131. #define TCU_TFSR_HFLAG3 (1 << 19)
  132. #define TCU_TFSR_HFLAG2 (1 << 18)
  133. #define TCU_TFSR_HFLAG1 (1 << 17)
  134. #define TCU_TFSR_HFLAG0 (1 << 16)
  135. #define TCU_TFSR_OSTFLAG (1 << 15)
  136. #define TCU_TFSR_FFLAG5 (1 << 5)
  137. #define TCU_TFSR_FFLAG4 (1 << 4)
  138. #define TCU_TFSR_FFLAG3 (1 << 3)
  139. #define TCU_TFSR_FFLAG2 (1 << 2)
  140. #define TCU_TFSR_FFLAG1 (1 << 1)
  141. #define TCU_TFSR_FFLAG0 (1 << 0)
  142. #define TCU_TFCR_HFLAG5 (1 << 21)
  143. #define TCU_TFCR_HFLAG4 (1 << 20)
  144. #define TCU_TFCR_HFLAG3 (1 << 19)
  145. #define TCU_TFCR_HFLAG2 (1 << 18)
  146. #define TCU_TFCR_HFLAG1 (1 << 17)
  147. #define TCU_TFCR_HFLAG0 (1 << 16)
  148. #define TCU_TFCR_OSTFLAG (1 << 15)
  149. #define TCU_TFCR_FFLAG5 (1 << 5)
  150. #define TCU_TFCR_FFLAG4 (1 << 4)
  151. #define TCU_TFCR_FFLAG3 (1 << 3)
  152. #define TCU_TFCR_FFLAG2 (1 << 2)
  153. #define TCU_TFCR_FFLAG1 (1 << 1)
  154. #define TCU_TFCR_FFLAG0 (1 << 0)
  155. #define TCU_TMR_HMASK5 (1 << 21)
  156. #define TCU_TMR_HMASK4 (1 << 20)
  157. #define TCU_TMR_HMASK3 (1 << 19)
  158. #define TCU_TMR_HMASK2 (1 << 18)
  159. #define TCU_TMR_HMASK1 (1 << 17)
  160. #define TCU_TMR_HMASK0 (1 << 16)
  161. #define TCU_TMR_OSTMASK (1 << 15)
  162. #define TCU_TMR_FMASK5 (1 << 5)
  163. #define TCU_TMR_FMASK4 (1 << 4)
  164. #define TCU_TMR_FMASK3 (1 << 3)
  165. #define TCU_TMR_FMASK2 (1 << 2)
  166. #define TCU_TMR_FMASK1 (1 << 1)
  167. #define TCU_TMR_FMASK0 (1 << 0)
  168. #define TCU_TMSR_HMST5 (1 << 21)
  169. #define TCU_TMSR_HMST4 (1 << 20)
  170. #define TCU_TMSR_HMST3 (1 << 19)
  171. #define TCU_TMSR_HMST2 (1 << 18)
  172. #define TCU_TMSR_HMST1 (1 << 17)
  173. #define TCU_TMSR_HMST0 (1 << 16)
  174. #define TCU_TMSR_OSTMST (1 << 15)
  175. #define TCU_TMSR_FMST5 (1 << 5)
  176. #define TCU_TMSR_FMST4 (1 << 4)
  177. #define TCU_TMSR_FMST3 (1 << 3)
  178. #define TCU_TMSR_FMST2 (1 << 2)
  179. #define TCU_TMSR_FMST1 (1 << 1)
  180. #define TCU_TMSR_FMST0 (1 << 0)
  181. #define TCU_TMCR_HMCL5 (1 << 21)
  182. #define TCU_TMCR_HMCL4 (1 << 20)
  183. #define TCU_TMCR_HMCL3 (1 << 19)
  184. #define TCU_TMCR_HMCL2 (1 << 18)
  185. #define TCU_TMCR_HMCL1 (1 << 17)
  186. #define TCU_TMCR_HMCL0 (1 << 16)
  187. #define TCU_TMCR_OSTMCL (1 << 15)
  188. #define TCU_TMCR_FMCL5 (1 << 5)
  189. #define TCU_TMCR_FMCL4 (1 << 4)
  190. #define TCU_TMCR_FMCL3 (1 << 3)
  191. #define TCU_TMCR_FMCL2 (1 << 2)
  192. #define TCU_TMCR_FMCL1 (1 << 1)
  193. #define TCU_TMCR_FMCL0 (1 << 0)
  194. #define TCU_TSR_WDTS (1 << 16)
  195. #define TCU_TSR_STOP5 (1 << 5)
  196. #define TCU_TSR_STOP4 (1 << 4)
  197. #define TCU_TSR_STOP3 (1 << 3)
  198. #define TCU_TSR_STOP2 (1 << 2)
  199. #define TCU_TSR_STOP1 (1 << 1)
  200. #define TCU_TSR_STOP0 (1 << 0)
  201. #define TCU_TSSR_WDTSS (1 << 16)
  202. #define TCU_TSSR_STPS5 (1 << 5)
  203. #define TCU_TSSR_STPS4 (1 << 4)
  204. #define TCU_TSSR_STPS3 (1 << 3)
  205. #define TCU_TSSR_STPS2 (1 << 2)
  206. #define TCU_TSSR_STPS1 (1 << 1)
  207. #define TCU_TSSR_STPS0 (1 << 0)
  208. #define TCU_TSSR_WDTSC (1 << 16)
  209. #define TCU_TSSR_STPC5 (1 << 5)
  210. #define TCU_TSSR_STPC4 (1 << 4)
  211. #define TCU_TSSR_STPC3 (1 << 3)
  212. #define TCU_TSSR_STPC2 (1 << 2)
  213. #define TCU_TSSR_STPC1 (1 << 1)
  214. #define TCU_TSSR_STPC0 (1 << 0)
  215. #define OST_TCSR_CNT_MD ( 1 << 15 )
  216. #define OST_TCSR_PWM_SHUT_ABRUPT ( 1 << 9 )
  217. #define OST_TCSR_PRESCALE1 ( 0x0 << 3)
  218. #define OST_TCSR_PRESCALE4 ( 0x1 << 3)
  219. #define OST_TCSR_PRESCALE16 ( 0x2 << 3)
  220. #define OST_TCSR_PRESCALE64 ( 0x3 << 3)
  221. #define OST_TCSR_PRESCALE256 ( 0x4 << 3)
  222. #define OST_TCSR_PRESCALE1024 ( 0x5 << 3)
  223. /* Uart Register */
  224. #define UART_RDR(base) __REG8((base) + 0x00) /* R 8b H'xx */
  225. #define UART_TDR(base) __REG8((base) + 0x00) /* W 8b H'xx */
  226. #define UART_DLLR(base) __REG8((base) + 0x00) /* RW 8b H'00 */
  227. #define UART_DLHR(base) __REG8((base) + 0x04) /* RW 8b H'00 */
  228. #define UART_IER(base) __REG8((base) + 0x04) /* RW 8b H'00 */
  229. #define UART_ISR(base) __REG8((base) + 0x08) /* R 8b H'01 */
  230. #define UART_FCR(base) __REG8((base) + 0x08) /* W 8b H'00 */
  231. #define UART_LCR(base) __REG8((base) + 0x0C) /* RW 8b H'00 */
  232. #define UART_MCR(base) __REG8((base) + 0x10) /* RW 8b H'00 */
  233. #define UART_LSR(base) __REG8((base) + 0x14) /* R 8b H'00 */
  234. #define UART_MSR(base) __REG8((base) + 0x18) /* R 8b H'00 */
  235. #define UART_SPR(base) __REG8((base) + 0x1C) /* RW 8b H'00 */
  236. #define UART_MCR(base) __REG8((base) + 0x10) /* RW 8b H'00 */
  237. #define UART_SIRCR(base) __REG8((base) + 0x20) /* RW 8b H'00 */
  238. #define SYSTEM_STACK 0x80003fe8 /* the kernel system stack address */
  239. #endif