Zynq.ARM.Platform.Mod 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323
  1. MODULE Platform;
  2. (** Zynq platform-specific constants for A2.
  3. Author: Timothee Martiel
  4. *)
  5. CONST
  6. (* ===== Units ===== *)
  7. k * = 1024;
  8. M * = k * k;
  9. G * = k * k * k;
  10. (* Maximum number of CPUs for that platform *)
  11. MaxCpuNb * = 2;
  12. (* ===== Physical Memory Layout ===== *)
  13. DDRStart * = 0;
  14. OCMStart * = 0;
  15. OCMSize * = 192 * k;
  16. IOStart * = 1 * G;
  17. IOSize * = 3040 * M;
  18. (* ===== Registers ===== *)
  19. MpcoreBaseAdr* = ADDRESS(0F8F00000H);
  20. ICDDCR* = MpcoreBaseAdr + 1000H; (* distributor control register *)
  21. ICDICFR* = MpcoreBaseAdr + 1C00H; (* interrupt configuration register *)
  22. ICCICR* = MpcoreBaseAdr + 0100H; (* cpu interface control register *)
  23. ICCPMR* = MpcoreBaseAdr + 0104H; (* interrupt priority mask register *)
  24. ICCEOIR* = MpcoreBaseAdr + 0110H; (* end of interrupt register *)
  25. ICDIPTR* = MpcoreBaseAdr + 1800H; (* interrupt processor target registers *)
  26. ICDIPR* = MpcoreBaseAdr + 1400H; (* interrupt priority registers *)
  27. ICDICER* = MpcoreBaseAdr + 1180H; (* interrupt clear enable register *)
  28. ICDISER* = MpcoreBaseAdr + 1100H; (* interrupt set enable register *)
  29. ICDISPR* = MpcoreBaseAdr + 1200H; (* set pending register *)
  30. ICDICPR* = MpcoreBaseAdr + 1280H; (* clear pending register *)
  31. ICCIAR* = MpcoreBaseAdr + 10CH; (* Interrupt Ackknowledge Register *)
  32. ICCBPR* = MpcoreBaseAdr + 108H; (* Binary Point Register *)
  33. GlobalTimerCounterRegister0* = MpcoreBaseAdr + 200H;
  34. GlobalTimerCounterRegister1* = MpcoreBaseAdr + 204H;
  35. GlobalTimerControlRegister* = MpcoreBaseAdr + 208H;
  36. GlobalTimerInterruptStatusRegister* = MpcoreBaseAdr+ 20CH;
  37. ComparatorValueRegister0* = MpcoreBaseAdr + 210H;
  38. ComparatorValueRegister1* = MpcoreBaseAdr + 214H;
  39. AutoIncrementRegister* = MpcoreBaseAdr + 218H;
  40. PrivateLoadValueRegister* = MpcoreBaseAdr + 600H;
  41. PrivateTimerCounterRegister* = MpcoreBaseAdr + 604H;
  42. PrivateTimerControlRegister* = MpcoreBaseAdr + 608H;
  43. PrivateTimerInterruptStatusRegister* = MpcoreBaseAdr+ 60CH;
  44. SCUControlReg* = MpcoreBaseAdr;
  45. (* Interrupt constants *)
  46. (*! TODO: USEFUL? *)
  47. ICIP* = (* TODO *) 0H;
  48. ICMR* = (* TODO *) 0H;
  49. ICLR* = (* TODO *) 0H;
  50. InterruptVectors* = 0H;
  51. FIQMode* = 11H; (* Fast Interrupt Mode *)
  52. IRQMode* = 12H; (* Interrupt Mode *)
  53. SVCMode* = 13H; (* SuperVisorMode *)
  54. UndefMode* = 1BH; (* Undefined instruction mode *)
  55. UserMode* = 10H; (* User mode *)
  56. AbortMode* = 17H; (* Abort mode *)
  57. SystemMode* = 1FH;
  58. (* Exceptions *)
  59. FIQDisabled* = 40H; (* Fast interrupts disabled globally *)
  60. IRQDisabled* = 80H; (* Interrupts disabled globally *)
  61. (* ===== System Level Control register access ===== *)
  62. SlcrBaseAdr* = 0xF8000000; (** Base address for System Level Control (SLCR) registers *)
  63. SlcrLockKey* = 0x767B; (** SLCR lock key; write this value to SLCR_LOCK register to disable writing to SLCR registers *)
  64. SlcrUnlockKey* = 0xDF0D; (** SLCR unlock key; write this value to SLCR_UNLOCK register to enable writing to SLCR registers *)
  65. (* ===== Device Configuration registers ===== *)
  66. DevCfgBaseAdr * = 0F8007000H; (** Base address of the devcfg registers *)
  67. DevCfgDmaPlAdr * = ADDRESS(0FFFFFFFFH); (** Devcfg DMA address of the PL *)
  68. (* ===== AXI interfaces ===== *)
  69. MasterAxiGp0BaseAdr* = 07F000000H; (** base address for Master AXI General Purpose interface 0 *)
  70. MasterAxiGp1BaseAdr* = 0BF000000H; (** base address for Master AXI General Purpose interface 1 *)
  71. (* ===== GPIO Registers ===== *)
  72. GpioBase * = ADDRESS(0E000A000H); (** Base address of GPIO registers *)
  73. GpioData * = GpioBase + 40H; (** Base address of GPIO data registers *)
  74. GpioBankNb * = 4; (** Number of GPIO banks *)
  75. GpioBank * = [GpioBase + 204H, GpioBase + 244H, GpioBase + 284H, GpioBase + 2C4H]; (** Base address of GPIO bank control registers *)
  76. (* ===== UART ===== *)
  77. UartBaseAddr* = [ADDRESS(0E0000000H),ADDRESS(0E0001000H)]; (* base address for all UART controllers present in the system *)
  78. UartModemPinsConnected* = [FALSE,FALSE];
  79. (* ===== USB ===== *)
  80. UsbNb * = 2; (** Number of USB controllers *)
  81. UsbBase * = [ADDRESS(0E0002100H), ADDRESS(0E0003100H)]; (** Base addresses of USB controllers: CAPLENGTH must be at offset 0. *)
  82. UsbIrq * = [53, 76]; (** USB IRQs *)
  83. TYPE
  84. (** System Level Control (SLCR) registers definition *)
  85. SlcrRegisters* = POINTER{UNSAFE,UNTRACED} TO RECORD
  86. SCL*: LONGINT; (** 0x00000000 32 rw 0x00000000 Secure Configuration Lock *)
  87. SLCR_LOCK*: LONGINT; (** 0x00000004 32 wo 0x00000000 SLCR Write Protection Lock *)
  88. SLCR_UNLOCK*: LONGINT; (** 0x00000008 32 wo 0x00000000 SLCR Write Protection Unlock *)
  89. SLCR_LOCKSTA-: LONGINT; (** 0x0000000C 32 ro 0x00000001 SLCR Write Protection Status *)
  90. padding0: ARRAY 60 OF LONGINT;
  91. ARM_PLL_CTRL*: LONGINT; (** 0x00000100 32 rw 0x0001A008 ARM PLL Control *)
  92. DDR_PLL_CTRL*: LONGINT; (** 0x00000104 32 rw 0x0001A008 DDR PLL Control *)
  93. IO_PLL_CTRL*: LONGINT; (** 0x00000108 32 rw 0x0001A008 IO PLL Control *)
  94. PLL_STATUS-: LONGINT; (** 0x0000010C 32 ro 0x0000003F PLL Status *)
  95. ARM_PLL_CFG*: LONGINT; (** 0x00000110 32 rw 0x00177EA0 ARM PLL Configuration *)
  96. DDR_PLL_CFG*: LONGINT; (** 0x00000114 32 rw 0x00177EA0 DDR PLL Configuration *)
  97. IO_PLL_CFG*: LONGINT; (** 0x00000118 32 rw 0x00177EA0 IO PLL Configuration *)
  98. padding01: LONGINT;
  99. ARM_CLK_CTRL*: LONGINT; (** 0x00000120 32 rw 0x1F000400 CPU Clock Control *)
  100. DDR_CLK_CTRL*: LONGINT; (** 0x00000124 32 rw 0x18400003 DDR Clock Control *)
  101. DCI_CLK_CTRL*: LONGINT; (** 0x00000128 32 rw 0x01E03201 DCI clock control *)
  102. APER_CLK_CTRL*: LONGINT; (** 0x0000012C 32 rw 0x01FFCCCD AMBA Peripheral Clock Control *)
  103. USB0_CLK_CTRL*: LONGINT; (** 0x00000130 32 rw 0x00101941 USB 0 ULPI Clock Control *)
  104. USB1_CLK_CTRL*: LONGINT; (** 0x00000134 32 rw 0x00101941 USB 1 ULPI Clock Control *)
  105. GEM0_RCLK_CTRL*: LONGINT; (** 0x00000138 32 rw 0x00000001 GigE 0 Rx Clock and Rx Signals Select *)
  106. GEM1_RCLK_CTRL*: LONGINT; (** 0x0000013C 32 rw 0x00000001 GigE 1 Rx Clock and Rx Signals Select *)
  107. GEM0_CLK_CTRL*: LONGINT; (** 0x00000140 32 rw 0x00003C01 GigE 0 Ref Clock Control *)
  108. GEM1_CLK_CTRL*: LONGINT; (** 0x00000144 32 rw 0x00003C01 GigE 1 Ref Clock Control *)
  109. SMC_CLK_CTRL*: LONGINT; (** 0x00000148 32 rw 0x00003C21 SMC Ref Clock Control *)
  110. LQSPI_CLK_CTRL*: LONGINT; (** 0x0000014C 32 rw 0x00002821 Quad SPI Ref Clock Control *)
  111. SDIO_CLK_CTRL*: LONGINT; (** 0x00000150 32 rw 0x00001E03 SDIO Ref Clock Control *)
  112. UART_CLK_CTRL*: LONGINT; (** 0x00000154 32 rw 0x00003F03 UART Ref Clock Control *)
  113. SPI_CLK_CTRL*: LONGINT; (** 0x00000158 32 rw 0x00003F03 SPI Ref Clock Control *)
  114. CAN_CLK_CTRL*: LONGINT; (** 0x0000015C 32 rw 0x00501903 CAN Ref Clock Control *)
  115. CAN_MIOCLK_CTRL*: LONGINT; (** 0x00000160 32 rw 0x00000000 CAN MIO Clock Control *)
  116. DBG_CLK_CTRL*: LONGINT; (** 0x00000164 32 rw 0x00000F03 SoC Debug Clock Control *)
  117. PCAP_CLK_CTRL*: LONGINT; (** 0x00000168 32 rw 0x00000F01 PCAP Clock Control *)
  118. TOPSW_CLK_CTRL*: LONGINT; (** 0x0000016C 32 rw 0x00000000 Central Interconnect Clock Control *)
  119. FPGA0_CLK_CTRL*: LONGINT; (** 0x00000170 32 rw 0x00101800 PL Clock 0 Output control *)
  120. FPGA0_THR_CTRL*: LONGINT; (** 0x00000174 32 rw 0x00000000 PL Clock 0 Throttle control *)
  121. FPGA0_THR_CNT*: LONGINT; (** 0x00000178 32 rw 0x00000000 PL Clock 0 Throttle Count control *)
  122. FPGA0_THR_STA-: LONGINT; (** 0x0000017C 32 ro 0x00010000 PL Clock 0 Throttle Status read *)
  123. FPGA1_CLK_CTRL*: LONGINT; (** 0x00000180 32 rw 0x00101800 PL Clock 1 Output control *)
  124. FPGA1_THR_CTRL*: LONGINT; (** 0x00000184 32 rw 0x00000000 PL Clock 1 Throttle control *)
  125. FPGA1_THR_CNT*: LONGINT; (** 0x00000188 32 rw 0x00000000 PL Clock 1 Throttle Count *)
  126. FPGA1_THR_STA-: LONGINT; (** 0x0000018C 32 ro 0x00010000 PL Clock 1 Throttle Status control *)
  127. FPGA2_CLK_CTRL*: LONGINT; (** 0x00000190 32 rw 0x00101800 PL Clock 2 output control *)
  128. FPGA2_THR_CTRL*: LONGINT; (** 0x00000194 32 rw 0x00000000 PL Clock 2 Throttle Control *)
  129. FPGA2_THR_CNT*: LONGINT; (** 0x00000198 32 rw 0x00000000 PL Clock 2 Throttle Count *)
  130. FPGA2_THR_STA-: LONGINT; (** 0x0000019C 32 ro 0x00010000 PL Clock 2 Throttle Status *)
  131. FPGA3_CLK_CTRL*: LONGINT; (** 0x000001A0 32 rw 0x00101800 PL Clock 3 output control *)
  132. FPGA3_THR_CTRL*: LONGINT; (** 0x000001A4 32 rw 0x00000000 PL Clock 3 Throttle Control *)
  133. FPGA3_THR_CNT*: LONGINT; (** 0x000001A8 32 rw 0x00000000 PL Clock 3 Throttle Count *)
  134. FPGA3_THR_STA-: LONGINT; (** 0x000001AC 32 ro 0x00010000 PL Clock 3 Throttle Status *)
  135. padding1: ARRAY 5 OF LONGINT;
  136. CLK_621_TRUE*: LONGINT; (** 0x000001C4 32 rw 0x00000001 CPU Clock Ratio Mode select *)
  137. padding2: ARRAY 14 OF LONGINT;
  138. PSS_RST_CTRL*: LONGINT; (** 0x00000200 32 rw 0x00000000 PS Software Reset Control *)
  139. DDR_RST_CTRL*: LONGINT; (** 0x00000204 32 rw 0x00000000 DDR Software Reset Control *)
  140. TOPSW_RST_CTRL*: LONGINT; (** 0x00000208 32 rw 0x00000000 Central Interconnect Reset Control *)
  141. DMAC_RST_CTRL*: LONGINT; (** 0x0000020C 32 rw 0x00000000 DMAC Software Reset Control *)
  142. USB_RST_CTRL*: LONGINT; (** 0x00000210 32 rw 0x00000000 USB Software Reset Control *)
  143. GEM_RST_CTRL*: LONGINT; (** 0x00000214 32 rw 0x00000000 Gigabit Ethernet SW Reset Control *)
  144. SDIO_RST_CTRL*: LONGINT; (** 0x00000218 32 rw 0x00000000 SDIO Software Reset Control *)
  145. SPI_RST_CTRL*: LONGINT; (** 0x0000021C 32 rw 0x00000000 SPI Software Reset Control *)
  146. CAN_RST_CTRL*: LONGINT; (** 0x00000220 32 rw 0x00000000 CAN Software Reset Control *)
  147. I2C_RST_CTRL*: LONGINT; (** 0x00000224 32 rw 0x00000000 I2C Software Reset Control *)
  148. UART_RST_CTRL*: LONGINT; (** 0x00000228 32 rw 0x00000000 UART Software Reset Control *)
  149. GPIO_RST_CTRL*: LONGINT; (** 0x0000022C 32 rw 0x00000000 GPIO Software Reset Control *)
  150. LQSPI_RST_CTRL*: LONGINT; (** 0x00000230 32 rw 0x00000000 Quad SPI Software Reset Control *)
  151. SMC_RST_CTRL*: LONGINT; (** 0x00000234 32 rw 0x00000000 SMC Software Reset Control *)
  152. OCM_RST_CTRL*: LONGINT; (** 0x00000238 32 rw 0x00000000 OCM Software Reset Control *)
  153. padding3: LONGINT;
  154. FPGA_RST_CTRL*: SET; (** 0x00000240 32 rw 0x01F33F0F FPGA Software Reset Control *)
  155. A9_CPU_RST_CTRL*: LONGINT; (** 0x00000244 32 rw 0x00000000 CPU Reset and Clock control *)
  156. padding4: LONGINT;
  157. RS_AWDT_CTRL*: LONGINT; (** 0x0000024C 32 rw 0x00000000 Watchdog Timer Reset Control *)
  158. padding5: ARRAY 2 OF LONGINT;
  159. REBOOT_STATUS*: LONGINT; (** 0x00000258 32 rw 0x00400000 Reboot Status, persistent *)
  160. BOOT_MODE*: LONGINT; (** 0x0000025C 32 mixed x Boot Mode Strapping Pins *)
  161. padding6: ARRAY 40 OF LONGINT;
  162. APU_CTRL*: LONGINT; (** 0x00000300 32 rw 0x00000000 APU Control *)
  163. WDT_CLK_SEL*: LONGINT; (** 0x00000304 32 rw 0x00000000 SWDT clock source select *)
  164. padding7: ARRAY 78 OF LONGINT;
  165. TZ_DMA_NS*: LONGINT; (** 0x00000440 32 rw 0x00000000 DMAC TrustZone Config *)
  166. TZ_DMA_IRQ_NS*: LONGINT; (** 0x00000444 32 rw 0x00000000 DMAC TrustZone Config for Interrupts *)
  167. TZ_DMA_PERIPH_NS*: LONGINT; (** 0x00000448 32 rw 0x00000000 DMAC TrustZone Config for Peripherals *)
  168. padding8: ARRAY 57 OF LONGINT;
  169. PSS_IDCODE-: LONGINT; (** 0x00000530 32 ro x PS IDCODE *)
  170. padding9: ARRAY 51 OF LONGINT;
  171. DDR_URGENT*: LONGINT; (** 0x00000600 32 rw 0x00000000 DDR Urgent Control *)
  172. padding10: ARRAY 2 OF LONGINT;
  173. DDR_CAL_START*: LONGINT; (** 0x0000060C 32 mixed 0x00000000 DDR Calibration Start Triggers *)
  174. padding11: LONGINT;
  175. DDR_REF_START*: LONGINT; (** 0x00000614 32 mixed 0x00000000 DDR Refresh Start Triggers *)
  176. DDR_CMD_STA*: LONGINT; (** 0x00000618 32 mixed 0x00000000 DDR Command Store Status *)
  177. DDR_URGENT_SEL*: LONGINT; (** 0x0000061C 32 rw 0x00000000 DDR Urgent Select *)
  178. DDR_DFI_STATUS*: LONGINT; (** 0x00000620 32 mixed 0x00000000 DDR DFI status *)
  179. padding12: ARRAY 55 OF LONGINT;
  180. MIO_PIN_00*: LONGINT; (** 0x00000700 32 rw 0x00001601 MIO Pin 0 Control *)
  181. MIO_PIN_01*: LONGINT; (** 0x00000704 32 rw 0x00001601 MIO Pin 1 Control *)
  182. MIO_PIN_02*: LONGINT; (** 0x00000708 32 rw 0x00000601 MIO Pin 2 Control *)
  183. MIO_PIN_03*: LONGINT; (** 0x0000070C 32 rw 0x00000601 MIO Pin 3 Control *)
  184. MIO_PIN_04*: LONGINT; (** 0x00000710 32 rw 0x00000601 MIO Pin 4 Control *)
  185. MIO_PIN_05*: LONGINT; (** 0x00000714 32 rw 0x00000601 MIO Pin 5 Control *)
  186. MIO_PIN_06*: LONGINT; (** 0x00000718 32 rw 0x00000601 MIO Pin 6 Control *)
  187. MIO_PIN_07*: LONGINT; (** 0x0000071C 32 rw 0x00000601 MIO Pin 7 Control *)
  188. MIO_PIN_08*: LONGINT; (** 0x00000720 32 rw 0x00000601 MIO Pin 8 Control *)
  189. MIO_PIN_09*: LONGINT; (** 0x00000724 32 rw 0x00001601 MIO Pin 9 Control *)
  190. MIO_PIN_10*: LONGINT; (** 0x00000728 32 rw 0x00001601 MIO Pin 10 Control *)
  191. MIO_PIN_11*: LONGINT; (** 0x0000072C 32 rw 0x00001601 MIO Pin 11 Control *)
  192. MIO_PIN_12*: LONGINT; (** 0x00000730 32 rw 0x00001601 MIO Pin 12 Control *)
  193. MIO_PIN_13*: LONGINT; (** 0x00000734 32 rw 0x00001601 MIO Pin 13 Control *)
  194. MIO_PIN_14*: LONGINT; (** 0x00000738 32 rw 0x00001601 MIO Pin 14 Control *)
  195. MIO_PIN_15*: LONGINT; (** 0x0000073C 32 rw 0x00001601 MIO Pin 15 Control *)
  196. MIO_PIN_16*: LONGINT; (** 0x00000740 32 rw 0x00001601 MIO Pin 16 Control *)
  197. MIO_PIN_17*: LONGINT; (** 0x00000744 32 rw 0x00001601 MIO Pin 17 Control *)
  198. MIO_PIN_18*: LONGINT; (** 0x00000748 32 rw 0x00001601 MIO Pin 18 Control *)
  199. MIO_PIN_19*: LONGINT; (** 0x0000074C 32 rw 0x00001601 MIO Pin 19 Control *)
  200. MIO_PIN_20*: LONGINT; (** 0x00000750 32 rw 0x00001601 MIO Pin 20 Control *)
  201. MIO_PIN_21*: LONGINT; (** 0x00000754 32 rw 0x00001601 MIO Pin 21 Control *)
  202. MIO_PIN_22*: LONGINT; (** 0x00000758 32 rw 0x00001601 MIO Pin 22 Control *)
  203. MIO_PIN_23*: LONGINT; (** 0x0000075C 32 rw 0x00001601 MIO Pin 23 Control *)
  204. MIO_PIN_24*: LONGINT; (** 0x00000760 32 rw 0x00001601 MIO Pin 24 Control *)
  205. MIO_PIN_25*: LONGINT; (** 0x00000764 32 rw 0x00001601 MIO Pin 25 Control *)
  206. MIO_PIN_26*: LONGINT; (** 0x00000768 32 rw 0x00001601 MIO Pin 26 Control *)
  207. MIO_PIN_27*: LONGINT; (** 0x0000076C 32 rw 0x00001601 MIO Pin 27 Control *)
  208. MIO_PIN_28*: LONGINT; (** 0x00000770 32 rw 0x00001601 MIO Pin 28 Control *)
  209. MIO_PIN_29*: LONGINT; (** 0x00000774 32 rw 0x00001601 MIO Pin 29 Control *)
  210. MIO_PIN_30*: LONGINT; (** 0x00000778 32 rw 0x00001601 MIO Pin 30 Control *)
  211. MIO_PIN_31*: LONGINT; (** 0x0000077C 32 rw 0x00001601 MIO Pin 31 Control *)
  212. MIO_PIN_32*: LONGINT; (** 0x00000780 32 rw 0x00001601 MIO Pin 32 Control *)
  213. MIO_PIN_33*: LONGINT; (** 0x00000784 32 rw 0x00001601 MIO Pin 33 Control *)
  214. MIO_PIN_34*: LONGINT; (** 0x00000788 32 rw 0x00001601 MIO Pin 34 Control *)
  215. MIO_PIN_35*: LONGINT; (** 0x0000078C 32 rw 0x00001601 MIO Pin 35 Control *)
  216. MIO_PIN_36*: LONGINT; (** 0x00000790 32 rw 0x00001601 MIO Pin 36 Control *)
  217. MIO_PIN_37*: LONGINT; (** 0x00000794 32 rw 0x00001601 MIO Pin 37 Control *)
  218. MIO_PIN_38*: LONGINT; (** 0x00000798 32 rw 0x00001601 MIO Pin 38 Control *)
  219. MIO_PIN_39*: LONGINT; (** 0x0000079C 32 rw 0x00001601 MIO Pin 39 Control *)
  220. MIO_PIN_40*: LONGINT; (** 0x000007A0 32 rw 0x00001601 MIO Pin 40 Control *)
  221. MIO_PIN_41*: LONGINT; (** 0x000007A4 32 rw 0x00001601 MIO Pin 41 Control *)
  222. MIO_PIN_42*: LONGINT; (** 0x000007A8 32 rw 0x00001601 MIO Pin 42 Control *)
  223. MIO_PIN_43*: LONGINT; (** 0x000007AC 32 rw 0x00001601 MIO Pin 43 Control *)
  224. MIO_PIN_44*: LONGINT; (** 0x000007B0 32 rw 0x00001601 MIO Pin 44 Control *)
  225. MIO_PIN_45*: LONGINT; (** 0x000007B4 32 rw 0x00001601 MIO Pin 45 Control *)
  226. MIO_PIN_46*: LONGINT; (** 0x000007B8 32 rw 0x00001601 MIO Pin 46 Control *)
  227. MIO_PIN_47*: LONGINT; (** 0x000007BC 32 rw 0x00001601 MIO Pin 47 Control *)
  228. MIO_PIN_48*: LONGINT; (** 0x000007C0 32 rw 0x00001601 MIO Pin 48 Control *)
  229. MIO_PIN_49*: LONGINT; (** 0x000007C4 32 rw 0x00001601 MIO Pin 49 Control *)
  230. MIO_PIN_50*: LONGINT; (** 0x000007C8 32 rw 0x00001601 MIO Pin 50 Control *)
  231. MIO_PIN_51*: LONGINT; (** 0x000007CC 32 rw 0x00001601 MIO Pin 51 Control *)
  232. MIO_PIN_52*: LONGINT; (** 0x000007D0 32 rw 0x00001601 MIO Pin 52 Control *)
  233. MIO_PIN_53*: LONGINT; (** 0x000007D4 32 rw 0x00001601 MIO Pin 53 Control *)
  234. padding13: ARRAY 11 OF LONGINT;
  235. MIO_LOOPBACK*: LONGINT; (** 0x00000804 32 rw 0x00000000 Loopback function within MIO *)
  236. padding14: LONGINT;
  237. MIO_MST_TRI0*: LONGINT; (** 0x0000080C 32 rw 0xFFFFFFFF MIO pin Tri-state Enables, 31:0 *)
  238. MIO_MST_TRI1*: LONGINT; (** 0x00000810 32 rw 0x003FFFFF MIO pin Tri-state Enables, 53:32 *)
  239. padding15: ARRAY 7 OF LONGINT;
  240. SD0_WP_CD_SEL*: LONGINT; (** 0x00000830 32 rw 0x00000000 SDIO 0 WP CD select *)
  241. SD1_WP_CD_SEL*: LONGINT; (** 0x00000834 32 rw 0x00000000 SDIO 1 WP CD select *)
  242. padding16: ARRAY 50 OF LONGINT;
  243. LVL_SHFTR_EN*: LONGINT; (** 0x00000900 32 rw 0x00000000 Level Shifters Enable *)
  244. padding17: ARRAY 3 OF LONGINT;
  245. OCM_CFG*: LONGINT; (** 0x00000910 32 rw 0x00000000 OCM Address Mapping *)
  246. padding18: ARRAY 66 OF LONGINT;
  247. Reserved*: LONGINT; (** 0x00000A1C 32 rw 0x00010101 Reserved *)
  248. padding19: ARRAY 56 OF LONGINT;
  249. GPIOB_CTRL*: LONGINT; (** 0x00000B00 32 rw 0x00000000 PS IO Buffer Control *)
  250. GPIOB_CFG_CMOS18*: LONGINT; (** 0x00000B04 32 rw 0x00000000 MIO GPIOB CMOS 1.8V config *)
  251. GPIOB_CFG_CMOS25*: LONGINT; (** 0x00000B08 32 rw 0x00000000 MIO GPIOB CMOS 2.5V config *)
  252. GPIOB_CFG_CMOS33*: LONGINT; (** 0x00000B0C 32 rw 0x00000000 MIO GPIOB CMOS 3.3V config *)
  253. padding20: LONGINT;
  254. GPIOB_CFG_HSTL*: LONGINT; (** 0x00000B14 32 rw 0x00000000 MIO GPIOB HSTL config *)
  255. GPIOB_DRVR_BIAS_CTRL*: LONGINT; (** 0x00000B18 32 mixed 0x00000000 MIO GPIOB Driver Bias Control *)
  256. padding21: ARRAY 9 OF LONGINT;
  257. DDRIOB_ADDR0*: LONGINT; (** 0x00000B40 32 rw 0x00000800 DDR IOB Config for A[14:0], CKE and DRST_B *)
  258. DDRIOB_ADDR1*: LONGINT; (** 0x00000B44 32 rw 0x00000800 DDR IOB Config for BA[2:0], ODT, CS_B, WE_B, RAS_B and CAS_B *)
  259. DDRIOB_DATA0*: LONGINT; (** 0x00000B48 32 rw 0x00000800 DDR IOB Config for Data 15:0 *)
  260. DDRIOB_DATA1*: LONGINT; (** 0x00000B4C 32 rw 0x00000800 DDR IOB Config for Data 31:16 *)
  261. DDRIOB_DIFF0*: LONGINT; (** 0x00000B50 32 rw 0x00000800 DDR IOB Config for DQS 1:0 *)
  262. DDRIOB_DIFF1*: LONGINT; (** 0x00000B54 32 rw 0x00000800 DDR IOB Config for DQS 3:2 *)
  263. DDRIOB_CLOCK*: LONGINT; (** 0x00000B58 32 rw 0x00000800 DDR IOB Config for Clock Output *)
  264. DDRIOB_DRIVE_SLEW_ADDR*: LONGINT; (** 0x00000B5C 32 rw 0x00000000 Drive and Slew controls for Address and Command pins of the DDR Interface *)
  265. DDRIOB_DRIVE_SLEW_DATA*: LONGINT; (** 0x00000B60 32 rw 0x00000000 Drive and Slew controls for DQ pins of the DDR Interface *)
  266. DDRIOB_DRIVE_SLEW_DIFF*: LONGINT; (** 0x00000B64 32 rw 0x00000000 Drive and Slew controls for DQS pins of the DDR Interface *)
  267. DDRIOB_DRIVE_SLEW_CLOCK*: LONGINT; (** 0x00000B68 32 rw 0x00000000 Drive and Slew controls for Clock pins of the DDR Interface *)
  268. DDRIOB_DDR_CTRL*: LONGINT; (** 0x00000B6C 32 rw 0x00000000 DDR IOB Buffer Control *)
  269. DDRIOB_DCI_CTRL*: LONGINT; (** 0x00000B70 32 rw 0x00000020 DDR IOB DCI Config *)
  270. DDRIOB_DCI_STATUS*: LONGINT; (** 0x00000B74 32 mixed 0x00000000 DDR IO Buffer DCI Status *)
  271. END;
  272. (** Device Configuration (Devcfg) register definitions *)
  273. DevCfgRegisters * = POINTER {UNSAFE,UNTRACED} TO RECORD
  274. CTRL *, (** 000H 32 mixed 0C006000H Control Register *)
  275. LOCK *, (** 004H 32 mixed 00000000H Lock Register *)
  276. CFG *, (** 008H 32 rw 00000508H Configuration Register *)
  277. INT_STS *, (** 00CH 32 mixed 00000000H Interrupt Status Register *)
  278. INT_MASK *, (** 010H 32 rw FFFFFFFFH Interrupt Mask Register *)
  279. STATUS *, (** 014H 32 mixed 40000820H Status Register *)
  280. DMA_SRC_ADDR *, (** 018H 32 rw 00000000H DMA Source Address Register *)
  281. DMA_DST_ADDR *, (** 01CH 32 rw 00000000H DMA Destination Address Register *)
  282. DMA_SRC_LEN *, (** 020H 32 rw 00000000H DMA Source Transfer Length *)
  283. DMA_DST_LEN *, (** 024H 32 rw 00000000H DMA Destination Transfer Length *)
  284. ROM_SHADOW *, (** 028H 32 wo 00000000H ROM Shadow Register *)
  285. MULTIBOOT_ADDR *, (** 02CH 32 rw 00000000H MULTI Boot Address Pointer *)
  286. SW_ID *, (** 030H 32 mixed 00000000H Software ID Register *)
  287. UNLOCK *: LONGINT; (** 034H 32 rw 00000000 Unlock Register *)
  288. padding0: ARRAY 19 OF LONGINT; (** padding: 038H to 080H *)
  289. MCTRL *: LONGINT; (** 080H 32 mixed xxxxxxxxH Miscellanous Control Register *)
  290. padding1: ARRAY 32 OF LONGINT; (** padding: 084H to 100H *)
  291. XADCIF_CFG *, (** 100H 32 rw 00001114H XADC Interface Configuration *)
  292. XADCIF_INT_STS *, (** 104H 32 mixed 00000200H XADC Interface Interrupt Status *)
  293. XADCIF_INT_MASK *, (** 108H 32 rw FFFFFFFFH XADC Interface Interrupt Mask *)
  294. XADCIF_MSTS *, (** 10CH 32 ro 00000500H XADC Interface Miscellanous Status Register *)
  295. XADCIF_CMDFIFO *, (** 110H 32 wo 00000000H XADC Interface Command FIFO Register *)
  296. XADCIF_RDFIFO *, (** 114H 32 ro 00000000H XADC Interface Data FIFO Register *)
  297. XADCIF_MCTL *: LONGINT; (** 118H 32 rw 00000010H XADC Interface Miscellanous Control Register *)
  298. END;
  299. VAR
  300. slcr*: SlcrRegisters; (** System Level Control (SLCR) registers set *)
  301. devcfg*: DevCfgRegisters; (** Device Configuration (Devcfg) register set *)
  302. BEGIN
  303. slcr := SlcrBaseAdr;
  304. devcfg := DevCfgBaseAdr;
  305. END Platform.