reg4101.h
上传用户:qiulin1960
上传日期:2013-10-16
资源大小:2844k
文件大小:16k
源码类别:

Windows CE

开发平台:

Windows_Unix

  1. // Copyright (c) 1999-2000 Microsoft Corporation.  All rights reserved.
  2. /* Defines for Reference Platform control registers ( Read-only ) */
  3. #define ICU_BASE        0xab000080   // ICU register base address
  4. #define ICU_SYSINTREG      0x00    /* Level 1 system register */
  5. #define ICU_PIUINTREG      0x02    /* Level 2 PIU register */
  6. #define ICU_ADUINTREG      0x04    /* Level 2 ADU register */
  7. #define ICU_KIUINTREG      0x06    /* Level 2 KIU register */
  8. #define ICU_GIUINTREG      0x08    /* Level 2 GIU register */
  9. #define ICU_SIUINTREG      0x0a    /* Level 2 SIU register */
  10. #define ICU_MSYSINTREG     0x0c    /* Level 1 mask system register */
  11. #define ICU_MPIUINTREG     0x0e    /* Level 2 mask PIU register */
  12. #define ICU_MADUINTREG     0x10    /* Level 2 mask ADU register */
  13. #define ICU_MKIUINTREG     0x12    /* Level 2 mask KIU register */
  14. #define ICU_MGIUINTREG     0x14    /* Level 2 mask GIU register */
  15. #define ICU_MSIUINTREG     0x16    /* Level 2 mask SIU register */
  16. #define ICU_NMIREG         0x18    /* NMI register */
  17. #define ICU_SOFTINTREG     0x1a    /* Soft interrupt register */
  18. /* BCU registers */
  19. #define BCU_BASE         0xab000000  // BCU register base address
  20. #define BCUCNTREG        0x00        // BCU control register
  21. #define BCUBRREG         0x02        // BCU Bus restrain register
  22. #define BCUBRCNTREG      0x04        // BCU Bus restrain count register
  23. #define BCUBCLREG        0x06        // BCU CPU restrain clear register
  24. #define BCUBCLCNTREG     0x08        // BCU CPU restrain clear count register
  25. #define BCUSPEEDREG      0x0a        // BCU Access cycle change register
  26. #define BCUERRENREG      0x0c        // BCU Bus error enable register
  27. #define BCUERRCNTREG     0x0e        // BCU reflesh counter register
  28. #define PREVIDREG  0x10      // G/A revision ID
  29. /* DMA Adress registers */
  30. #define DMAAD_BASE       0xab000020  // DMA address register base address
  31. #define PADDMAADRLREG    0x00        // PAT DMA address Low register
  32. #define PADDMAADRHREG    0x02        // PAT DMA address High register
  33. #define SRXDMAADRLREG    0x04        // Serial Rx DMA Address Low register
  34. #define SRXDMAADRHREG    0x06        // Serial Rx DMA Address High register
  35. #define STXDMAADRLREG    0x08        // Serial Tx DMA Address Low register
  36. #define STXDMAADRHREG    0x0a        // Serial Tx DMA Address High register
  37. #define AUDDMAADRLREG    0x0c        // Audio DMA Address Low register
  38. #define AUDDMAADRHREG    0x0e        // Audio DMA Address High register
  39. #define KEYDMAADRLREG    0x10        // Key DMA Address Low register
  40. #define KEYDMAADRHREG    0x12        // Key DMA Address High register
  41. /* DMA Controller register */
  42. #define DMAC_BASE        0xab000040  // DMA control register base address
  43. #define DMARSTREG        0x00        // DMA reset register
  44. #define DMAIDLEREG       0x02        // DMA Idle register
  45. #define DMASENREG        0x04        // DMA sequencer enable register
  46. #define DMAMSKREG        0x06        // DMA mask register
  47. #define DMAREQREG        0x08        // DMA request register
  48. /* CMU register */
  49. #define CMU_BASE         0xab000060  // CMU register base address
  50. #define CMUCTLREG        0x00        // CMU control register
  51. /* Power Management registers */
  52. #define PMU_BASE         0xab0000a0  // PMU register base address
  53. #define PMUINTREG        0x00        // PMU interrupt/status register
  54. #define PMUCNTREG        0x02        // PMU control register
  55. /* Interval Timer & RTC Registers */
  56. #define RTCU_BASE        0xab0000c0     // Interrupt register base address
  57. #define ETIMELREG        0x04      /* Elapsed time L register */
  58. #define ETIMEMREG        0x06      /* Elapsed time M register */
  59. #define ETIMEHREG        0x08      /* Elapsed time H register */
  60. #define ECMPHREG         0x0a      /* Elapsed compare L register */
  61. #define ECMPLREG         0x0c      /* Elapsed compare M register */
  62. #define ECMPMREG         0x0e      /* Elapsed compare H register */
  63. #define RTCLLREG         0x10      /* RTC long L register */
  64. #define RTCLHREG         0x12      /* RTC long H register */
  65. #define RTCLCNTLREG      0x14      /* RTC long count L register */
  66. #define RTCLCNTHREG      0x16      /* RTC long count H register */
  67. #define TCLKCNTLREG      0x18      /* TCLK count L register */
  68. #define TCLKCNTHREG      0x1a      /* TCLK count H register */
  69. #define RTCINTREG        0x1c      /* RTC interrupt register */
  70. /* DSU registers */
  71. #define DSU_BASE         0xab0000e0   // DSU register base address
  72. #define DSUCNTREG        0x00       // DSU control register
  73. #define DSUSETREG        0x02       // DSU read time set register
  74. #define DSUCLRREG        0x04       // DSU clear register
  75. #define DSUTIMREG        0x06       // DSU elapsed time register
  76. #define DSULOADREG       0x08       // DSU count register
  77. /* GPIO registers */
  78. #define GIU_BASE         0xab000100     // GIU register base address
  79. #define GOUTENREG        0x00       // GPIO output enable register
  80. #define GPOTDATREG       0x02       // GPIO port data register
  81. #define GINTSTREG        0x04       // GPIO interrupt status register
  82. #define GINTENREG        0x06       // GPIO interrupt enable register
  83. #define GCINTSREG        0x08       // GPIO change point interrupt register
  84. #define GLINTSREG        0x0a       // GPIO interrupt Level specified register
  85. /* Touch Panel Controller registers */
  86. #define PIU_BASE         0xab000120     // PIU register base address
  87. #define PIUDATAREG       0x00       // PIU Touch panel point data register
  88. #define PIUCNTREG        0x02       // PIU control register
  89. #define PIUINTREG        0x04       // PIU interrupt couse register
  90. #define PIUSIVLREG       0x06       // PIU data sampling interval register
  91. #define PIUSTBLREG       0x08       // PIU AD converter start delay register
  92. #define PIUDOZEREG 0x0a
  93. /* Serial I/O registers */
  94. #define SIU_BASE         0xab000140    // SIU register base address
  95. #define SIURXDATREG      0x00       // SIU Rx data register
  96. #define SIUTXDATREG      0x02       // SIU Tx data register
  97. #define SIUCNTREG        0x04       // SIU control register
  98. #define SIUDLENGTHREG    0x06       // SIU RxTx data length register
  99. #define SIUINTREG        0x08       // SIU interrupt register
  100. #define SIURS232CREG     0x0a       // SIU RS232C control register
  101. #define SIUBAUDSELREG    0x0c       // SIU baudrate select register
  102. /* Audio registers */
  103. #define ADU_BASE         0xab000162    // ADU register base address
  104. #define ADUDATREG        0x00       // ADU data register
  105. #define ADURESETREG      0x02       // ADU reset register
  106. #define ADUMODEREG       0x04       // ADU Mode select register
  107. #define ADUSEQENREG      0x06       // ADU Sequencer enable register
  108. #define ADUMUTEREG       0x08       // ADU Mute control register
  109. #define ADUSTATREG       0x0a       // ADU status register
  110. #define ADUSTPPAGEREG    0x0c       // ADU DMA stop at page register
  111. #define ADUVALIDREG      0x0e       // ADU counter valid bits register
  112. #define ADUINTRREG       0x10       // ADU interrupt register
  113. #define ADUCOUNT0REG     0x12       // ADU counter 0 register
  114. #define ADUCOUNT1REG     0x14       // ADU counter 1 register
  115. #define ADUREPNUMREG     0x16       // ADU PWM repeat number register
  116. #define ADUBUSENREG      0x18       // ADU bus I/F enable register
  117. /* Key Scanner register */
  118. #define KIU_BASE         0xab000180      // KIU register base address
  119. #define KIUDATREG        0x00       // KIU Keydata register
  120. #define KIUASCANREG      0x04       // KIU Key auto scan register
  121. #define KIUASTOPREG      0x06       // KIU Key auto stop register
  122. #define KIUSCANREG       0x08       // KIU Key scan register
  123. #define KIUSTOPREG       0x0a       // KIU Key stop register
  124. #define KIUSAPREG        0x0c       // KIU Key stop at page register
  125. #define KIUSCANSREG      0x0e       // KIU Scan status register
  126. #define KIUWKSREG        0x10       // KIU Wait keyscan stable register
  127. #define KIUWKIREG        0x12       // KIU Wait keyscan interval register
  128. #define KIUSRNREG        0x14       // KIU stop repeat number register
  129. #define KIUINTREG        0x16       // KIU interrupt register
  130. #define KIURSTREG        0x18       // KIU reset register
  131. #define KIUENREG         0x1a       // KIU enable register
  132. #define KIUDOZEREG 0x1c
  133. // Level 1 system interrupt / mask
  134. #define BatIntr     0x0001       /* Battery is decreased when power on */
  135. #define PowerIntr   0x0002       /* PowerSW is ON when power on */
  136. #define RtcLongIntr 0x0004       /* Interrupt from RTC Long counter */
  137. #define AlarmIntr   0x0008       /* Compare the value of ElapseTimeX register with the value of ElapseCmpX registers */
  138. #define IsaIntr     0x0010       /* Interrupt from PCMCIA controller */
  139. #define PIUIntr     0x0020       /* Interrupt from PIU unit */
  140. #define ADUIntr     0x0040       /* Interrupt from ADU unit */
  141. #define KIUIntr     0x0080       /* Interrupt from KIU unit */
  142. #define GIUIntr     0x0100       /* Interrupt from GIU unit */
  143. #define SIUIntr     0x0200       /* Interrupt from SIU unit */
  144. #define WrberrIntr  0x0400       /* Inform Bus Error */
  145. #define SoftIntr    0x0800       /* Interrupt from SOFTINTREG */
  146. // Level 2 PIU interrupt / mask
  147. #define PadChgIntr       0x0001  /* Detects Pen touches Pad panel and releases it */
  148. #define PadDataRdyIntr   0x0002  /* Indicates to finish scanning a set of Pad data */
  149. #define PadDataLostIntr  0x0004  /* Lost scan data */
  150. #define PadIntr          0x0008  /* Crossed the Pad data to a page boundary in DMA transfer */
  151. #define PadEndIntr       0x0010  /* Crossed the Pad data to a page boundary in the case of acting KeyInter in DMA transfer */
  152. // Level 2 ADU interrupt / mask
  153. #define AudioStartIntr   0x0001  /* Informs ADU ceaquencer starts operating for new combination "M" and "N" */
  154. #define AudioIDLEIntr    0x0002  /* Informs ADU ceaquencer's status is IDLE */
  155. #define AudIntr          0x0004  /* Crossed the Audio data to a page boundary in DMA transfer */
  156. #define AudioEndIntr     0x0008  /* Crossed the Audio data to a page boundary in the case of acting AudioIntr in DMA transfer */
  157. // Level 2 KIU interrupt / mask
  158. #define KeySenseIntr     0x0001  /* Detects Key input */
  159. #define KeyDataRdyIntr   0x0002  /* Indicates to finish scanning a set of key data */
  160. #define KeyDataLostIntr  0x0004  /* Lost scan data */
  161. #define KeyIntr          0x0008  /* Crossed the Key data to a page boundary in DMA transfer */
  162. #define KeyEndIntr       0x0010  /* Crossed the Key data to a page boundary in the case of acting KeyIntr in DMA transfer */
  163. // Level 2 GIU interrupt / mask
  164. #define CardLockIntr     0x0001   /* Sets Interrupt in the case of changing the port's level */
  165. #define BattLockIntr     0x0200   /* Sets Interrupt in the case of changing the port's level */
  166. #define LcdRstIntr       0x0004   /* Sets Interrupt in the case of changing the port's level */
  167. #define LcdBrupIntr      0x0008   /* Sets Interrupt in the case of changing the port's level */
  168. #define LcdBrdnIntr      0x0010   /* Sets Interrupt in the case of changing the port's level */
  169. #define DebIntIntr       0x0020   /* Sets Interrupt in the case of changing the port's level */
  170. #define SIOPowEnIntr     0x0040  /* Sets Interrupt in the case of changing the port's level */
  171. #define IrdaPowEnIntr    0x0080  /* Sets Interrupt in the case of changing the port's level */
  172. #define PadPowEnIntr     0x0100  /* Sets Interrupt in the case of changing the port's level */
  173. #define LcdPwrIntr       0x0200  /* Sets Interrupt in the case of changing the port's level */
  174. #define LcdDpwrIntr      0x0400  /* Sets Interrupt in the case of changing the port's level */
  175. #define GPIO2            0x0800   /* reserved */
  176. #define GPIO1            0x8000   /* reserved */
  177. #define GIUmask          0x7000    /* If you use G/A Ver 1.0 , you must mask on bit12 - 14. */
  178. #define DCDChg  0x2000   /* Sets Interrupt in the case of changing the port's level */
  179. // Level 2 SIU interrupt /mask
  180. #define txIntr           0x0001  /* Crossed the send data to a page boundary in DMA transfer */
  181. #define txEndIntr        0x0002  /* Crossed the send data to a page boundary in the case of acting txIntr in DMA transfer */
  182. #define rxIntr           0x0004  /* Crossed the received data to a page boundary in DMA transfer */
  183. #define rxEndIntr        0x0008  /* Crossed the received data to a page boundary in the case of acting rxIntr in DMA transfer */
  184. #define rxGetCharIntr    0x0010  /* Informs to finish received character */
  185. #define rxLostCharIntr   0x0020  /* Informs to lost a received character */
  186. #define CTSchgIntr       0x0040  /* Changes CTS status */
  187. #define DSRchgIntr       0x0080  /* Changes DSR status */
  188. #define DCDchgIntr       0x0100  /* Changes DCD status */
  189. #define FEIntr           0x0200  /* Detects flaming error */
  190. #define BrkIntr          0x0400  /* Detects Break signal */
  191. // SOFT interrupt
  192. // #define SoftIntr         0x0001  /* INTB interrupt */
  193. // NMI
  194. #define NMIorINT         0x0001     /* BatIntr is NMI or INTB */
  195. //
  196. // Interrupt Clear Register & Bit  (W1C)
  197. //
  198. /* 
  199.   Interrupt clear bits for each unit in G/A.
  200. */
  201. // PMUINTREG
  202. #define BatIntr_clr          0x0002     // PMUINTREG writing
  203. #define PowerIntr_clr        0x0001     // PMUINTREG writing
  204. // RTC Unit
  205. #define RtcLongIntr_clr      0x0001     // RTCINTREG writing
  206. #define AlarmIntr_clr        0x0002     // RTCINTREG writing (ElapseTimeIntr)
  207. //PCMCIA controller
  208. #define IsaIntr_clr_index     0x83      // PCMCIA controler's index register writing
  209. #define IsaIntr_clr           0x0       // PCMCIA controler's DATA register writing
  210. // PIU Unit
  211. #define PIUIntr_clr          0x001f     // PIUINTREG writing
  212. // ADU Unit
  213. #define ADUIntr_clr          0x000f     // ADUINTRREG writing
  214. // KIU Unit
  215. #define KIUIntr_clr          0x001f     // KIUINTREG writing
  216. // GIU Unit
  217. #define GIUIntr_clr          0x1fff     // GIUINTSTREG writing
  218. // SIU Unit
  219. #define SIUIntr_clr          0x07ff    // SIUINTREG writing
  220. // BCU Unit
  221. #define WrberrIntr_clr       0x0001    //BCUERRENREG writing
  222. // Software interrupt
  223. #define SoftIntr_clr         0x0000    // SOFTINTREG(0xab00009a) writing
  224. // args for InitGA()
  225. #define COLDBOOT 0
  226. #define WARMBOOT 1
  227. #define INTRGRP_TCH (PadIntr | PadEndIntr | PadDataRdyIntr | PadDataLostIntr)
  228. #define INTRGRP_TCH_CHG (PadChgIntr)
  229. #define INTRGRP_KEY (KeySenseIntr | KeyDataRdyIntr | KeyDataLostIntr | KeyIntr | KeyEndIntr)
  230. //#define INTRGRP_SERIAL (txIntr | txEndIntr | rxIntr | rxEndIntr | rxLostCharIntr| 
  231. //  CTSchgIntr | DSRchgIntr | DCDchgIntr | FEIntr | BrkIntr)
  232. // For Debug 96.6.17
  233. #define INTRGRP_SERIAL (txIntr | txEndIntr | rxIntr | rxEndIntr | rxLostCharIntr| 
  234.  CTSchgIntr | DSRchgIntr | FEIntr | BrkIntr)
  235. #define INTRGRP_AUDIO (AudioIDLEIntr | AudIntr | AudioEndIntr)
  236. #define INTRGRP_GPIO    (DCDChg | BattLockIntr)
  237. #define INTRGRP_POW     (PowerIntr  | BatIntr)
  238. #define SAVE_ICU_REGS
  239. // CPU registers
  240. #define REGCPU_AT 0x00
  241. #define REGCPU_V0 0x04
  242. #define REGCPU_V1 0x08
  243. #define REGCPU_A0 0x0C
  244. #define REGCPU_A1 0x10
  245. #define REGCPU_A2 0x14
  246. #define REGCPU_A3 0x18
  247. #define REGCPU_T0 0x1C
  248. #define REGCPU_T1 0x20
  249. #define REGCPU_T2 0x24
  250. #define REGCPU_T3 0x28
  251. #define REGCPU_T4 0x2C
  252. #define REGCPU_T5 0x30
  253. #define REGCPU_T6 0x34
  254. #define REGCPU_T7 0x38
  255. #define REGCPU_S0 0x3C
  256. #define REGCPU_S1 0x40
  257. #define REGCPU_S2 0x44
  258. #define REGCPU_S3 0x48
  259. #define REGCPU_S4 0x4C
  260. #define REGCPU_S5 0x50
  261. #define REGCPU_S6 0x54
  262. #define REGCPU_S7 0x58
  263. #define REGCPU_T8 0x5C
  264. #define REGCPU_T9 0x60
  265. #define REGCPU_K0 0x64
  266. #define REGCPU_K1 0x68
  267. #define REGCPU_GP 0x6C
  268. #define REGCPU_SP 0x70
  269. #define REGCPU_S8 0x74
  270. #define REGCPU_RA 0x78
  271. // CP0 registers
  272. #define REGCP0_INDEX 0x80
  273. #define REGCP0_RANDOM 0x84
  274. #define REGCP0_ENTRYLO0 0x88
  275. #define REGCP0_ENTRYLO1 0x8C
  276. #define REGCP0_CONTEXT 0x90
  277. #define REGCP0_PAGEMASK 0x94
  278. #define REGCP0_WIRED 0x98
  279. #define REGCP0_COUNT 0x9C
  280. #define REGCP0_ENTRYHI 0xA0
  281. #define REGCP0_COMPARE 0xA4
  282. #define REGCP0_PSR 0xA8
  283. #define REGCP0_CAUSE 0xAC
  284. #define REGCP0_EPC 0xB0
  285. #define REGCP0_CONFIG 0xB4
  286. #define REGCP0_LLADDR 0xB8
  287. #define REGCP0_WATCHLO 0xBC
  288. #define REGCP0_XCONTEXT 0xC0
  289. #define REGCP0_PERR 0xC4
  290. #define REGCP0_TAGLO 0xC8
  291. #define REGCP0_TAGHI 0xCC
  292. #define REGCP0_ERROREPC 0xD0
  293. #ifdef SAVE_ICU_REGS
  294. #define REGGA_MSYSINTREG 0x100
  295. #define REGGA_MPIUINTREG 0x102
  296. #define REGGA_MADUINTREG 0x104
  297. #define REGGA_MKIUINTREG 0x106
  298. #define REGGA_MGIUINTREG 0x108
  299. #define REGGA_MSIUINTREG 0x10A
  300. #endif
  301. #define BUS_SPEED_VALUE 0x2321 //Default bus speed for R4101/Odo