gic400_reg.h 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422
  1. /* Copyright (C) 2018 RDA Technologies Limited and/or its affiliates("RDA").
  2. * All rights reserved.
  3. *
  4. * This software is supplied "AS IS" without any warranties.
  5. * RDA assumes no responsibility or liability for the use of the software,
  6. * conveys no license or title under any patent, copyright, or mask work
  7. * right to the product. RDA reserves the right to make changes in the
  8. * software without notification. RDA also make no representation or
  9. * warranty that such application will be suitable for the specified use
  10. * without further testing or modification.
  11. */
  12. #ifndef _GIC400_REG_H_
  13. #define _GIC400_REG_H_
  14. // Auto generated by dtools(see dtools.txt for its version).
  15. // Don't edit it manually!
  16. #define REG_GIC400_BASE (0x00800000)
  17. typedef volatile struct
  18. {
  19. uint32_t __0[1024]; // 0x00000000
  20. uint32_t gicd_ctrl; // 0x00001000
  21. uint32_t gicd_typer; // 0x00001004
  22. uint32_t gicd_iddr; // 0x00001008
  23. uint32_t __4108[29]; // 0x0000100c
  24. uint32_t gicd_igrouprn[4]; // 0x00001080
  25. uint32_t __4240[28]; // 0x00001090
  26. uint32_t gicd_isenabler0; // 0x00001100
  27. uint32_t gicd_isenabler1; // 0x00001104
  28. uint32_t gicd_isenabler2; // 0x00001108
  29. uint32_t gicd_isenabler3; // 0x0000110c
  30. uint32_t __4368[28]; // 0x00001110
  31. uint32_t gicd_icenabler0; // 0x00001180
  32. uint32_t gicd_icenabler1; // 0x00001184
  33. uint32_t gicd_icenabler2; // 0x00001188
  34. uint32_t gicd_icenabler3; // 0x0000118c
  35. uint32_t __4496[28]; // 0x00001190
  36. uint32_t gicd_ispendrn[4]; // 0x00001200
  37. uint32_t __4624[28]; // 0x00001210
  38. uint32_t gicd_icpendrn[4]; // 0x00001280
  39. uint32_t __4752[28]; // 0x00001290
  40. uint32_t gicd_isactivern[4]; // 0x00001300
  41. uint32_t __4880[28]; // 0x00001310
  42. uint32_t gicd_icactivern[4]; // 0x00001380
  43. uint32_t __5008[28]; // 0x00001390
  44. uint32_t gicd_ipriorityrn[32]; // 0x00001400
  45. uint32_t __5248[224]; // 0x00001480
  46. uint32_t gicd_itargetsr0; // 0x00001800
  47. uint32_t gicd_itargetsr1; // 0x00001804
  48. uint32_t gicd_itargetsr2; // 0x00001808
  49. uint32_t gicd_itargetsr3; // 0x0000180c
  50. uint32_t gicd_itargetsr4; // 0x00001810
  51. uint32_t gicd_itargetsr5; // 0x00001814
  52. uint32_t gicd_itargetsr6; // 0x00001818
  53. uint32_t gicd_itargetsr7; // 0x0000181c
  54. uint32_t gicd_itargetsr8; // 0x00001820
  55. uint32_t gicd_itargetsr9; // 0x00001824
  56. uint32_t gicd_itargetsr10; // 0x00001828
  57. uint32_t gicd_itargetsr11; // 0x0000182c
  58. uint32_t gicd_itargetsr12; // 0x00001830
  59. uint32_t gicd_itargetsr13; // 0x00001834
  60. uint32_t gicd_itargetsr14; // 0x00001838
  61. uint32_t gicd_itargetsr15; // 0x0000183c
  62. uint32_t gicd_itargetsr16; // 0x00001840
  63. uint32_t gicd_itargetsr17; // 0x00001844
  64. uint32_t gicd_itargetsr18; // 0x00001848
  65. uint32_t gicd_itargetsr19; // 0x0000184c
  66. uint32_t gicd_itargetsr20; // 0x00001850
  67. uint32_t gicd_itargetsr21; // 0x00001854
  68. uint32_t gicd_itargetsr22; // 0x00001858
  69. uint32_t gicd_itargetsr23; // 0x0000185c
  70. uint32_t gicd_itargetsr24; // 0x00001860
  71. uint32_t gicd_itargetsr25; // 0x00001864
  72. uint32_t gicd_itargetsr26; // 0x00001868
  73. uint32_t gicd_itargetsr27; // 0x0000186c
  74. uint32_t gicd_itargetsr28; // 0x00001870
  75. uint32_t gicd_itargetsr29; // 0x00001874
  76. uint32_t gicd_itargetsr30; // 0x00001878
  77. uint32_t gicd_itargetsr31; // 0x0000187c
  78. uint32_t __6272[224]; // 0x00001880
  79. uint32_t gicd_icfgr0; // 0x00001c00
  80. uint32_t gicd_icfgr1; // 0x00001c04
  81. uint32_t gicd_icfgr2; // 0x00001c08
  82. uint32_t gicd_icfgr3; // 0x00001c0c
  83. uint32_t gicd_icfgr4; // 0x00001c10
  84. uint32_t gicd_icfgr5; // 0x00001c14
  85. uint32_t gicd_icfgr6; // 0x00001c18
  86. uint32_t gicd_icfgr7; // 0x00001c1c
  87. uint32_t __7200[56]; // 0x00001c20
  88. uint32_t gicd_ppisr; // 0x00001d00
  89. uint32_t gicd_spisrn[3]; // 0x00001d04
  90. uint32_t __7440[60]; // 0x00001d10
  91. uint32_t gicd_nsacrn[8]; // 0x00001e00
  92. uint32_t __7712[56]; // 0x00001e20
  93. uint32_t gicd_sgir; // 0x00001f00
  94. uint32_t __7940[3]; // 0x00001f04
  95. uint32_t gicd_cpendsgirn[4]; // 0x00001f10
  96. uint32_t gicd_spendsgirn[4]; // 0x00001f20
  97. uint32_t __7984[52]; // 0x00001f30
  98. uint32_t gicc_ctrl; // 0x00002000
  99. uint32_t gicc_pmr; // 0x00002004
  100. uint32_t gicc_bpr; // 0x00002008
  101. uint32_t gicc_iar; // 0x0000200c
  102. uint32_t gicc_eoir; // 0x00002010
  103. uint32_t gicc_rpr; // 0x00002014
  104. uint32_t gicc_hppir; // 0x00002018
  105. uint32_t gicc_abpr; // 0x0000201c
  106. uint32_t gicc_aiar; // 0x00002020
  107. uint32_t gicc_aeoir; // 0x00002024
  108. uint32_t gicc_ahppir; // 0x00002028
  109. uint32_t __8236[41]; // 0x0000202c
  110. uint32_t gicc_aprn; // 0x000020d0
  111. uint32_t __8404[3]; // 0x000020d4
  112. uint32_t gicc_nsaprn; // 0x000020e0
  113. uint32_t __8420[6]; // 0x000020e4
  114. uint32_t gicc_iidr; // 0x000020fc
  115. uint32_t __8448[960]; // 0x00002100
  116. uint32_t gicc_dir; // 0x00003000
  117. } HWP_GIC400_T;
  118. #define hwp_gic400 ((HWP_GIC400_T *)REG_ACCESS_ADDRESS(REG_GIC400_BASE))
  119. // gicd_ctrl
  120. typedef union {
  121. uint32_t v;
  122. struct
  123. {
  124. uint32_t enablegrp0 : 1; // [0]
  125. uint32_t enablegrp1 : 1; // [1]
  126. uint32_t __31_2 : 30; // [31:2]
  127. } b;
  128. } REG_GIC400_GICD_CTRL_T;
  129. // gicd_typer
  130. typedef union {
  131. uint32_t v;
  132. struct
  133. {
  134. uint32_t itlinesnumber : 5; // [4:0], read only
  135. uint32_t cpunumber : 3; // [7:5], read only
  136. uint32_t __9_8 : 2; // [9:8]
  137. uint32_t securityextn : 1; // [10], read only
  138. uint32_t lspi : 5; // [15:11], read only
  139. uint32_t __31_16 : 16; // [31:16]
  140. } b;
  141. } REG_GIC400_GICD_TYPER_T;
  142. // gicd_iddr
  143. typedef union {
  144. uint32_t v;
  145. struct
  146. {
  147. uint32_t implementer : 12; // [11:0], read only
  148. uint32_t revision : 4; // [15:12], read only
  149. uint32_t variant : 4; // [19:16], read only
  150. uint32_t __23_20 : 4; // [23:20]
  151. uint32_t productid : 8; // [31:24], read only
  152. } b;
  153. } REG_GIC400_GICD_IDDR_T;
  154. // gicd_ppisr
  155. typedef union {
  156. uint32_t v;
  157. struct
  158. {
  159. uint32_t __8_0 : 9; // [8:0]
  160. uint32_t ppi_status : 7; // [15:9], read only
  161. uint32_t __31_16 : 16; // [31:16]
  162. } b;
  163. } REG_GIC400_GICD_PPISR_T;
  164. // gicd_sgir
  165. typedef union {
  166. uint32_t v;
  167. struct
  168. {
  169. uint32_t sgiintid : 4; // [3:0]
  170. uint32_t __14_4 : 11; // [14:4]
  171. uint32_t nsatt : 1; // [15]
  172. uint32_t cputargetlist : 8; // [23:16]
  173. uint32_t targetlistfilter : 2; // [25:24]
  174. uint32_t __31_26 : 6; // [31:26]
  175. } b;
  176. } REG_GIC400_GICD_SGIR_T;
  177. // gicc_ctrl
  178. typedef union {
  179. uint32_t v;
  180. struct
  181. {
  182. uint32_t enablegrp0 : 1; // [0]
  183. uint32_t enablegrp1 : 1; // [1]
  184. uint32_t ackctl : 1; // [2]
  185. uint32_t fiqen : 1; // [3]
  186. uint32_t cbpr : 1; // [4]
  187. uint32_t fiqbypdisgrp0 : 1; // [5]
  188. uint32_t irqbypdisgrp0 : 1; // [6]
  189. uint32_t fiqbypdisgrp1 : 1; // [7]
  190. uint32_t irqbypdisgrp1 : 1; // [8]
  191. uint32_t eoimodes : 1; // [9]
  192. uint32_t eoimodens : 1; // [10]
  193. uint32_t __31_11 : 21; // [31:11]
  194. } b;
  195. } REG_GIC400_GICC_CTRL_T;
  196. // gicc_pmr
  197. typedef union {
  198. uint32_t v;
  199. struct
  200. {
  201. uint32_t priority : 8; // [7:0]
  202. uint32_t __31_8 : 24; // [31:8]
  203. } b;
  204. } REG_GIC400_GICC_PMR_T;
  205. // gicc_bpr
  206. typedef union {
  207. uint32_t v;
  208. struct
  209. {
  210. uint32_t binary_point : 3; // [2:0]
  211. uint32_t __31_3 : 29; // [31:3]
  212. } b;
  213. } REG_GIC400_GICC_BPR_T;
  214. // gicc_iar
  215. typedef union {
  216. uint32_t v;
  217. struct
  218. {
  219. uint32_t interrupt_id : 10; // [9:0], read only
  220. uint32_t cpuid : 3; // [12:10], read only
  221. uint32_t __31_13 : 19; // [31:13]
  222. } b;
  223. } REG_GIC400_GICC_IAR_T;
  224. // gicc_eoir
  225. typedef union {
  226. uint32_t v;
  227. struct
  228. {
  229. uint32_t eoiintid : 10; // [9:0]
  230. uint32_t cpuid : 3; // [12:10]
  231. uint32_t __31_13 : 19; // [31:13]
  232. } b;
  233. } REG_GIC400_GICC_EOIR_T;
  234. // gicc_rpr
  235. typedef union {
  236. uint32_t v;
  237. struct
  238. {
  239. uint32_t priority : 8; // [7:0], read only
  240. uint32_t __31_8 : 24; // [31:8]
  241. } b;
  242. } REG_GIC400_GICC_RPR_T;
  243. // gicc_hppir
  244. typedef union {
  245. uint32_t v;
  246. struct
  247. {
  248. uint32_t pendintid : 10; // [9:0], read only
  249. uint32_t cpuid : 3; // [12:10], read only
  250. uint32_t __31_13 : 19; // [31:13]
  251. } b;
  252. } REG_GIC400_GICC_HPPIR_T;
  253. // gicc_abpr
  254. typedef union {
  255. uint32_t v;
  256. struct
  257. {
  258. uint32_t binary_point : 3; // [2:0]
  259. uint32_t __31_3 : 29; // [31:3]
  260. } b;
  261. } REG_GIC400_GICC_ABPR_T;
  262. // gicc_aiar
  263. typedef union {
  264. uint32_t v;
  265. struct
  266. {
  267. uint32_t interrupt_id : 10; // [9:0], read only
  268. uint32_t cpuid : 3; // [12:10], read only
  269. uint32_t __31_13 : 19; // [31:13]
  270. } b;
  271. } REG_GIC400_GICC_AIAR_T;
  272. // gicc_aeoir
  273. typedef union {
  274. uint32_t v;
  275. struct
  276. {
  277. uint32_t interrupt_id : 10; // [9:0]
  278. uint32_t cpuid : 3; // [12:10]
  279. uint32_t __31_13 : 19; // [31:13]
  280. } b;
  281. } REG_GIC400_GICC_AEOIR_T;
  282. // gicc_ahppir
  283. typedef union {
  284. uint32_t v;
  285. struct
  286. {
  287. uint32_t pendintid : 10; // [9:0], read only
  288. uint32_t cpuid : 3; // [12:10], read only
  289. uint32_t __31_13 : 19; // [31:13]
  290. } b;
  291. } REG_GIC400_GICC_AHPPIR_T;
  292. // gicc_iidr
  293. typedef union {
  294. uint32_t v;
  295. struct
  296. {
  297. uint32_t implementer : 12; // [11:0], read only
  298. uint32_t revision : 4; // [15:12], read only
  299. uint32_t architecture_version : 4; // [19:16], read only
  300. uint32_t __23_20 : 4; // [23:20]
  301. uint32_t productid : 8; // [31:24], read only
  302. } b;
  303. } REG_GIC400_GICC_IIDR_T;
  304. // gicc_dir
  305. typedef union {
  306. uint32_t v;
  307. struct
  308. {
  309. uint32_t interrupt_id : 10; // [9:0]
  310. uint32_t cpuid : 3; // [12:10]
  311. uint32_t __31_13 : 19; // [31:13]
  312. } b;
  313. } REG_GIC400_GICC_DIR_T;
  314. // gicd_ctrl
  315. #define GIC400_ENABLEGRP0 (1 << 0)
  316. #define GIC400_ENABLEGRP1 (1 << 1)
  317. // gicd_typer
  318. #define GIC400_ITLINESNUMBER(n) (((n)&0x1f) << 0)
  319. #define GIC400_CPUNUMBER(n) (((n)&0x7) << 5)
  320. #define GIC400_SECURITYEXTN (1 << 10)
  321. #define GIC400_LSPI(n) (((n)&0x1f) << 11)
  322. // gicd_iddr
  323. #define GIC400_IMPLEMENTER(n) (((n)&0xfff) << 0)
  324. #define GIC400_REVISION(n) (((n)&0xf) << 12)
  325. #define GIC400_VARIANT(n) (((n)&0xf) << 16)
  326. #define GIC400_PRODUCTID(n) (((n)&0xff) << 24)
  327. // gicd_ppisr
  328. #define GIC400_PPI_STATUS(n) (((n)&0x7f) << 9)
  329. // gicd_sgir
  330. #define GIC400_SGIINTID(n) (((n)&0xf) << 0)
  331. #define GIC400_NSATT (1 << 15)
  332. #define GIC400_CPUTARGETLIST(n) (((n)&0xff) << 16)
  333. #define GIC400_TARGETLISTFILTER(n) (((n)&0x3) << 24)
  334. // gicc_ctrl
  335. #define GIC400_ENABLEGRP0 (1 << 0)
  336. #define GIC400_ENABLEGRP1 (1 << 1)
  337. #define GIC400_ACKCTL (1 << 2)
  338. #define GIC400_FIQEN (1 << 3)
  339. #define GIC400_CBPR (1 << 4)
  340. #define GIC400_FIQBYPDISGRP0 (1 << 5)
  341. #define GIC400_IRQBYPDISGRP0 (1 << 6)
  342. #define GIC400_FIQBYPDISGRP1 (1 << 7)
  343. #define GIC400_IRQBYPDISGRP1 (1 << 8)
  344. #define GIC400_EOIMODES (1 << 9)
  345. #define GIC400_EOIMODENS (1 << 10)
  346. // gicc_pmr
  347. #define GIC400_PRIORITY(n) (((n)&0xff) << 0)
  348. // gicc_bpr
  349. #define GIC400_BINARY_POINT(n) (((n)&0x7) << 0)
  350. // gicc_iar
  351. #define GIC400_INTERRUPT_ID(n) (((n)&0x3ff) << 0)
  352. #define GIC400_CPUID(n) (((n)&0x7) << 10)
  353. // gicc_eoir
  354. #define GIC400_EOIINTID(n) (((n)&0x3ff) << 0)
  355. #define GIC400_CPUID(n) (((n)&0x7) << 10)
  356. // gicc_rpr
  357. #define GIC400_PRIORITY(n) (((n)&0xff) << 0)
  358. // gicc_hppir
  359. #define GIC400_PENDINTID(n) (((n)&0x3ff) << 0)
  360. #define GIC400_CPUID(n) (((n)&0x7) << 10)
  361. // gicc_abpr
  362. #define GIC400_BINARY_POINT(n) (((n)&0x7) << 0)
  363. // gicc_aiar
  364. #define GIC400_INTERRUPT_ID(n) (((n)&0x3ff) << 0)
  365. #define GIC400_CPUID(n) (((n)&0x7) << 10)
  366. // gicc_aeoir
  367. #define GIC400_INTERRUPT_ID(n) (((n)&0x3ff) << 0)
  368. #define GIC400_CPUID(n) (((n)&0x7) << 10)
  369. // gicc_ahppir
  370. #define GIC400_PENDINTID(n) (((n)&0x3ff) << 0)
  371. #define GIC400_CPUID(n) (((n)&0x7) << 10)
  372. // gicc_iidr
  373. #define GIC400_IMPLEMENTER(n) (((n)&0xfff) << 0)
  374. #define GIC400_REVISION(n) (((n)&0xf) << 12)
  375. #define GIC400_ARCHITECTURE_VERSION(n) (((n)&0xf) << 16)
  376. #define GIC400_PRODUCTID(n) (((n)&0xff) << 24)
  377. // gicc_dir
  378. #define GIC400_INTERRUPT_ID(n) (((n)&0x3ff) << 0)
  379. #define GIC400_CPUID(n) (((n)&0x7) << 10)
  380. #endif // _GIC400_REG_H_