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

Windows CE

开发平台:

Windows_Unix

  1. /*++
  2. THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
  3. ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
  4. THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
  5. PARTICULAR PURPOSE.
  6. Copyright (c) 1995-2000 Microsoft Corporation.  All rights reserved.
  7. Module Name:  
  8.   cmtthal.h
  9. Abstract:  
  10.   this file provides headers used exclusively by the
  11.   HAL routines
  12.   
  13. Functions:
  14.   
  15. Notes:
  16. Revision History:
  17. --*/
  18. #define CPURTCSHORT_PERIOD 1       /* 1miliseconds */
  19. //#define kPeriodicTimerVal 0x47d /* 1 mS at 1.15 MHz */
  20. //#define kPeriodicTimerVal 0x2ceb /* 10 mS at 1.15 MHz */
  21. //#define kPeriodicTimerVal 0x3ee3 /* 14 mS at 1.15 MHz */
  22. //#define kPeriodicTimerVal 0x3b1b /* 13 mS at 1.15 MHz */
  23. #define kModemPeriodicValue 0x1000  // need to set this for real!
  24. // Ok, the memory map (DRAM) is a little messy, but the following
  25. //     guideline should help:
  26. //
  27. // kScreenBufferAddr 0x80008000 (bootblit only)
  28. // kCmttGlobalVirtualBase 0x80009000
  29. // kCmttDMABufferBase 0x8000A000
  30. // kSWModemVariables 0x8000D000
  31. // FRAMEBUFFER_ADDRESS     0x80380000
  32. //
  33. /* cmtt memory starts at this value */
  34. #define kStartOfCmttDRAM   0x8001D000
  35. /* DMA Buffers start here */
  36. #define kCmttDMABufferBase   0x8000A000
  37. /* Serial buffers */
  38. #define kCmttSerialADMABufferOffset   0x00000000
  39. #define kCmttSerialBDMABufferOffset   0x00000400
  40. #define kCmttSerialDMABufferLength   0x00000400
  41. // move the telcom buffer down for testing
  42. #define kCmttTelcomOutDMABufferOffset 0x00000800
  43. #define kCmttTelcomOutDMABufferLength 0x000000C0
  44. #define kCmttTelcomInDMABufferOffset  0x000008C0
  45. #define kCmttTelcomInDMABufferLength  0x000000C0
  46. // for now, cut buffer short to match telecom.
  47. #define kCmttAudioMonitorDMABufferOffset  0x00000980
  48. #define kCmttAudioMonitorDMABufferLength  0x000000C0 // = kCmttTelecomOutDMABufferLength
  49. #define kCmttAudioDMABufferOffset   0x00000A40
  50. #define kCmttAudioDMABufferLength   0x00001000 // 0xC0 
  51. /* Audio buffers (in and out are the same buffer) */
  52. //#define kCmttAudioDMABufferOffset   0x00000800
  53. //#define kCmttAudioDMABufferLength   0x00001000
  54. //#define kCmttAudioDMABufferLength   0x00001000
  55. /* Telecom buffers */
  56. //#define kCmttTelcomOutDMABufferOffset 0x00001800
  57. //#define kCmttTelcomOutDMABufferLength 0x000000C0
  58. //#define kCmttTelcomInDMABufferOffset  0x000018C0
  59. //#define kCmttTelcomInDMABufferLength  0x000000C0
  60. /* Compression buffers */
  61. #define kCmttCompressionBufferOffset   0x00000F80
  62. #define kCmttCompressionBufferLength   0x00000040
  63. #define kCmttDecompressionBufferOffset 0x00001000
  64. #define kCmttDecompressionBufferLength 0x000003C0
  65. #define kCmttDMABufferTotalLength   0x00001A40 // 1980
  66. /* cmtt globals start after display buffer and go to 0xA000 */
  67. #define ERRFALSE(exp) extern char __ERRXX[(exp) != 0]
  68. // changes to include struct "AUDIO_TELCOM_STATE"
  69. //#define kCmttGlobalsLen   88
  70. #define kCmttGlobalsLen   124
  71. #define kCmttGlobalsAddr   (kCmttDMABufferBase - kCmttGlobalsLen)
  72. #define kCmttGlobalsVirtualBase   0x80009000
  73. #define kCmttGlobalsVirtualOffset   (kCmttGlobalsAddr - kCmttGlobalsVirtualBase)
  74. #define kCmttGlobalsMaxLen   0x780 /* decimal 1920 bytes */
  75. /* SW Modem variables start here */
  76. #define kSWModemVariables   0x8000D000
  77. #define kSWModemVariablesLength   0x0000D000
  78. /*  the frame buffers for bootblit() start here.*/
  79. #ifdef BOOTLOADER
  80. #define kScreenBufferAddr             0x80082000
  81. #else
  82. #define kScreenBufferAddr             0x80002000
  83. #endif
  84. //  the real frame buffers are put at the end.
  85. #define FRAMEBUFFER_ADDRESS           0x80380000
  86. #define FBA_PHYS                     (FRAMEBUFFER_ADDRESS & 0x1FFFFFFF)
  87. // The amount of time we will ignore DCD events after we go to sleep
  88. #define kDCDDebounceTime                          0x00007fff
  89. #ifndef ASM_ONLY
  90. #include <winbase.h>
  91. // include sib.h for AUDIO_TELECOM_STATE
  92. //#include <sib.h>
  93. void BootBlit();
  94. typedef volatile struct {
  95. ULONG RTCRollover;
  96. ULONG AlarmRollover;
  97. ULONG Cmtt1Interrupt1Wake;
  98. ULONG Cmtt1Interrupt2Wake;
  99. ULONG Cmtt1Interrupt3Wake;
  100. ULONG Cmtt1Interrupt4Wake;
  101. ULONG Cmtt1Interrupt5Wake;
  102. ULONG Cmtt1Interrupt6Wake;
  103. // Use this for power state.
  104. short autoPowerDownState; //short BatteriesChanged;
  105. short modemActive;
  106. short touchActive;
  107. USHORT batteryAdcReading;
  108. USHORT adcReadings[6];
  109. ULONG audioRxActive;
  110. UCHAR globalLedCommand[8];
  111. ULONG pcmciaIREQActive;
  112. ULONG journalSystemIdle;
  113. SYSTEMTIME baseSystemTime;
  114. // Added for telcom/swmdm function
  115. // AUDIO_TELECOM_STATE AudioTelecomMode;
  116. ULONG audioOwner;
  117. ULONG wakeKey;
  118. ULONG dcdSleepTime;
  119. // Added for power management drvr.
  120. ULONG Cmtt1Interrupt1Save;
  121. ULONG Cmtt1Interrupt2Save;
  122. ULONG Cmtt1Interrupt3Save;
  123. ULONG Cmtt1Interrupt4Save;
  124. ULONG Cmtt1Interrupt5Save;
  125. ULONG Cmtt1Interrupt6Save;
  126. } CmttGlobals;
  127. // Alert at compile time if size of our structure changes versus our size constant
  128. ERRFALSE(sizeof(CmttGlobals) == kCmttGlobalsLen);
  129. #define CMTTGLOBALS ((CmttGlobals *) kCmttGlobalsAddr)
  130. #endif
  131. #define CmttGlobals_RTCRollover 0
  132. #define CmttGlobals_AlarmRollover 4
  133. #define CmttGlobals_Cmtt1Interrupt1Wake 8
  134. #define CmttGlobals_Cmtt1Interrupt2Wake 12
  135. #define CmttGlobals_Cmtt1Interrupt3Wake 16
  136. #define CmttGlobals_Cmtt1Interrupt4Wake 20
  137. #define CmttGlobals_Cmtt1Interrupt5Wake 24
  138. #define CmttGlobals_Cmtt1Interrupt6Wake 28
  139. // use this for power state.
  140. #define CmttGlobals_autoPowerDownState 32
  141. //#define CmttGlobals_BatteriesChanged 32
  142. #define CmttGlobals_modemActive 34
  143. #define CmttGlobals_touchActive 36
  144. #define CmttGlobals_batteryAdcReading 38
  145. #define CmttGlobals_adcReadings 40
  146. #define CmttGlobals_audioRxActive 52
  147. #define CmttGlobals_globalLedCommand 56
  148. #define CmttGlobals_pcmciaIREQActive 64
  149. #define CmttGlobals_journalSystemIdle 68
  150. #define CmttGlobals_baseSystemTime 72
  151. // added for telcom/swmdm function
  152. #define CmttGlobals_audioOwner 88
  153. #define CmttGlobals_wakeKey 92
  154. #define CmttGlobals_dcdSleepTime 96
  155. // Added for power management drvr.
  156. #define CmttGlobals_Cmtt1Interrupt1Save 100
  157. #define CmttGlobals_Cmtt1Interrupt2Save 104
  158. #define CmttGlobals_Cmtt1Interrupt3Save 108
  159. #define CmttGlobals_Cmtt1Interrupt4Save 112
  160. #define CmttGlobals_Cmtt1Interrupt5Save 116
  161. #define CmttGlobals_Cmtt1Interrupt6Save 120
  162. /* boot blit constant */
  163. #define kBootScreen 0xbfc00000
  164. /* mask matrix constants */
  165. #define kInterruptMaskMatrixRowWidthBytes 20 /* width of a row is 5 cols * 4 bytes/col */
  166. #define kInterruptMaskMatrixColWidthBytes 4 /* width of a col is a long (4 bytes) /*
  167. /*  wake key table. */
  168. #define ModemNeedResetMask 0x00000001 /* bit 0 */
  169. #define SYSINTR_RTC_INT5MASK kRTCMask
  170. #define SYSINTR_RTC_ALARM_INT5MASK kAlarmMask
  171. #define SYSINTR_RESCHED_INT5MASK kPeriodicMask
  172. /*  add SYSINTR_RESCHED_INT1MASK for power management. */
  173. #define SYSINTR_RESCHED_INT1MASK kRescheduleMask
  174. //#define SYSINTR_RESCHED_INT1MASK kIntVideoDFMask
  175. #define SYSINTR_AUDIO_INT1MASK (kAudioSoundHalfMask | kAudioSoundFullMask)
  176. #define SYSINTR_TELECOM_INT1MASK (kSIBTelHalfMask |  kSIBTelFullMask)
  177. #define SYSINTR_SIB_INT1MASK (kSIBSF0Mask | kSIBPositiveMask)
  178. #define SYSINTR_SIB_INT3MASK kSIBRingDetectPosMask
  179. #define SYSINTR_MINICARD_INT3MASK kMiniCard2BusyPosMask
  180. #define SYSINTR_MAGICBUS_INT2MASK (kMagicBusTXBufferAvailableMask | kMagicBusTXErrorMask | kMagicBusEmptyMask | kMagicBusRXErrorMask | 
  181. kMagicBusCmdDetMask | kMagicBusDMAFullMask | kMagicBusPositiveMask | kMagicBusNegativeMask)
  182. #define SYSINTR_IRDA_INT2MASK (kIrDARXMask | kIrDATXMask | kIrDADMAFullMask | kIrDADMAHalfMask)
  183. #define SYSINTR_MMODULE_INT3MASK kMModuleCardWaitPosMask
  184. #define SYSINTR_KEYBOARD_INT4MASK kKeyboardAttentionNegMask
  185. //  On-Button interrupt is no longer associated with keyboard.
  186. //#define SYSINTR_KEYBOARD_INT5MASK (kKeyboardSPIInPosMask | kKeyboardOnButtonPosMask)
  187. #define SYSINTR_KEYBOARD_INT5MASK kKeyboardSPIInPosMask
  188. #define SYSINTR_SERIAL_INT2MASK (kSerialRXMask | kSerialTXMask)
  189. #define SYSINTR_SERIAL_INT3MASK kSerialCTSPosMask
  190. #define SYSINTR_SERIAL_INT4MASK kSerialCTSNegMask
  191. #define SYSINTR_SERIAL_INT5MASK (kSerialDCDNegMask | kSerialDCDPosMask)
  192. #define SYSINTR_PCMCIA_STATE_INT5MASK kMModulePosMask
  193. /*  add for power.*/
  194. #define SYSINTR_TOUCHSAMPLE_INT1MASK    kTouchSampleMask
  195. /* defines for interrupt mask matrix */
  196. #define MASK_INDEX_SIB_1 0
  197. #define MASK_INDEX_SIB_3 4
  198. #define MASK_INDEX_SERIAL_2 8
  199. #define MASK_INDEX_SERIAL_3 12
  200. #define MASK_INDEX_SERIAL_4 16
  201. #define MASK_INDEX_SERIAL_5 20
  202. #define MASK_INDEX_KEYBOARD_4 24
  203. #define MASK_INDEX_KEYBOARD_5 28
  204. #define MASK_INDEX_MMODULE_3 32
  205. #define MASK_INDEX_MINICARD_3 36
  206. #define MASK_INDEX_MAGICBUS_2 40
  207. #define MASK_INDEX_IRDA_2 44
  208. #define MASK_INDEX_AUDIO_1 48
  209. #define MASK_INDEX_TELECOM_1 52
  210. #define MASK_INDEX_PCMCIA_STATE_5 56
  211. #define NUM_INT_MASKS 15 /* Number of masks in the mask array */