You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

hardware.h 7.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. /*
  2. * Copyright (C) 2004 Tobias Lorenz
  3. *
  4. * This program is free software; you can redistribute it and/or modify
  5. * it under the terms of the GNU General Public License version 2 as
  6. * published by the Free Software Foundation.
  7. */
  8. /*
  9. * Architecture: ARM9TDMI
  10. * Processor : P2001
  11. */
  12. #ifndef ARCH_HARDWARE_H
  13. #define ARCH_HARDWARE_H
  14. #ifndef __ASSEMBLY__
  15. /* DMA descriptor */
  16. typedef struct {
  17. unsigned int stat; /* status: own, start, end, offset, status */
  18. unsigned int cntl; /* control: loop, int, type, channel, length */
  19. char *buf; /* buffer */
  20. void *next; /* nextdsc */
  21. } DMA_DSC;
  22. /* The address definitions are from asic_bf.h */
  23. typedef struct { // 0x00100000U
  24. volatile unsigned int reserved1[0x3];
  25. volatile unsigned int ArmDmaPri; // 0x0000000CU
  26. volatile unsigned int SDRAM_Ctrl; // 0x00000010U
  27. volatile unsigned int ExtMem_Ctrl; // 0x00000014U
  28. volatile unsigned int WaitState_Ext; // 0x00000018U
  29. volatile unsigned int WaitState_Asic; // 0x0000001CU
  30. volatile unsigned int TOP; // 0x00000020U
  31. volatile unsigned int reserved2[0x3];
  32. volatile unsigned int Adr1_EQ_30Bit; // 0x00000030U
  33. volatile unsigned int Adr2_EQ_30Bit; // 0x00000034U
  34. volatile unsigned int Adr3_EQ_30Bit; // 0x00000038U
  35. volatile unsigned int Dat3_EQ_32Bit; // 0x0000003CU
  36. volatile unsigned int Adr4_HE_20Bit; // 0x00000040U
  37. volatile unsigned int Adr4_LT_20Bit; // 0x00000044U
  38. volatile unsigned int Adr5_HE_20Bit; // 0x00000048U
  39. volatile unsigned int Adr5_LT_20Bit; // 0x0000004CU
  40. volatile unsigned int Adr_Control; // 0x00000050U
  41. volatile unsigned int ABORT_IA_32Bit; // 0x00000054U
  42. } *P2001_SYS_regs_ptr;
  43. #define P2001_SYS ((volatile P2001_SYS_regs_ptr) 0x00100000)
  44. typedef struct { // 0x00110000U
  45. volatile unsigned int Timer1; // 0x00000000U
  46. volatile unsigned int Timer2; // 0x00000004U
  47. volatile unsigned int TIMER_PRELOAD; // 0x00000008U
  48. volatile unsigned int Timer12_PreDiv; // 0x0000000CU
  49. volatile unsigned int TIMER_INT; // 0x00000010U
  50. volatile unsigned int Freerun_Timer; // 0x00000014U
  51. volatile unsigned int WatchDog_Timer; // 0x00000018U
  52. volatile unsigned int PWM_CNT; // 0x00000020U
  53. volatile unsigned int PWM_CNT2; // 0x00000024U
  54. volatile unsigned int PLL_12000_config; // 0x00000030U
  55. volatile unsigned int PLL_12288_config; // 0x00000034U
  56. volatile unsigned int DIV_12288_config; // 0x00000038U
  57. volatile unsigned int MOD_CNT_768; // 0x0000003CU
  58. volatile unsigned int FSC_IRQ_STATUS; // 0x00000040U
  59. volatile unsigned int FSC_CONFIG; // 0x00000044U
  60. volatile unsigned int FSC_CONSTRUCT; // 0x00000048U
  61. volatile unsigned int FSC_base_clk_reg; // 0x0000004CU
  62. volatile unsigned int SYSCLK_SHAPE; // 0x00000050U
  63. volatile unsigned int SDRAMCLK_SHAPE; // 0x00000054U
  64. volatile unsigned int RING_OSZI; // 0x00000058U
  65. } *P2001_TIMER_regs_ptr;
  66. #define P2001_TIMER ((volatile P2001_TIMER_regs_ptr) 0x00110000)
  67. typedef struct { // 0x00120000U
  68. volatile unsigned int reserved1[0x5];
  69. volatile unsigned int GPIO_Config; // 0x00000014U
  70. volatile unsigned int GPIO_INT; // 0x00000018U
  71. volatile unsigned int GPIO_Out; // 0x0000001CU
  72. volatile unsigned int GPIO_IN; // 0x00000020U
  73. volatile unsigned int GPIO_En; // 0x00000024U
  74. volatile unsigned int PIN_MUX; // 0x00000028U
  75. volatile unsigned int NRES_OUT; // 0x0000002CU
  76. volatile unsigned int GPIO2_Out; // 0x00000030U
  77. volatile unsigned int GPIO2_IN; // 0x00000034U
  78. volatile unsigned int GPIO2_En; // 0x00000038U
  79. volatile unsigned int GPIO_INT_SEL; // 0x0000003CU
  80. volatile unsigned int GPI3_IN; // 0x00000040U
  81. volatile unsigned int GPO4_OUT; // 0x00000044U
  82. } *P2001_GPIO_regs_ptr;
  83. #define P2001_GPIO ((volatile P2001_GPIO_regs_ptr) 0x00120000)
  84. typedef struct { // 0x00130000U
  85. volatile unsigned int Main_NFIQ_Int_Ctrl; // 0x00000000U
  86. volatile unsigned int Main_NIRQ_Int_Ctrl; // 0x00000004U
  87. volatile unsigned int Status_NFIQ; // 0x00000008U
  88. volatile unsigned int Status_NIRQ; // 0x0000000CU
  89. } *P2001_INT_CTRL_regs_ptr;
  90. #define P2001_INT_CTRL ((volatile P2001_INT_CTRL_regs_ptr) 0x00130000)
  91. typedef union { // 0x00140000U
  92. struct { // write
  93. volatile unsigned int TX1; // 0x00000000U
  94. volatile unsigned int TX2; // 0x00000004U
  95. volatile unsigned int TX3; // 0x00000008U
  96. volatile unsigned int TX4; // 0x0000000CU
  97. volatile unsigned int Baudrate; // 0x00000010U
  98. volatile unsigned int reserved1[0x3];
  99. volatile unsigned int Config; // 0x00000020U
  100. volatile unsigned int Clear; // 0x00000024U
  101. volatile unsigned int Echo_EN; // 0x00000028U
  102. volatile unsigned int IRQ_Status; // 0x0000002CU
  103. } w; // write
  104. struct { // read
  105. volatile unsigned int RX1; // 0x00000000U
  106. volatile unsigned int RX2; // 0x00000004U
  107. volatile unsigned int RX3; // 0x00000008U
  108. volatile unsigned int RX4; // 0x0000000CU
  109. volatile unsigned int reserved1[0x4];
  110. volatile unsigned int PRE_STATUS; // 0x00000020U
  111. volatile unsigned int STATUS; // 0x00000024U
  112. volatile unsigned int reserved2[0x1];
  113. volatile unsigned int IRQ_Status; // 0x0000002CU
  114. } r; // read
  115. } *P2001_UART_regs_ptr;
  116. #define P2001_UART ((volatile P2001_UART_regs_ptr) 0x00140000)
  117. typedef struct { // 0x0018_000U _=0,1,2,3
  118. volatile DMA_DSC * RMAC_DMA_DESC; // 0x00000000U
  119. volatile unsigned int RMAC_DMA_CNTL; // 0x00000004U
  120. volatile unsigned int RMAC_DMA_STAT; // 0x00000008U
  121. volatile unsigned int RMAC_DMA_EN; // 0x0000000CU
  122. volatile unsigned int RMAC_CNTL; // 0x00000010U
  123. volatile unsigned int RMAC_TLEN; // 0x00000014U
  124. volatile unsigned int RMAC_PHYU; // 0x00000018U
  125. volatile unsigned int RMAC_PHYL; // 0x0000001CU
  126. volatile unsigned int RMAC_PFM0; // 0x00000020U
  127. volatile unsigned int RMAC_PFM1; // 0x00000024U
  128. volatile unsigned int RMAC_PFM2; // 0x00000028U
  129. volatile unsigned int RMAC_PFM3; // 0x0000002CU
  130. volatile unsigned int RMAC_PFM4; // 0x00000030U
  131. volatile unsigned int RMAC_PFM5; // 0x00000034U
  132. volatile unsigned int RMAC_PFM6; // 0x00000038U
  133. volatile unsigned int RMAC_PFM7; // 0x0000003CU
  134. volatile unsigned int RMAC_MIB0; // 0x00000040U
  135. volatile unsigned int RMAC_MIB1; // 0x00000044U
  136. volatile unsigned int RMAC_MIB2; // 0x00000048U
  137. volatile unsigned int RMAC_MIB3; // 0x0000004CU
  138. volatile unsigned int RMAC_MIB4; // 0x00000050U
  139. volatile unsigned int RMAC_MIB5; // 0x00000054U
  140. volatile unsigned int reserved1[0x1e8];
  141. volatile unsigned int RMAC_DMA_DATA; // 0x000007F8U
  142. volatile unsigned int RMAC_DMA_ADR; // 0x000007FCU
  143. volatile DMA_DSC * TMAC_DMA_DESC; // 0x00000800U
  144. volatile unsigned int TMAC_DMA_CNTL; // 0x00000804U
  145. volatile unsigned int TMAC_DMA_STAT; // 0x00000808U
  146. volatile unsigned int TMAC_DMA_EN; // 0x0000080CU
  147. volatile unsigned int TMAC_CNTL; // 0x00000810U
  148. volatile unsigned int TMAC_MIB6; // 0x00000814U
  149. volatile unsigned int TMAC_MIB7; // 0x00000818U
  150. volatile unsigned int reserved2[0x1];
  151. volatile unsigned int MU_CNTL; // 0x00000820U
  152. volatile unsigned int MU_DATA; // 0x00000824U
  153. volatile unsigned int MU_DIV; // 0x00000828U
  154. volatile unsigned int CONF_RMII; // 0x0000082CU
  155. volatile unsigned int reserved3[0x1f2];
  156. volatile unsigned int TMAC_DMA_DATA; // 0x00000FF8U
  157. volatile unsigned int TMAC_DMA_ADR; // 0x00000FFCU
  158. } *P2001_ETH_regs_ptr;
  159. #define P2001_EU0 ((volatile P2001_ETH_regs_ptr) 0x00180000)
  160. #define P2001_EU1 ((volatile P2001_ETH_regs_ptr) 0x00181000)
  161. #define P2001_EU2 ((volatile P2001_ETH_regs_ptr) 0x00182000)
  162. #define P2001_EU3 ((volatile P2001_ETH_regs_ptr) 0x00183000)
  163. #define P2001_MU P2001_EU0
  164. #endif
  165. #endif /* ARCH_HARDWARE_H */