regs-icoll.h 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213
  1. /*
  2. * STMP ICOLL Register Definitions
  3. *
  4. * Copyright (c) 2008 Freescale Semiconductor
  5. * Copyright 2008 Embedded Alley Solutions, Inc All Rights Reserved.
  6. *
  7. * This program is free software; you can redistribute it and/or modify
  8. * it under the terms of the GNU General Public License as published by
  9. * the Free Software Foundation; either version 2 of the License, or
  10. * (at your option) any later version.
  11. *
  12. * This program is distributed in the hope that it will be useful,
  13. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  14. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  15. * GNU General Public License for more details.
  16. *
  17. * You should have received a copy of the GNU General Public License
  18. * along with this program; if not, write to the Free Software
  19. * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  20. */
  21. #ifndef __ARCH_ARM___ICOLL_H
  22. #define __ARCH_ARM___ICOLL_H 1
  23. #include <mach/stmp3xxx_regs.h>
  24. #define REGS_ICOLL_BASE (REGS_BASE + 0x0)
  25. #define REGS_ICOLL_BASE_PHYS (0x80000000)
  26. #define REGS_ICOLL_SIZE 0x00002000
  27. HW_REGISTER(HW_ICOLL_VECTOR, REGS_ICOLL_BASE, 0x00000000)
  28. #define HW_ICOLL_VECTOR_ADDR (REGS_ICOLL_BASE + 0x00000000)
  29. #define BP_ICOLL_VECTOR_IRQVECTOR 2
  30. #define BM_ICOLL_VECTOR_IRQVECTOR 0xFFFFFFFC
  31. #define BF_ICOLL_VECTOR_IRQVECTOR(v) \
  32. (((v) << 2) & BM_ICOLL_VECTOR_IRQVECTOR)
  33. HW_REGISTER_0(HW_ICOLL_LEVELACK, REGS_ICOLL_BASE, 0x00000010)
  34. #define HW_ICOLL_LEVELACK_ADDR (REGS_ICOLL_BASE + 0x00000010)
  35. #define BP_ICOLL_LEVELACK_IRQLEVELACK 0
  36. #define BM_ICOLL_LEVELACK_IRQLEVELACK 0x0000000F
  37. #define BF_ICOLL_LEVELACK_IRQLEVELACK(v) \
  38. (((v) << 0) & BM_ICOLL_LEVELACK_IRQLEVELACK)
  39. #define BV_ICOLL_LEVELACK_IRQLEVELACK__LEVEL0 0x1
  40. #define BV_ICOLL_LEVELACK_IRQLEVELACK__LEVEL1 0x2
  41. #define BV_ICOLL_LEVELACK_IRQLEVELACK__LEVEL2 0x4
  42. #define BV_ICOLL_LEVELACK_IRQLEVELACK__LEVEL3 0x8
  43. HW_REGISTER(HW_ICOLL_CTRL, REGS_ICOLL_BASE, 0x00000020)
  44. #define HW_ICOLL_CTRL_ADDR (REGS_ICOLL_BASE + 0x00000020)
  45. #define BM_ICOLL_CTRL_SFTRST 0x80000000
  46. #define BV_ICOLL_CTRL_SFTRST__RUN 0x0
  47. #define BV_ICOLL_CTRL_SFTRST__IN_RESET 0x1
  48. #define BM_ICOLL_CTRL_CLKGATE 0x40000000
  49. #define BV_ICOLL_CTRL_CLKGATE__RUN 0x0
  50. #define BV_ICOLL_CTRL_CLKGATE__NO_CLOCKS 0x1
  51. #define BP_ICOLL_CTRL_VECTOR_PITCH 21
  52. #define BM_ICOLL_CTRL_VECTOR_PITCH 0x00E00000
  53. #define BF_ICOLL_CTRL_VECTOR_PITCH(v) \
  54. (((v) << 21) & BM_ICOLL_CTRL_VECTOR_PITCH)
  55. #define BV_ICOLL_CTRL_VECTOR_PITCH__DEFAULT_BY4 0x0
  56. #define BV_ICOLL_CTRL_VECTOR_PITCH__BY4 0x1
  57. #define BV_ICOLL_CTRL_VECTOR_PITCH__BY8 0x2
  58. #define BV_ICOLL_CTRL_VECTOR_PITCH__BY12 0x3
  59. #define BV_ICOLL_CTRL_VECTOR_PITCH__BY16 0x4
  60. #define BV_ICOLL_CTRL_VECTOR_PITCH__BY20 0x5
  61. #define BV_ICOLL_CTRL_VECTOR_PITCH__BY24 0x6
  62. #define BV_ICOLL_CTRL_VECTOR_PITCH__BY28 0x7
  63. #define BM_ICOLL_CTRL_BYPASS_FSM 0x00100000
  64. #define BV_ICOLL_CTRL_BYPASS_FSM__NORMAL 0x0
  65. #define BV_ICOLL_CTRL_BYPASS_FSM__BYPASS 0x1
  66. #define BM_ICOLL_CTRL_NO_NESTING 0x00080000
  67. #define BV_ICOLL_CTRL_NO_NESTING__NORMAL 0x0
  68. #define BV_ICOLL_CTRL_NO_NESTING__NO_NEST 0x1
  69. #define BM_ICOLL_CTRL_ARM_RSE_MODE 0x00040000
  70. #define BM_ICOLL_CTRL_FIQ_FINAL_ENABLE 0x00020000
  71. #define BV_ICOLL_CTRL_FIQ_FINAL_ENABLE__DISABLE 0x0
  72. #define BV_ICOLL_CTRL_FIQ_FINAL_ENABLE__ENABLE 0x1
  73. #define BM_ICOLL_CTRL_IRQ_FINAL_ENABLE 0x00010000
  74. #define BV_ICOLL_CTRL_IRQ_FINAL_ENABLE__DISABLE 0x0
  75. #define BV_ICOLL_CTRL_IRQ_FINAL_ENABLE__ENABLE 0x1
  76. HW_REGISTER(HW_ICOLL_VBASE, REGS_ICOLL_BASE, 0x00000040)
  77. #define HW_ICOLL_VBASE_ADDR (REGS_ICOLL_BASE + 0x00000040)
  78. #define BP_ICOLL_VBASE_TABLE_ADDRESS 2
  79. #define BM_ICOLL_VBASE_TABLE_ADDRESS 0xFFFFFFFC
  80. #define BF_ICOLL_VBASE_TABLE_ADDRESS(v) \
  81. (((v) << 2) & BM_ICOLL_VBASE_TABLE_ADDRESS)
  82. HW_REGISTER_0(HW_ICOLL_STAT, REGS_ICOLL_BASE, 0x00000070)
  83. #define HW_ICOLL_STAT_ADDR (REGS_ICOLL_BASE + 0x00000070)
  84. #define BP_ICOLL_STAT_VECTOR_NUMBER 0
  85. #define BM_ICOLL_STAT_VECTOR_NUMBER 0x0000007F
  86. #define BF_ICOLL_STAT_VECTOR_NUMBER(v) \
  87. (((v) << 0) & BM_ICOLL_STAT_VECTOR_NUMBER)
  88. /*
  89. * multi-register-define name HW_ICOLL_RAWn
  90. * base 0x000000A0
  91. * count 4
  92. * offset 0x10
  93. */
  94. HW_REGISTER_0_INDEXED(HW_ICOLL_RAWn, REGS_ICOLL_BASE, 0x000000a0, 0x10)
  95. #define BP_ICOLL_RAWn_RAW_IRQS 0
  96. #define BM_ICOLL_RAWn_RAW_IRQS 0xFFFFFFFF
  97. #define BF_ICOLL_RAWn_RAW_IRQS(v) (v)
  98. /*
  99. * multi-register-define name HW_ICOLL_INTERRUPTn
  100. * base 0x00000120
  101. * count 128
  102. * offset 0x10
  103. */
  104. HW_REGISTER_INDEXED(HW_ICOLL_INTERRUPTn, REGS_ICOLL_BASE, 0x00000120, 0x10)
  105. #define BM_ICOLL_INTERRUPTn_ENFIQ 0x00000010
  106. #define BV_ICOLL_INTERRUPTn_ENFIQ__DISABLE 0x0
  107. #define BV_ICOLL_INTERRUPTn_ENFIQ__ENABLE 0x1
  108. #define BM_ICOLL_INTERRUPTn_SOFTIRQ 0x00000008
  109. #define BV_ICOLL_INTERRUPTn_SOFTIRQ__NO_INTERRUPT 0x0
  110. #define BV_ICOLL_INTERRUPTn_SOFTIRQ__FORCE_INTERRUPT 0x1
  111. #define BM_ICOLL_INTERRUPTn_ENABLE 0x00000004
  112. #define BV_ICOLL_INTERRUPTn_ENABLE__DISABLE 0x0
  113. #define BV_ICOLL_INTERRUPTn_ENABLE__ENABLE 0x1
  114. #define BP_ICOLL_INTERRUPTn_PRIORITY 0
  115. #define BM_ICOLL_INTERRUPTn_PRIORITY 0x00000003
  116. #define BF_ICOLL_INTERRUPTn_PRIORITY(v) \
  117. (((v) << 0) & BM_ICOLL_INTERRUPTn_PRIORITY)
  118. #define BV_ICOLL_INTERRUPTn_PRIORITY__LEVEL0 0x0
  119. #define BV_ICOLL_INTERRUPTn_PRIORITY__LEVEL1 0x1
  120. #define BV_ICOLL_INTERRUPTn_PRIORITY__LEVEL2 0x2
  121. #define BV_ICOLL_INTERRUPTn_PRIORITY__LEVEL3 0x3
  122. HW_REGISTER(HW_ICOLL_DEBUG, REGS_ICOLL_BASE, 0x00001120)
  123. #define HW_ICOLL_DEBUG_ADDR (REGS_ICOLL_BASE + 0x00001120)
  124. #define BP_ICOLL_DEBUG_INSERVICE 28
  125. #define BM_ICOLL_DEBUG_INSERVICE 0xF0000000
  126. #define BF_ICOLL_DEBUG_INSERVICE(v) \
  127. (((v) << 28) & BM_ICOLL_DEBUG_INSERVICE)
  128. #define BV_ICOLL_DEBUG_INSERVICE__LEVEL0 0x1
  129. #define BV_ICOLL_DEBUG_INSERVICE__LEVEL1 0x2
  130. #define BV_ICOLL_DEBUG_INSERVICE__LEVEL2 0x4
  131. #define BV_ICOLL_DEBUG_INSERVICE__LEVEL3 0x8
  132. #define BP_ICOLL_DEBUG_LEVEL_REQUESTS 24
  133. #define BM_ICOLL_DEBUG_LEVEL_REQUESTS 0x0F000000
  134. #define BF_ICOLL_DEBUG_LEVEL_REQUESTS(v) \
  135. (((v) << 24) & BM_ICOLL_DEBUG_LEVEL_REQUESTS)
  136. #define BV_ICOLL_DEBUG_LEVEL_REQUESTS__LEVEL0 0x1
  137. #define BV_ICOLL_DEBUG_LEVEL_REQUESTS__LEVEL1 0x2
  138. #define BV_ICOLL_DEBUG_LEVEL_REQUESTS__LEVEL2 0x4
  139. #define BV_ICOLL_DEBUG_LEVEL_REQUESTS__LEVEL3 0x8
  140. #define BP_ICOLL_DEBUG_REQUESTS_BY_LEVEL 20
  141. #define BM_ICOLL_DEBUG_REQUESTS_BY_LEVEL 0x00F00000
  142. #define BF_ICOLL_DEBUG_REQUESTS_BY_LEVEL(v) \
  143. (((v) << 20) & BM_ICOLL_DEBUG_REQUESTS_BY_LEVEL)
  144. #define BV_ICOLL_DEBUG_REQUESTS_BY_LEVEL__LEVEL0 0x1
  145. #define BV_ICOLL_DEBUG_REQUESTS_BY_LEVEL__LEVEL1 0x2
  146. #define BV_ICOLL_DEBUG_REQUESTS_BY_LEVEL__LEVEL2 0x4
  147. #define BV_ICOLL_DEBUG_REQUESTS_BY_LEVEL__LEVEL3 0x8
  148. #define BM_ICOLL_DEBUG_FIQ 0x00020000
  149. #define BV_ICOLL_DEBUG_FIQ__NO_FIQ_REQUESTED 0x0
  150. #define BV_ICOLL_DEBUG_FIQ__FIQ_REQUESTED 0x1
  151. #define BM_ICOLL_DEBUG_IRQ 0x00010000
  152. #define BV_ICOLL_DEBUG_IRQ__NO_IRQ_REQUESTED 0x0
  153. #define BV_ICOLL_DEBUG_IRQ__IRQ_REQUESTED 0x1
  154. #define BP_ICOLL_DEBUG_VECTOR_FSM 0
  155. #define BM_ICOLL_DEBUG_VECTOR_FSM 0x000003FF
  156. #define BF_ICOLL_DEBUG_VECTOR_FSM(v) \
  157. (((v) << 0) & BM_ICOLL_DEBUG_VECTOR_FSM)
  158. #define BV_ICOLL_DEBUG_VECTOR_FSM__FSM_IDLE 0x000
  159. #define BV_ICOLL_DEBUG_VECTOR_FSM__FSM_MULTICYCLE1 0x001
  160. #define BV_ICOLL_DEBUG_VECTOR_FSM__FSM_MULTICYCLE2 0x002
  161. #define BV_ICOLL_DEBUG_VECTOR_FSM__FSM_PENDING 0x004
  162. #define BV_ICOLL_DEBUG_VECTOR_FSM__FSM_MULTICYCLE3 0x008
  163. #define BV_ICOLL_DEBUG_VECTOR_FSM__FSM_MULTICYCLE4 0x010
  164. #define BV_ICOLL_DEBUG_VECTOR_FSM__FSM_ISR_RUNNING1 0x020
  165. #define BV_ICOLL_DEBUG_VECTOR_FSM__FSM_ISR_RUNNING2 0x040
  166. #define BV_ICOLL_DEBUG_VECTOR_FSM__FSM_ISR_RUNNING3 0x080
  167. #define BV_ICOLL_DEBUG_VECTOR_FSM__FSM_MULTICYCLE5 0x100
  168. #define BV_ICOLL_DEBUG_VECTOR_FSM__FSM_MULTICYCLE6 0x200
  169. HW_REGISTER(HW_ICOLL_DBGREAD0, REGS_ICOLL_BASE, 0x00001130)
  170. #define HW_ICOLL_DBGREAD0_ADDR (REGS_ICOLL_BASE + 0x00001130)
  171. #define BP_ICOLL_DBGREAD0_VALUE 0
  172. #define BM_ICOLL_DBGREAD0_VALUE 0xFFFFFFFF
  173. #define BF_ICOLL_DBGREAD0_VALUE(v) (v)
  174. HW_REGISTER(HW_ICOLL_DBGREAD1, REGS_ICOLL_BASE, 0x00001140)
  175. #define HW_ICOLL_DBGREAD1_ADDR (REGS_ICOLL_BASE + 0x00001140)
  176. #define BP_ICOLL_DBGREAD1_VALUE 0
  177. #define BM_ICOLL_DBGREAD1_VALUE 0xFFFFFFFF
  178. #define BF_ICOLL_DBGREAD1_VALUE(v) (v)
  179. HW_REGISTER(HW_ICOLL_DBGFLAG, REGS_ICOLL_BASE, 0x00001150)
  180. #define HW_ICOLL_DBGFLAG_ADDR (REGS_ICOLL_BASE + 0x00001150)
  181. #define BP_ICOLL_DBGFLAG_FLAG 0
  182. #define BM_ICOLL_DBGFLAG_FLAG 0x0000FFFF
  183. #define BF_ICOLL_DBGFLAG_FLAG(v) \
  184. (((v) << 0) & BM_ICOLL_DBGFLAG_FLAG)
  185. /*
  186. * multi-register-define name HW_ICOLL_DBGREQUESTn
  187. * base 0x00001160
  188. * count 4
  189. * offset 0x10
  190. */
  191. HW_REGISTER_0_INDEXED(HW_ICOLL_DBGREQUESTn, REGS_ICOLL_BASE, 0x00001160,
  192. 0x10)
  193. #define BP_ICOLL_DBGREQUESTn_BITS 0
  194. #define BM_ICOLL_DBGREQUESTn_BITS 0xFFFFFFFF
  195. #define BF_ICOLL_DBGREQUESTn_BITS(v) (v)
  196. HW_REGISTER_0(HW_ICOLL_VERSION, REGS_ICOLL_BASE, 0x000011e0)
  197. #define HW_ICOLL_VERSION_ADDR (REGS_ICOLL_BASE + 0x000011e0)
  198. #define BP_ICOLL_VERSION_MAJOR 24
  199. #define BM_ICOLL_VERSION_MAJOR 0xFF000000
  200. #define BF_ICOLL_VERSION_MAJOR(v) \
  201. (((v) << 24) & BM_ICOLL_VERSION_MAJOR)
  202. #define BP_ICOLL_VERSION_MINOR 16
  203. #define BM_ICOLL_VERSION_MINOR 0x00FF0000
  204. #define BF_ICOLL_VERSION_MINOR(v) \
  205. (((v) << 16) & BM_ICOLL_VERSION_MINOR)
  206. #define BP_ICOLL_VERSION_STEP 0
  207. #define BM_ICOLL_VERSION_STEP 0x0000FFFF
  208. #define BF_ICOLL_VERSION_STEP(v) \
  209. (((v) << 0) & BM_ICOLL_VERSION_STEP)
  210. #endif /* __ARCH_ARM___ICOLL_H */