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

Windows CE

开发平台:

Windows_Unix

  1. /*********************************************************************
  2.               Copyright (c) 1996 Philips Electronics, Inc.
  3.   Copyright (c) 1999-2000 Microsoft Corporation.  All rights reserved
  4.  *********************************************************************/
  5. #ifndef __POSEIDON__
  6. #define __POSEIDON__
  7. #define SampleRateToDividerModulus(x) (9216000 / (x * 32) - 1)
  8. #define kPoseidonSDram1ModeAddress 0xB0F00000
  9. #define kPoseidonSDram0ModeAddress 0xB0E00000
  10. #define kPoseidonModuleAddress 0xB0C00000
  11. #define kPoseidonBreakpointModuleAddress 0xFF000010
  12. #define kPoseidonChipSelect3Address 0xB0800000
  13. #define kPoseidonChipSelect2Address 0xB0400000
  14. #define kPoseidonChipSelect1Address 0xB0000000
  15. #define kCard1Addr (0x64000000 - KUSER_OFFSET)
  16. #define kCard2Addr (0x68000000 - KUSER_OFFSET)
  17. #define kCard1Size 0x04000000
  18. #define kCard2Size 0x04000000
  19. #define kCard1AttributeAddress 0x88000000
  20. #define kCard1IOAddress 0x88000000
  21. #define kCard2AttributeAddress 0x8C000000
  22. #define kCard2IOAddress 0x8C000000
  23. #define kDRAMBank0Offset 0x0
  24. #define kDRAMBank1Offset 0x200000
  25. #define kProtectionLimit 0x10000000 /* limit address for Poseidon protection */
  26. #define kBootParametersOffset 0 /* offset from beginning of ROM in device */
  27. #define kRestorePersistentRAMSize  0x00020000
  28. #define kSystemRAMAddr   0x00000000
  29. #define kBootStackSize 0x2000
  30. /* NOTE: change these two in tandem */
  31. #define kVectorDispatchTableSize 2048
  32. #define kVectorDispatchReMapMask 0xC
  33. /***** Poseidon Exception Number Equates  *****/
  34. /* With Poseidon there are no core exception numbers */
  35. #define kFirstRealVector 0
  36. #define kLCDInterrupt 0
  37. #define kDFInterrupt 1
  38. #define kCHIHalfInterrupt 2
  39. #define kCHIFullInterrupt 3
  40. #define kCHIDMACountInterrupt 4
  41. #define kCHIinInterruptA 5
  42. #define kCHIinintInterruptB 6
  43. #define kCHIactInterrupt 7
  44. #define kCHIErrorInterrupt 8
  45. #define kSoundHalfInterrupt 9
  46. #define kSoundFullInterrupt 10
  47. #define kTelHalfInterrupt 11
  48. #define kTelFullInterrupt 12
  49. #define kSoundDMACountInterrupt 13
  50. #define kTelDMACountInterrupt 14
  51. #define kLeftSoundClipInterrupt 15
  52. #define kRightSoundClipInterrupt 16
  53. #define kvalSoundPositiveInterrupt 17
  54. #define kvalSoundNegativeInterrupt 18
  55. #define kvalTelPositiveInterrupt 19
  56. #define kvalTelNegativeInterrupt 20
  57. #define kSoundinInterrupt 21
  58. #define kTelinInterrupt 22
  59. #define kSIBsf0Interrupt 23
  60. #define kSIBsf1Interrupt 24
  61. #define kSIBPositiveInterrupt 25
  62. #define kSIBNegativeInterrupt 26
  63. #define kInterrupt1Reserved4 27
  64. #define kInterrupt1Reserved3 28
  65. #define kInterrupt1Reserved2 29
  66. #define kInterrupt1Reserved1 30
  67. #define kInterrupt1Reserved0 31
  68. #define kUARTARXInterrupt 32
  69. #define kUARTARXoverrunInterrupt 33
  70. #define kUARTAFrameErrorInterrupt 34
  71. #define kUARTABreakInterrupt 35
  72. #define kUARTAParityErrorInterrupt 36
  73. #define kUARTATXInterrupt 37
  74. #define kUARTATXoverrunInterrupt 38
  75. #define kUARTAEmptyInterrupt 39
  76. #define kUARTADMAFullInterrupt 40
  77. #define kUARTADMAHalfInterrupt 41
  78. #define kUARTBRXInterrupt 42
  79. #define kUARTBRXoverrunInterrupt 43
  80. #define kUARTBFrameErrorInterrupt 44
  81. #define kUARTBBreakInterrupt 45
  82. #define kUARTBParityErrorInterrupt 46
  83. #define kUARTBTXInterrupt 47
  84. #define kUARTBTXoverrunInterrupt 48
  85. #define kUARTBEmptyInterrupt 49
  86. #define kUARTBDMAFullInterrupt 50
  87. #define kUARTBDMAHalfInterrupt 51
  88. #define kMagicBusTXBufferAvailableInterrupt 52
  89. #define kMagicBusTXErrorInterrupt 53
  90. #define kMagicBusEmptyInterrupt 54
  91. #define kMagicBusRXBufferAvailableInterrupt 55
  92. #define kMagicBusRXErrorInterrupt 56
  93. #define kMagicBusDetInterrupt 57
  94. #define kMagicBusDMAFullInterrupt 58
  95. #define kMagicBusDMAHalfInterrupt 59
  96. #define kMagicBusPositiveInterrupt 60
  97. #define kMagicBusNegativeInterrupt 61
  98. #define kInterrupt2Reserved1 62
  99. #define kInterrupt2Reserved0 63
  100. #define kmfioPositiveInterrupt31 64
  101. #define kmfioPositiveInterrupt30 65
  102. #define kmfioPositiveInterrupt29 66
  103. #define kmfioPositiveInterrupt28 67
  104. #define kmfioPositiveInterrupt27 68
  105. #define kmfioPositiveInterrupt26 69
  106. #define kmfioPositiveInterrupt25 70
  107. #define kmfioPositiveInterrupt24 71
  108. #define kmfioPositiveInterrupt23 72
  109. #define kmfioPositiveInterrupt22 73
  110. #define kmfioPositiveInterrupt21 74
  111. #define kmfioPositiveInterrupt20 75
  112. #define kmfioPositiveInterrupt19 76
  113. #define kmfioPositiveInterrupt18 77
  114. #define kmfioPositiveInterrupt17 78
  115. #define kmfioPositiveInterrupt16 79
  116. #define kmfioPositiveInterrupt15 80
  117. #define kmfioPositiveInterrupt14 81
  118. #define kmfioPositiveInterrupt13 82
  119. #define kmfioPositiveInterrupt12 83
  120. #define kmfioPositiveInterrupt11 84
  121. #define kmfioPositiveInterrupt10 85
  122. #define kmfioPositiveInterrupt9 86
  123. #define kmfioPositiveInterrupt8 87
  124. #define kmfioPositiveInterrupt7 88
  125. #define kmfioPositiveInterrupt6 89
  126. #define kmfioPositiveInterrupt5 90
  127. #define kmfioPositiveInterrupt4 91
  128. #define kmfioPositiveInterrupt3 92
  129. #define kmfioPositiveInterrupt2 93
  130. #define kmfioPositiveInterrupt1 94
  131. #define kmfioPositiveInterrupt0 95
  132. #define kmfioNegativeInterrupt31 96
  133. #define kmfioNegativeInterrupt30 97
  134. #define kmfioNegativeInterrupt29 98
  135. #define kmfioNegativeInterrupt28 99
  136. #define kmfioNegativeInterrupt27 100
  137. #define kmfioNegativeInterrupt26 101
  138. #define kmfioNegativeInterrupt25 102
  139. #define kmfioNegativeInterrupt24 103
  140. #define kmfioNegativeInterrupt23 104
  141. #define kmfioNegativeInterrupt22 105
  142. #define kmfioNegativeInterrupt21 106
  143. #define kmfioNegativeInterrupt20 107
  144. #define kmfioNegativeInterrupt19 108
  145. #define kmfioNegativeInterrupt18 109
  146. #define kmfioNegativeInterrupt17 110
  147. #define kmfioNegativeInterrupt16 111
  148. #define kmfioNegativeInterrupt15 112
  149. #define kmfioNegativeInterrupt14 113
  150. #define kmfioNegativeInterrupt13 114
  151. #define kmfioNegativeInterrupt12 115
  152. #define kmfioNegativeInterrupt11 116
  153. #define kmfioNegativeInterrupt10 117
  154. #define kmfioNegativeInterrupt9 118
  155. #define kmfioNegativeInterrupt8 119
  156. #define kmfioNegativeInterrupt7 120
  157. #define kmfioNegativeInterrupt6 121
  158. #define kmfioNegativeInterrupt5 122
  159. #define kmfioNegativeInterrupt4 123
  160. #define kmfioNegativeInterrupt3 124
  161. #define kmfioNegativeInterrupt2 125
  162. #define kmfioNegativeInterrupt1 126
  163. #define kmfioNegativeInterrupt0 127
  164. #define kRTCInterrupt 128
  165. #define kAlarmInterrupt 129
  166. #define kPeriodicInterrupt 130
  167. #define kStopTimerInterrupt 131
  168. #define kPositivePowerInterrupt 132
  169. #define kNegativePowerInterrupt 133
  170. #define kPositivePowerokInterrupt 134
  171. #define kNegativePowerokInterrupt 135
  172. #define kPositiveOnButtonInterrupt 136
  173. #define kNegativeOnButtonInterrupt 137
  174. #define kSPIBufferAvailableInterrupt 138
  175. #define kSPIErrorInterrupt 139
  176. #define kSPIrcvInterrupt 140
  177. #define kSPIEmptyInterrupt 141
  178. #define kIRconsmInterrupt 142
  179. #define kcarstInterrupt 143
  180. #define kPositivecarInterrupt 144
  181. #define kNegativecarInterrupt 145
  182. #define kioPositiveInterrupt6 146
  183. #define kioPositiveInterrupt5 147
  184. #define kioPositiveInterrupt4 148
  185. #define kioPositiveInterrupt3 149
  186. #define kioPositiveInterrupt2 150
  187. #define kioPositiveInterrupt1 151
  188. #define kioPositiveInterrupt0 152
  189. #define kioNegativeInterrupt6 153
  190. #define kioNegativeInterrupt5 154
  191. #define kioNegativeInterrupt4 155
  192. #define kioNegativeInterrupt3 156
  193. #define kioNegativeInterrupt2 157
  194. #define kioNegativeInterrupt1 158
  195. #define kioNegativeInterrupt0 159
  196. #define kGlacier1IOPositiveInterrupt12 160
  197. #define kGlacier1IOPositiveInterrupt11 161
  198. #define kGlacier1IOPositiveInterrupt10 162
  199. #define kGlacier1IOPositiveInterrupt3 163
  200. #define kGlacier1IOPositiveInterrupt2 164
  201. #define kGlacier1IOPositiveInterrupt1 165
  202. #define kGlacier1IONegativeInterrupt12 166
  203. #define kGlacier1IONegativeInterrupt11 167
  204. #define kGlacier1IONegativeInterrupt10 168
  205. #define kGlacier1IONegativeInterrupt3 169
  206. #define kGlacier1IONegativeInterrupt2 170
  207. #define kGlacier1IONegativeInterrupt1 171
  208. #define kGlacier2IOPositiveInterrupt12 172
  209. #define kGlacier2IOPositiveInterrupt11 173
  210. #define kGlacier2IOPositiveInterrupt10 174
  211. #define kGlacier2IOPositiveInterrupt3 175
  212. #define kGlacier2IOPositiveInterrupt2 176
  213. #define kGlacier2IOPositiveInterrupt1 177
  214. #define kGlacier2IONegativeInterrupt12 178
  215. #define kGlacier2IONegativeInterrupt11 179
  216. #define kGlacier2IONegativeInterrupt10 180
  217. #define kGlacier2IONegativeInterrupt3 181
  218. #define kGlacier2IONegativeInterrupt2 182
  219. #define kGlacier2IONegativeInterrupt1 183
  220. #define kNumHandlers 184
  221. #define kNumPoseidonHandlers 160
  222. /***** BIU Module Equates *****/
  223. /***** Memory Configuration Register 0 Equates (PoseidonModule.memoryConfiguration0) *****/
  224. #define kMemDClkoutTriStateMask 0x40000000 /* 30 */
  225. #define kMemDisDqmInitMask 0x20000000 /* 29 */
  226. #define kMemEnSdramPowDownMask 0x10000000 /* 28 */
  227. #define kMemShowPoseidonMask 0x08000000 /* 27 */
  228. #define kMemEnAddrRmap2Mask 0x04000000 /* 26 */
  229. #define kMemEnAddrRmap1Mask 0x02000000 /* 25 */
  230. #define kMemEnPageModeWrinMask 0x01000000 /* 24 */
  231. #define kMemEnCs3UserMask 0x00800000 /* 23 */
  232. #define kMemEnCs2UserMask 0x00400000 /* 22 */
  233. #define kMemEnCs1UserMask 0x00200000 /* 21 */
  234. #define kMemEnCs1Bank01Mask 0x00100000 /* 20 */
  235. #define kMemBank1ConfMask 0x000c0000 /* 19:18 */
  236. #define kMemBank0ConfMask 0x00030000 /* 17:16 */
  237. #define kMemBank1RowSelMask 0x0000c000 /* 15:14 */
  238. #define kMemBank0RowSelMask 0x00003000 /* 13:12 */
  239. #define kMemBank1ColSelMask 0x00000f00 /* 11:8 */
  240. #define kMemBank0ColSelMask 0x000000f0 /* 7:4 */
  241. #define kMemCs332BitMask 0x00000008 /* 3 */
  242. #define kMemCs232BitMask 0x00000004 /* 2 */
  243. #define kMemCs132BitMask 0x00000002 /* 1 */
  244. #define kMemCs032BitMask 0x00000001 /* 0 */
  245. /***** Values for kMemBank1ConfMask field *****/
  246. #define kMemEnBank1Sdram_16 0x000c0000
  247. #define kMemEnBank1Sdram_8 0x00080000
  248. #define kMemEnBank1Dram_32 0x00040000
  249. #define kMemEnBank1Dram_16 0x00000000
  250. #define kMemBank1ConfShift 18
  251. /***** Values for kMemBank0ConfMask field *****/
  252. #define kMemEnBank0Sdram_16 0x00030000
  253. #define kMemEnBank0Sdram_8 0x00020000
  254. #define kMemEnBank0Dram_32 0x00010000
  255. #define kMemEnBank0Dram_16 0x00000000
  256. #define kMemBank0ConfShift 16
  257. /***** Values for kMemBank1RowSelMask field *****/
  258. #define kMemBank1RowSel3 0x0000c000
  259. #define kMemBank1RowSel2 0x00008000
  260. #define kMemBank1RowSel1 0x00004000
  261. #define kMemBank1RowSel0 0x00000000
  262. #define kMemBank1RowSelShift 14
  263. /***** Values for kMemBank0RowSelMask field *****/
  264. #define kMemBank0RowSel3 0x00003000
  265. #define kMemBank0RowSel2 0x00002000
  266. #define kMemBank0RowSel1 0x00001000
  267. #define kMemBank0RowSel0 0x00000000
  268. #define kMemBank0RowSelShift 12
  269. /***** Values for kMemBank1ColSelMask field *****/
  270. #define kMemBank1ColSel9 0x00000900
  271. #define kMemBank1ColSel8 0x00000800
  272. #define kMemBank1ColSel7 0x00000700
  273. #define kMemBank1ColSel6 0x00000600
  274. #define kMemBank1ColSel5 0x00000500
  275. #define kMemBank1ColSel4 0x00000400
  276. #define kMemBank1ColSel3 0x00000300
  277. #define kMemBank1ColSel2 0x00000200
  278. #define kMemBank1ColSel1 0x00000100
  279. #define kMemBank1ColSel0 0x00000000
  280. #define kMemBank1ColSelShift 8
  281. /***** Values for kMemBank0ColSelMask field *****/
  282. #define kMemBank0ColSel9 0x00000090
  283. #define kMemBank0ColSel8 0x00000080
  284. #define kMemBank0ColSel7 0x00000070
  285. #define kMemBank0ColSel6 0x00000060
  286. #define kMemBank0ColSel5 0x00000050
  287. #define kMemBank0ColSel4 0x00000040
  288. #define kMemBank0ColSel3 0x00000030
  289. #define kMemBank0ColSel2 0x00000020
  290. #define kMemBank0ColSel1 0x00000010
  291. #define kMemBank0ColSel0 0x00000000
  292. #define kMemBank0ColSelShift 4
  293. /***** Memory Configuration Register 1 Equates (PoseidonModule.memoryConfiguration1) *****/
  294. #define kMemMcs3AccVal1Mask 0xf0000000 /* 31:28 */
  295. #define kMemMcs3AccVal2Mask 0x0f000000 /* 27:24 */
  296. #define kMemMcs2AccVal1Mask 0x00f00000 /* 23:20 */
  297. #define kMemMcs2AccVal2Mask 0x000f0000 /* 19:16 */
  298. #define kMemMcs1AccVal1Mask 0x0000f000 /* 15:12 */
  299. #define kMemMcs1AccVal2Mask 0x00000f00 /* 11:8 */
  300. #define kMemMcs0AccVal1Mask 0x000000f0 /* 7:4 */
  301. #define kMemMcs0AccVal2Mask 0x0000000f /* 3:0 */  
  302. #define kMemMcs3AccVal1Shift 28
  303. #define kMemMcs3AccVal2Shift 24
  304. #define kMemMcs2AccVal1Shift 20
  305. #define kMemMcs2AccVal2Shift 16
  306. #define kMemMcs1AccVal1Shift 12
  307. #define kMemMcs1AccVal2Shift 8
  308. #define kMemMcs0AccVal1Shift 4
  309. #define kMemMcs0AccVal2Shift 0
  310. /***** Memory Configuration Register 2 Equates (PoseidonModule.memoryConfiguration2) *****/
  311. #define kMemCs3AccVal1Mask 0xf0000000 /* 31:28 */
  312. #define kMemCs3AccVal2Mask 0x0f000000 /* 27:24 */
  313. #define kMemCs2AccVal1Mask 0x00f00000 /* 23:20 */
  314. #define kMemCs2AccVal2Mask 0x000f0000 /* 19:16 */
  315. #define kMemCs1AccVal1Mask 0x0000f000 /* 15:12 */
  316. #define kMemCs1AccVal2Mask 0x00000f00 /* 11:8 */ 
  317. #define kMemCs0AccVal1Mask 0x000000f0 /* 7:4 */  
  318. #define kMemCs0AccVal2Mask 0x0000000f /* 3:0 */  
  319. #define kMemCs3AccVal1Shift 28
  320. #define kMemCs3AccVal2Shift 24
  321. #define kMemCs2AccVal1Shift 20
  322. #define kMemCs2AccVal2Shift 16
  323. #define kMemCs1AccVal1Shift 12
  324. #define kMemCs1AccVal2Shift 8
  325. #define kMemCs0AccVal1Shift 4
  326. #define kMemCs0AccVal2Shift 0
  327. /***** Memory Configuration Register 3 Equates (PoseidonModule.memoryConfiguration3) *****/
  328. #define kMemCard2AccValMask 0xf0000000  /* 31:28 */
  329. #define kMemCard1AccValMask 0x0f000000  /* 27:24 */
  330. #define kMemCard2IoAccValMask 0x00f00000  /* 23:20 */
  331. #define kMemCard1IoAccValMask 0x000f0000  /* 19:16 */
  332. #define kMemEnMcs3BurstMask 0x00008000 /* 15 */
  333. #define kMemEnMcs2BurstMask 0x00004000 /* 14 */
  334. #define kMemEnMcs1BurstMask 0x00002000 /* 13 */
  335. #define kMemEnMcs0BurstMask 0x00001000 /* 12 */
  336. #define kMemEnCs3MurstMask 0x00000800 /* 11 */
  337. #define kMemEnCs2burstMask 0x00000400 /* 10 */
  338. #define kMemEnCs1BurstMask 0x00000200 /* 9 */
  339. #define kMemEnCs0BurstMask 0x00000100 /* 8 */
  340. #define kMemCard2WaitEnMask 0x00000080 /* 7 */
  341. #define kMemCard1WaitEnMask 0x00000040 /* 6 */
  342. #define kMemCard2IoEnMask 0x00000020 /* 5 */
  343. #define kMemCard1IoEnMask 0x00000010 /* 4 */
  344. #define kMemCard2AccValShift 28
  345. #define kMemCard1AccValShift 24
  346. #define kMemCard2IoAccValShift 20
  347. #define kMemCard1IoAccValShift 16
  348. #define kWaitStates15 0x0F
  349. #define kWaitStates14 0x0E
  350. #define kWaitStates13 0x0D
  351. #define kWaitStates12 0x0C
  352. #define kWaitStates11 0x0B
  353. #define kWaitStates10 0x0A
  354. #define kWaitStates9 0x09
  355. #define kWaitStates8 0x08
  356. #define kWaitStates7 0x07
  357. #define kWaitStates6 0x06
  358. #define kWaitStates5 0x05
  359. #define kWaitStates4 0x04
  360. #define kWaitStates3 0x03
  361. #define kWaitStates2 0x02
  362. #define kWaitStates1 0x01
  363. #define kWaitStates0 0x00
  364. /***** Memory Configuration Register 4 Equates (PoseidonModule.memoryConfiguration4) *****/
  365. #define kMemEnBank1HDramMask 0x80000000 /* 31 */
  366. #define kMemEnBank0HDramMask 0x40000000 /* 30 */
  367. #define kMemEnArbitrationMask 0x20000000 /* 29 */
  368. #define kMemDisableSnoopMask 0x10000000 /* 28 */
  369. #define kMemClearWriteBusErrIntMask 0x08000000 /* 27 */
  370. #define kMemEnBank1ExtraClkMask 0x04000000 /* 26 */
  371. #define kMemEnBank0ExtraClkMask 0x02000000 /* 25 */
  372. #define kMemEnWatchDogTimerMask 0x01000000 /* 24 */
  373. #define kMemWatchDogValMask 0x00f00000 /* 23:20 */
  374. #define kMemPowerDownMask 0x00010000 /* 16 */
  375. #define kMemEnBank1RefreshMask 0x00008000 /* 15 */
  376. #define kMemEnBank0RefreshMask 0x00004000 /* 14 */
  377. #define kMemBank1RefreshValMask 0x00003f00 /* 13:8 */
  378. #define kMemBank0RefreshValMask 0x0000003f /* 5:0 */
  379. #define kMemWatchDogValShift 20
  380. #define kMemBank1RefreshValShift 8
  381. #define kMemBank0RefreshValShift 0
  382. #define kRefreshTime15usec 0
  383. #define kRefreshTime60usec 1
  384. #define kRefreshTime90usec 2
  385. #define kRefreshTime120usec 3
  386. #define kRefreshTime150usec 4
  387. #define kRefreshTime180usec 5
  388. #define KWatchDogTime1_7usec 0
  389. #define KWatchDogTime3_4usec 1
  390. #define KWatchDogTime5_2usec 2
  391. #define KWatchDogTime6_9usec 3
  392. #define KWatchDogTime8_6usec 4
  393. #define KWatchDogTime10_3usec 5
  394. #define KWatchDogTime12_0usec 6
  395. #define KWatchDogTime13_8usec 7
  396. #define KWatchDogTime15_5usec 8
  397. #define MEM_WATCHDOG_VAL_TO_MASK(val) (((val) & 0xf) << kMemWatchDogValShift)
  398. #define MEM_BANK1_REFRESH_VAL_TO_MASK(val) (((val) & 0x3f) << kMemBank1RefreshValShift)
  399. #define MEM_BANK0_REFRESH_VAL_TO_MASK(val) (((val) & 0x3f) << kMemBank0RefreshValShift)
  400. /***** Memory Configuration Register 5 Equates (PoseidonModule.memoryConfiguration5) *****/
  401. #define kMemRegion2StartValMask 0xfffffe00 /* 31:9 */
  402. #define kMemRegion2MaskMask 0x0000000f /* 3:0 */
  403. #define kMemRegion2StartValShift 9
  404. /***** Memory Configuration Register 6 Equates (PoseidonModule.memoryConfiguration6) *****/
  405. #define kMemRegion1StartValMask 0xfffffe00 /* 31:9 */
  406. #define kMemRegion1MaskMask 0x0000000f /* 3:0 */
  407. #define kMemRegion1StartValShift 9
  408. /***** Memory Configuration Register 7 Equates (PoseidonModule.memoryConfiguration7) *****/
  409. #define kMemRegion2DestAddrMask 0xfffffe00 /* 31:9 */
  410. #define kMemRegion2DestAddrShift 9
  411. /***** Memory Configuration Register 8 Equates (PoseidonModule.memoryConfiguration8) *****/
  412. #define kMemRegion1DestAddrMask 0xfffffe00 /* 31:9 */
  413. #define kMemRegion1DestAddrShift 9
  414. /***** Video Module Equates *****/
  415. /***** Video Control Register Equates (PoseidonModule.videoControl) *****/
  416. #define kVideoLineCntMask 0xffc00000 /* 31:22 */
  417. #define kVideoLoadDelayMask 0x00200000 /* 21 */
  418. #define kVideoBaudValueMask 0x001f0000 /* 20:16 */
  419. #define kVideoDoneValueMask 0x0000fe00 /* 15:9 */
  420. #define kVideoEnFreezeFrameMask 0x00000100 /* 8 */
  421. #define kVideoBitDepthMask 0x000000c0 /* 7:6 */
  422. #define kVideoDisplaySplitMask 0x00000020 /* 5 */
  423. #define kVideoDisplay8Mask 0x00000010 /* 4 */
  424. #define kVideoDfModeMask 0x00000008 /* 3 */
  425. #define kVideoInverseVideoMask 0x00000004 /* 2 */
  426. #define kVideoDisplayOnMask 0x00000002 /* 1 */
  427. #define kVideoEnVideoMask 0x00000001 /* 0 */
  428. #define kVideoLineCntShift 22
  429. #define kVideoBaudValueShift 16
  430. #define kVideoBitDepthShift 6
  431. /***** Values for kVideoDoneValueMask field *****/
  432. #define kVideoDoneDisableMask 0x0000fe00
  433. #define kVideoDoneEnableMask 0x00000800
  434. /***** Values for kVideoBitDepthMask field *****/
  435. #define kVideoColor8BitMask 0x000000c0
  436. #define kVideoGrey4BitMask 0x00000080
  437. #define kVideoGrey2BitMask 0x00000040
  438. #define kVideoMonoMask 0x00000000
  439. /***** Video Rate & Screen Size Equates (PoseidonModule.videoRateAndScreen) *****/
  440. #define kVideoRateMask 0xffc00000 /* 31:22 */
  441. #define kVideoHorizValueMask 0x001ff000 /* 20:12 */
  442. #define kVideoLineValueMask 0x000003ff /* 9:0 */
  443.  
  444. #define kVideoRateShift    22
  445. #define kVideoHorizValueShift 12
  446. #define kVideoLineValueShift 0
  447. /***** Video High Buffer Equates (PoseidonModule.videoHighBuffer) *****/
  448. #define kVideoBankMask 0xfff00000 /* 31:20 */
  449. #define kVideoBaseHighMask 0x000ffff0 /* 19:4 */
  450. #define kVideoBankShift 20
  451. #define kVideoBaseHighShift 4
  452. /***** Video Low Buffer & DF Equates (PoseidonModule.videoLowBufferAndDf) *****/
  453. #define kVideoDfValueMask 0xff000000 /* 31:24 */
  454. #define kVideoFrameValueMask 0x00f00000 /* 23:20 */
  455. #define kVideoBaseLowMask 0x000ffff0 /* 19:4 */
  456. #define kVideoDfValueShift 24 
  457. #define kVideoBaseLowShift 4
  458. #define kVideoFrameValueDefaultMask 0x00000000
  459. /***** Video Red Palette Equates (PoseidonModule.videoRedPalette) *****/
  460. #define kVideoRedSelectMask 0xffffffff /* 31:0 */
  461. /***** Video Green Palette Equates (PoseidonModule.videoGreenPalette) *****/
  462. #define kVideoGreenSelectMask 0xffffffff /* 31:0 */
  463. /***** Video Blue Palette Equates (PoseidonModule.videoBluePalette) *****/
  464. #define kVideoBlueSelectMask 0x0000ffff /* 15:0 */
  465. /***** Video 2 of 3 Dither Equates (PoseidonModule.videoDither2Of3) *****/
  466. #define kVideoPattern2Of3Mask 0x00000fff /* 11:0 */
  467. /***** Video n of 4 Dither Equates (PoseidonModule.videoDitherNOf4) *****/
  468. #define kVideoPattern3Of4Mask 0xffff0000 /* 31:16 */
  469. #define kVideoPattern2Of4Mask 0x0000ffff /* 15:0 */
  470. #define kVideoPattern3Of4Shift 16
  471. #define kVideoPattern2Of4Shift 0
  472. /***** Video 4 of 5 Dither Equates (PoseidonModule.videoDither4Of5) *****/
  473. #define kVideoPattern4Of5Mask 0x000fffff /* 19:0 */
  474. /***** Video 3 of 5 Dither Equates (PoseidonModule.videoDither3Of5) *****/
  475. #define kVideoPattern3Of5Mask 0x000fffff /* 19:0 */
  476. /***** Video 6 of 7 Dither Equates (PoseidonModule.videoDither6Of7) *****/
  477. #define kVideoPattern6Of7Mask 0x0fffffff /* 27:0 */
  478. /***** Video 5 of 7 Dither Equates (PoseidonModule.videoDither5Of7) *****/
  479. #define kVideoPattern5Of7Mask 0x0fffffff /* 27:0 */
  480. /***** Video 4 of 7 Dither Equates (PoseidonModule.videoDither4Of7) *****/
  481. #define kVideoPattern4Of7Mask 0x0fffffff /* 27:0 */
  482. /***** SIB Module Equates *****/
  483. /***** SIB Size Register Equates (PoseidonModule.sibSize) *****/
  484. #define kSibTelSizeShift   0
  485. #define kSibSoundSizeShift 16
  486. #define kSibTelSizeMask   (0x3ffc << kSibTelSizeShift) /* 29:18 */
  487. #define kSibSoundSizeMask   (0x3ffc << kSibSoundSizeShift) /* 13:2 */
  488. #define kSibBufferSizeMaxBytes 0x4000 /* 16 KBytes */
  489. #define SIB_TELBUF_BYTES_TO_MASK(bytes) ((((bytes) >> 2) & 0xfff) << kSIBTelSizeShift)
  490. #define SIB_SNDBUF_BYTES_TO_MASK(bytes) ((((bytes) >> 2) & 0xfff) << kSIBSoundSizeShift)
  491. #define SIB_TELBUF_MASK_TO_BYTES(mask) ((((mask) >> kSIBTelSizeShift) & 0xfff) << 2)
  492. #define SIB_SNDBUF_MASK_TO_BYTES(mask) ((((mask) >> kSIBSoundSizeShift) & 0xfff) << 2)
  493. /***** SIB Sound Receive Start Register Equates (PoseidonModule.sibSoundRxStart) *****/
  494. /***** SIB Sound Transmit Start Register Equates (PoseidonModule.sibSoundTxStart) *****/
  495. #define kSibSoundRxStartMask 0xfffffffc /* 31:2 */
  496. #define kSibSoundRxStartShift 2
  497. #define kSibSoundTxStartMask 0xfffffffc /* 31:2 */
  498. #define kSibSoundTxStartShift 2
  499. /***** SIB Telecom Receive Start Register Equates (PoseidonModule.sibTelRxStart) *****/
  500. /***** SIB Telecom Transmit Start Register Equates (PoseidonModule.sibTelTxStart) *****/
  501. #define kSibTelRxStartMask 0xfffffffc /* 31:2 */
  502. #define kSibTelRxStartShift 2
  503. #define kSibTelTxStartMask 0xfffffffc /* 31:2 */
  504. #define kSibTelTxStartShift 2
  505. /***** SIB Control Register Equates (PoseidonModule.sibControl) *****/
  506. #define kSibIrqMask   0x80000000 /* 31 */
  507. #define kSibSF1SoundMonoMask   0x10000000 /* 28 */
  508. #define kSibSF1RightMonoMask   0x08000000 /* 27 */
  509. #define kSibSClkDivMask   0x07000000 /* 26:24 */
  510. #define kSibTel16BitMask   0x00800000 /* 23 */
  511. #define kSibTelDivMask   0x007f0000 /* 22:16 */
  512. #define kSibSound16BitMask   0x00008000 /* 15 */
  513. #define kSibSoundDivMask   0x00007f00 /* 14:8 */
  514. #define kSibSelectTelSF1Mask   0x00000080 /* 7 */
  515. #define kSibSelectSoundSF1Mask 0x00000040 /* 6 */
  516. #define kSibEnableTel   0x00000020 /* 5 */
  517. #define kSibEnableSound 0x00000010 /* 4 */
  518. #define kSibLoopModeMask 0x00000008 /* 3 */
  519. #define kSibEnableSF1Mask 0x00000004 /* 2 */
  520. #define kSibEnableSF0Mask 0x00000002 /* 1 */
  521. #define kSibEnableSib 0x00000001 /* 0 */
  522. /***** Values for kSibSclkDiv field *****/
  523. #define kSibSClkDiv_12 0x7
  524. #define kSibSClkDiv_10 0x6
  525. #define kSibSClkDiv_8 0x5
  526. #define kSibSClkDiv_6 0x4
  527. #define kSibSClkDiv_5 0x3
  528. #define kSibSClkDiv_4 0x2
  529. #define kSibSClkDiv_3 0x1
  530. #define kSibSClkDiv_2 0x0
  531. #define kSibSClkDivShift 24
  532. #define SIB_SCLK_DIV_TO_MASK(div) (((div) & 0x7) << kSibSclkDivShift)
  533. /***** Values for kSibTelDivMask and kSibSoundDivMask fields - SIBSCLK = 9.216 MHz *****/
  534. #define kSibFsDiv9216_7200 0x27 /* 39, div-by-40 */
  535. #define kSibFsDiv9216_8000 0x23 /* 35, div-by-36 */
  536. #define kSibFsDiv9216_9600 0x1d /* 29, div-by-30 */
  537. /*SSP, 960827: the number for 9216_11025 should be 0x19 (25, div by 26). why 0x1b? */
  538. /*#define kSibFsDiv9216_11025 0x1b /* 27, div-by-28 */
  539. #define kSibFsDiv9216_11025 0x19 /* 25, div-by-26 */
  540. #define kSibFsDiv9216_19200 0x0e /* 14, div-by-15 */
  541. #define kSibFsDiv9216_22050 0x0c /* 12, div-by-13 */
  542. #define kSibFsDiv9216_24000 0x0b /* 11, div-by-12 */
  543. #define kSibFsDiv9216_72000 0x03 /* 3,  div-by-4, fastest test mode */
  544. #define kSibFsDivMask 0x7f
  545. #define kSibTelDivShift 16
  546. #define kSibSoundDivShift 8
  547. #define SIB_TEL_DIV_TO_MASK(div) (((div) & kSibFsDivMask) << kSibTelDivShift)
  548. #define SIB_SOUND_DIV_TO_MASK(div) (((div) & kSibFsDivMask) << kSibSoundDivShift)
  549. /***** SIB Sound Hold Register Equates (PoseidonModule.sibSoundHold) *****/
  550. /***** SIB Tele Hold Register Equates (PoseidonModule.sibTelHold) *****/
  551. /***** SIB SF0 Aux Register Equates (PoseidonModule.sibSf0Aux) *****/
  552. /***** SIB SF1 Aux Register Equates (PoseidonModule.sibSf1Aux) *****/
  553. /***** SIB SF0 Status Register Equates (PoseidonModule.sibSf0Status) *****/
  554. /***** SIB SF1 Status Register Equates (PoseidonModule.sibSf1Status) *****/
  555. /***** SIB DMA Control Register Equates (PoseidonModule.sibDMA) *****/
  556. #define kSibSoundDmaOnceMask 0x80000000 /* 31 */
  557. #define kSibSoundDmaLoopMask 0x40000000 /* 30 */
  558. #define kSibSoundDmaPtrMask 0x3ffc0000  /* 29:18 */
  559. #define kSibEnSoundRxDmaMask 0x00020000 /* 17 */
  560. #define kSibEnSoundTxDmaMask 0x00010000 /* 16 */
  561. #define kSibTelDmaOnceMask 0x00008000 /* 15 */
  562. #define kSibTelDmaLoopMask 0x00004000 /* 14 */
  563. #define kSibTelDmaPtrMask 0x00003ffc /* 13:2 */
  564. #define kSibEnTelRxDmaMask 0x00000002 /* 1 */
  565. #define kSibEnTelTxDmaMask 0x00000001 /* 0 */
  566. #define kSibSoundDmaPtrShift 18
  567. #define kSibTelDmaPtrShift 2
  568. /***** IR Module Equates *****/
  569. /***** Register Equates (PoseidonModule.irControl1) *****/
  570. #define kIRCarDetPinMask 0x01000000 /* 24 */
  571. #define kIRBaudMask 0x00ff0000 /* 23:16 */
  572. #define kIRTestMask 0x00000010 /* 4 */
  573. #define kIRDTInvertMask 0x00000008 /* 3 */
  574. #define kIREnRXPwrMask 0x00000004 /* 2 */
  575. #define kIREnCarDetStateMask  0x00000002 /* 1 */
  576. #define kIREnConsumerMask 0x00000001 /* 0 */
  577. #define kIRBaudShift 16
  578. /***** Register Equates (PoseidonModule.irControl2) *****/
  579. #define kIRPeriodMask 0xff000000 /* 31:24 */
  580. #define kIROnTimeMask 0x00ff0000 /* 23:16 */
  581. #define kIRDelayMask 0x0000ff00 /* 15:8 */
  582. #define kIRWaitMask 0x000000ff /* 7:0 */
  583. #define kIRPeriodShift 24
  584. #define kIROnTimeShift 16
  585. #define kIRDelayShift 8
  586. #define kIRWaitShift 0
  587. /***** Register Equates (PoseidonModule.irHold) *****/
  588. #define kIRTxHoldMask 0x0000ffff /* 15:0 */
  589. #define kIRTxHoldShift 0
  590. /***** UART Module Equates *****/
  591. /***** Register Equates (PoseidonModule.uartA.control1 and PoseidonModule.uartB.control1) *****/
  592. #define kUartEnabledStatusMask 0x80000000 /* 31 */
  593. #define kUartEmptyMask 0x40000000 /* 30 */
  594. #define kUartPRxHoldFullMask 0x20000000 /* 29 */
  595. #define kUartRxHoldFullMask 0x10000000 /* 28 */
  596. #define kUartEnDmaRxMask 0x00008000 /* 15 */
  597. #define kUartEnDmaTxMask 0x00004000 /* 14 */
  598. #define kUartEnHaltOnBreakMask 0x00001000 /* 12 */
  599. #define kUartEnDmaLoopMask 0x00000400 /* 10 */
  600. #define kUartPulseLow3ClockMask 0x00000200 /* 9 */
  601. #define kUartPulseLow6CLockMask 0x00000100 /* 8 */
  602. #define kUartDTInvertMask 0x00000080 /* 7 */
  603. #define kUartDisableTxdMask 0x00000040 /* 6 */
  604. #define kUartTwoStopsMask 0x00000020 /* 5 */
  605. #define kUartLoopbackMask 0x00000010 /* 4 */
  606. #define kUart7BitCharMask 0x00000008 /* 3 */
  607. #define kUartEvenParityMask 0x00000004 /* 2 */
  608. #define kUartEnParityMask 0x00000002 /* 1 */
  609. #define kUartEnUartMask 0x00000001 /* 0 */
  610. /***** Register Equates (PoseidonModule.uartA.control2 and PoseidonModule.uartB.control2) *****/
  611. #define kUartBaudRateMask 0x000003ff /* 9:0 */
  612. /***** Register Equates (PoseidonModule.uartA.dmaControl1 and PoseidonModule.uartB.dmaControl1) *****/
  613. #define kUartDmaStartAddrMask 0xfffffffc /* 31:2 */
  614. #define kUartDmaStartAddrShift 2
  615. /***** Register Equates (PoseidonModule.uartA.dmaControl2 and PoseidonModule.uartB.dmaControl2) *****/
  616. #define kUartDmaLengthMask 0x0000ffff /* 15:0 */
  617. /***** Register Equates (PoseidonModule.uartA.dmacnt and PoseidonModule.uartB.dmacnt) *****/
  618. #define kUartDmaCountMask 0x0000ffff /* 15:0 */
  619. /***** Register Equates (PoseidonModule.uartA.hold and PoseidonModule.uartB.hold) *****/
  620. #define kUartBreakMask 0x00000100 /* 8 */
  621. #define kUartTxDataMask 0x000000ff /* 7:0 */
  622. /***** MagicBus Module Equates *****/
  623. /***** Register Equates (PoseidonModule.mbusControl1) *****/
  624. #define kMbusEnabledStatusMask 0x80000000 /* 31 */
  625. #define kMbusEmptyStatusMask 0x40000000 /* 30 */
  626. #define kMbusIntStatusMask 0x20000000 /* 29 */
  627. #define kMbusEnDmaRxMask 0x00010000 /* 16 */
  628. #define kMbusEnDmaTxMask 0x00008000 /* 15 */
  629. #define kMbusEnDmaLoopMask 0x00002000 /* 13 */
  630. #define kMbusLoopbackMask 0x00001000 /* 12 */
  631. #define kMbusRxClockPolMask 0x00000800 /* 11 */
  632. #define kMbusTxDataIdleMask 0x00000400 /* 10 */
  633. #define kMbusEnByteDlyMask 0x00000200 /* 9 */
  634. #define kMbusEnWordDlyMask 0x00000100 /* 8 */
  635. #define kMbusDetRxPhasePolMask 0x00000080 /* 7 */
  636. #define kMbusDetRxClockPolMask 0x00000040 /* 6 */
  637. #define kMbusTxPhasePolMask 0x00000020 /* 5 */
  638. #define kMbusTxClockPolMask 0x00000010 /* 4 */
  639. #define kMbusSlaveMask 0x00000008 /* 3 */
  640. #define kMbusForceSlaveMask 0x00000004 /* 2 */
  641. #define kMbusLongMask 0x00000002 /* 1 */
  642. #define kMbusEnMask 0x00000001 /* 0 */
  643. /***** Register Equates (PoseidonModule.mbusControl2) *****/
  644. #define kMbusDelayValMask 0xff000000 /* 31:24 */
  645. #define kMbusBaudRateMask 0x00ff0000 /* 23:16 */
  646. #define kMbusDelayValShift 24
  647. #define kMbusBaudRateShift 16
  648. /***** Register Equates (PoseidonModule.mbusDMAStartAddr) *****/
  649. #define kMbusDmaStartAddrMask 0xfffffffc /* 31:2 */
  650. #define kMbusDmaStartAddrShift 2
  651. /***** Register Equates (PoseidonModule.mbusDMALength) *****/
  652. #define kMbusDmaLengthMask 0x000ffffc /* 19:2 */
  653. #define kMbusDmaLengthShift 2
  654. /***** Register Equates (PoseidonModule.mbusDmaCount) *****/
  655. #define kMbusDmaCountMask 0x000ffffc /* 19:2 */
  656. #define kMbusDmaCountShift 2
  657. /***** Register Equates (PoseidonModule.mbusCommand) *****/
  658. /***** Register Equates (PoseidonModule.mbusData) *****/
  659. /***** Interrupt Module Equates *****/
  660. #define interrupt1Clear interrupt1
  661. #define interrupt2Clear interrupt2
  662. #define interrupt3Clear interrupt3
  663. #define interrupt4Clear interrupt4
  664. #define interrupt5Clear interrupt5
  665. #define PoseidonModule_interrupt1Clear PoseidonModule_interrupt1
  666. #define PoseidonModule_interrupt2Clear PoseidonModule_interrupt2
  667. #define PoseidonModule_interrupt3Clear PoseidonModule_interrupt3
  668. #define PoseidonModule_interrupt4Clear PoseidonModule_interrupt4
  669. #define PoseidonModule_interrupt5Clear PoseidonModule_interrupt5
  670. /***** Interrupt Status, Enable & Clear Register 1 Equates (PoseidonModule.interrupt1) *****/
  671. #define kIntVideoFrameMask 0x80000000 /* 31 */
  672. #define kIntVideoDFMask 0x40000000 /* 30 */
  673. #define kIntChiDmaHalfMask 0x20000000 /* 29 */
  674. #define kIntChiDmaEndMask 0x10000000 /* 28 */
  675. #define kIntChiDmaPtrIncrMask 0x08000000 /* 27 */
  676. #define kIntChiReceiveAMask 0x04000000 /* 26 */
  677. #define kIntChiReceiveBMask 0x02000000 /* 25 */
  678. #define kIntChiClkMask 0x01000000 /* 24 */
  679. #define kIntChiErrMask 0x00800000 /* 23 */
  680. #define kIntSoundDmaHalfMask 0x00400000 /* 22 */
  681. #define kIntSoundDmaEndMask 0x00200000 /* 21 */
  682. #define kIntTelDmaHalfMask 0x00100000 /* 20 */
  683. #define kIntTelDmaEndMask 0x00080000 /* 19 */
  684. #define kIntSoundDmaPtrIncMask 0x00040000 /* 18 */
  685. #define kIntTelDmaPtrIncMask 0x00020000 /* 17 */
  686. #define kIntSoundLClipMask 0x00010000 /* 16 */
  687. #define kIntSoundRClipMask 0x00008000 /* 15 */
  688. #define kIntSoundValPosMask 0x00004000 /* 14 */
  689. #define kIntSoundValNegMask 0x00002000 /* 13 */
  690. #define kIntTelValPosMask 0x00001000 /* 12 */
  691. #define kIntTelValNegMask 0x00000800 /* 11 */
  692. #define kIntSoundReceiveMask 0x00000400 /* 10 */
  693. #define kIntTeleReceiveMask 0x00000200 /* 9 */
  694. #define kIntSibSubFrame0Mask 0x00000100 /* 8 */
  695. #define kIntSibSubFrame1Mask 0x00000080 /* 7 */
  696. #define kIntSibIrqPosMask 0x00000040 /* 6 */
  697. #define kIntSibIrqNegMask 0x00000020 /* 5 */
  698. /***** Interrupt Status, Enable & Clear Register 2 Equates (PoseidonModule.interrupt2) *****/
  699. #define kIntUartAReceiveMask 0x80000000 /* 31 */
  700. #define kIntUartARxOverRunMask 0x40000000 /* 30 */
  701. #define kIntUartAFrameErrMask 0x20000000 /* 29 */
  702. #define kIntUartABreakMask 0x10000000 /* 28 */
  703. #define kIntUartAParityErrMask 0x08000000 /* 27 */
  704. #define kIntUartATransmitMask 0x04000000 /* 26 */
  705. #define kIntUartATxOverRunMask 0x02000000 /* 25 */
  706. #define kIntUartAEmptyMask 0x01000000 /* 24 */
  707. #define kIntUartADmaEndMask 0x00800000 /* 23 */
  708. #define kIntUartADmaHalfMask 0x00400000 /* 22 */
  709. #define kIntUartBReceiveMask 0x00200000 /* 21 */
  710. #define kIntUartBRxOverRunMask 0x00100000 /* 20 */
  711. #define kIntUartBFrameErrMask 0x00080000 /* 19 */
  712. #define kIntUartBBreakMask 0x00040000 /* 18 */
  713. #define kIntUartBParityErrMask 0x00020000 /* 17 */
  714. #define kIntUartBTransmitMask 0x00010000 /* 16 */
  715. #define kIntUartBTxOverRunMask 0x00008000 /* 15 */
  716. #define kIntUartBEmptyMask 0x00004000 /* 14 */
  717. #define kIntUartBDmaEndMask 0x00002000 /* 13 */
  718. #define kIntUartBDmaHalfMask 0x00001000 /* 12 */
  719. #define kIntMbusTransmitMask 0x00000800 /* 11 */
  720. #define kIntMbusTxErrMask 0x00000400 /* 10 */
  721. #define kIntMbusEmptyMask 0x00000200 /* 9 */
  722. #define kIntMbusReceiveMask 0x00000100 /* 8 */
  723. #define kIntMbusRxErrMask 0x00000080 /* 7 */
  724. #define kIntMbusCmdDetectMask 0x00000040 /* 6 */
  725. #define kIntMbusDmaEndMask 0x00000020 /* 5 */
  726. #define kIntMbusDmaHalfMask 0x00000010 /* 4 */
  727. #define kIntMbusPosMask 0x00000008 /* 3 */
  728. #define kIntMbusNegMask 0x00000004 /* 2 */
  729. /***** Interrupt Status, Enable & Clear Register 3 Equates (PoseidonModule.interrupt3) *****/
  730. #define kIntMfio31PosMask 0x80000000 /* 31 */
  731. #define kIntMfio30PosMask 0x40000000 /* 30 */
  732. #define kIntMfio29PosMask 0x20000000 /* 29 */
  733. #define kIntMfio28PosMask 0x10000000 /* 28 */
  734. #define kIntMfio27PosMask 0x08000000 /* 27 */
  735. #define kIntMfio26PosMask 0x04000000 /* 26 */
  736. #define kIntMfio25PosMask 0x02000000 /* 25 */
  737. #define kIntMfio24PosMask 0x01000000 /* 24 */
  738. #define kIntMfio23PosMask 0x00800000 /* 23 */
  739. #define kIntMfio22PosMask 0x00400000 /* 22 */
  740. #define kIntMfio21PosMask 0x00200000 /* 21 */
  741. #define kIntMfio20PosMask 0x00100000 /* 20 */
  742. #define kIntMfio19PosMask 0x00080000 /* 19 */
  743. #define kIntMfio18PosMask 0x00040000 /* 18 */
  744. #define kIntMfio17PosMask 0x00020000 /* 17 */
  745. #define kIntMfio16PosMask 0x00010000 /* 16 */
  746. #define kIntMfio15PosMask 0x00008000 /* 15 */
  747. #define kIntMfio14PosMask 0x00004000 /* 14 */
  748. #define kIntMfio13PosMask 0x00002000 /* 13 */
  749. #define kIntMfio12PosMask 0x00001000 /* 12 */
  750. #define kIntMfio11PosMask 0x00000800 /* 11 */
  751. #define kIntMfio10PosMask 0x00000400 /* 10 */
  752. #define kIntMfio9PosMask 0x00000200 /* 9 */
  753. #define kIntMfio8PosMask 0x00000100 /* 8 */
  754. #define kIntMfio7PosMask 0x00000080 /* 7 */
  755. #define kIntMfio6PosMask 0x00000040 /* 6 */
  756. #define kIntMfio5PosMask 0x00000020 /* 5 */
  757. #define kIntMfio4PosMask 0x00000010 /* 4 */
  758. #define kIntMfio3PosMask 0x00000008 /* 3 */
  759. #define kIntMfio2PosMask 0x00000004 /* 2 */
  760. #define kIntMfio1PosMask 0x00000002 /* 1 */
  761. #define kIntMfio0PosMask 0x00000001 /* 0 */
  762. /***** Interrupt Status, Enable & Clear Register 4 Equates (PoseidonModule.interrupt4) *****/
  763. #define kIntMfio31NegMask 0x80000000 /* 31 */
  764. #define kIntMfio30NegMask 0x40000000 /* 30 */
  765. #define kIntMfio29NegMask 0x20000000 /* 29 */
  766. #define kIntMfio28NegMask 0x10000000 /* 28 */
  767. #define kIntMfio27NegMask 0x08000000 /* 27 */
  768. #define kIntMfio26NegMask 0x04000000 /* 26 */
  769. #define kIntMfio25NegMask 0x02000000 /* 25 */
  770. #define kIntMfio24NegMask 0x01000000 /* 24 */
  771. #define kIntMfio23NegMask 0x00800000 /* 23 */
  772. #define kIntMfio22NegMask 0x00400000 /* 22 */
  773. #define kIntMfio21NegMask 0x00200000 /* 21 */
  774. #define kIntMfio20NegMask 0x00100000 /* 20 */
  775. #define kIntMfio19NegMask 0x00080000 /* 19 */
  776. #define kIntMfio18NegMask 0x00040000 /* 18 */
  777. #define kIntMfio17NegMask 0x00020000 /* 17 */
  778. #define kIntMfio16NegMask 0x00010000 /* 16 */
  779. #define kIntMfio15NegMask 0x00008000 /* 15 */
  780. #define kIntMfio14NegMask 0x00004000 /* 14 */
  781. #define kIntMfio13NegMask 0x00002000 /* 13 */
  782. #define kIntMfio12NegMask 0x00001000 /* 12 */
  783. #define kIntMfio11NegMask 0x00000800 /* 11 */
  784. #define kIntMfio10NegMask 0x00000400 /* 10 */
  785. #define kIntMfio9NegMask 0x00000200 /* 9 */
  786. #define kIntMfio8NegMask 0x00000100 /* 8 */
  787. #define kIntMfio7NegMask 0x00000080 /* 7 */
  788. #define kIntMfio6NegMask 0x00000040 /* 6 */
  789. #define kIntMfio5NegMask 0x00000020 /* 5 */
  790. #define kIntMfio4NegMask 0x00000010 /* 4 */
  791. #define kIntMfio3NegMask 0x00000008 /* 3 */
  792. #define kIntMfio2NegMask 0x00000004 /* 2 */
  793. #define kIntMfio1NegMask 0x00000002 /* 1 */
  794. #define kIntMfio0NegMask 0x00000001 /* 0 */
  795. /***** Interrupt Status, Enable & Clear Register 5 Equates (PoseidonModule.interrupt5) *****/
  796. #define kIntRTCRolloverMask 0x80000000 /* 31 */
  797. #define kIntRTCAlarmMask 0x40000000 /* 30 */
  798. #define kIntPeriodicTimerMask 0x20000000 /* 29 */
  799. #define kIntStopTimerMask 0x10000000 /* 28 */
  800. #define kIntPwrIntPosMask 0x08000000 /* 27 */
  801. #define kIntPwrIntNegMask 0x04000000 /* 26 */
  802. #define kIntPwrOKPosMask 0x02000000 /* 25 */
  803. #define kIntPwrOKNegMask 0x01000000 /* 24 */
  804. #define kIntOnButPosMask 0x00800000 /* 23 */
  805. #define kIntOnButNegMask 0x00400000 /* 22 */
  806. #define kIntSpiTransmitMask 0x00200000 /* 21 */
  807. #define kIntSpiErrMask 0x00100000 /* 20 */
  808. #define kIntSpiReceiveMask 0x00080000 /* 19 */
  809. #define kIntSpiEmptyMask 0x00040000 /* 18 */
  810. #define kIntIrConsumerMask 0x00020000 /* 17 */
  811. #define kIntCarDetPinMask 0x00010000 /* 16 */
  812. #define kIntCarDetPosMask 0x00008000 /* 15 */
  813. #define kIntCarDetNegMask 0x00004000 /* 14 */
  814. #define kIntIOInt6PosMask 0x00002000 /* 13 */
  815. #define kIntIOInt5PosMask 0x00001000 /* 12 */
  816. #define kIntIOInt4PosMask 0x00000800 /* 11 */
  817. #define kIntIOInt3PosMask 0x00000400 /* 10 */
  818. #define kIntIOInt2PosMask 0x00000200 /* 9 */
  819. #define kIntIOInt1PosMask 0x00000100 /* 8 */
  820. #define kIntIOInt0PosMask 0x00000080 /* 7 */
  821. #define kIntIOInt6NegMask 0x00000040 /* 6 */
  822. #define kIntIOInt5NegMask 0x00000020 /* 5 */
  823. #define kIntIOInt4NegMask 0x00000010 /* 4 */
  824. #define kIntIOInt3NegMask 0x00000008 /* 3 */
  825. #define kIntIOInt2NegMask 0x00000004 /* 2 */
  826. #define kIntIOInt1NegMask 0x00000002 /* 1 */
  827. #define kIntIOInt0NegMask 0x00000001 /* 0 */
  828. #define kIntClearAllMask 0xffffffff
  829. /***** Interrupt Status, Enable & Clear Register 6 Equates (PoseidonModule.interrupt6) *****/
  830. #define kIntIrqHighPrioMask 0x80000000 /* 31 */
  831. #define kIntIrqLowPrioMask 0x40000000 /* 30 */
  832. #define kIntHighPrioVectMask 0x0000003c /* 5:2 */
  833. #define kIntHighPrioVectShift 2
  834. #define HIGH_INT_MASK_TO_VECT(mask) (((mask) >> kIntHighPrioVectShift) & 0xf)
  835. /***** Interrupt Enable Register 6 Equates (PoseidonModule.interrupt6Enable) *****/
  836. #define kIntGlobalEnMask 0x00040000 /* 18 */
  837. #define kIntPriorityMask 0x0000ffff /* 15:0 */
  838. #define kIntEnHighPwrOkMask 0x00008000 /* 15 */
  839. #define kIntEnHighAlarmMask 0x00004000 /* 14 */
  840. #define kIntEnHighPerTimerMask 0x00002000 /* 13 */
  841. #define kIntEnHighMbusMask 0x00001000 /* 12 */
  842. #define kIntEnHighUartARxMask 0x00000800 /* 11 */
  843. #define kIntEnHighUartBRxMask 0x00000400 /* 10 */
  844. #define kIntEnHighMccsPosMask 0x00000200 /* 9 */
  845. #define kIntEnHighMcdetPosMask 0x00000100 /* 8 */
  846. #define kIntEnHighMccsNegMask 0x00000080 /* 7 */
  847. #define kIntEnHighMcdetNegMask 0x00000040 /* 6 */
  848. #define kIntEnHighMbusDmaFullMask 0x00000020 /* 5 */
  849. #define kIntEnHighSndDmaCountMask 0x00000010 /* 4 */
  850. #define kIntEnHighTelDmaCountMask 0x00000008 /* 3 */
  851. #define kIntEnHighChiDmaCountMask 0x00000004 /* 2 */
  852. #define kIntEnHighIo0Mask 0x00000002 /* 1 */
  853. /***** Timer Module Equates *****/
  854. /***** Register Equates (PoseidonModule.rtcHigh) *****/
  855. #define kTimerRTCHighBitsMask 0x000000ff
  856. /***** Register Equates (PoseidonModule.alarmHigh) *****/
  857. #define kTimerAlarmHighBitsMask 0x000000ff
  858. /***** Register Equates (PoseidonModule.alarmLow) *****/
  859. #define kTimerAlarmLowBitsMask 0xffffffff
  860. /***** Register Equates (PoseidonModule.timerControl) *****/
  861. #define kTimerFreezePre 0x00000080 /* 7 */
  862. #define kTimerFreezeRtc 0x00000040 /* 6 */
  863. #define kTimerFreezePerTimer 0x00000020 /* 5 */
  864. #define kTimerEnPerTimer 0x00000010 /* 4 */
  865. #define kTimerClearRtc 0x00000008 /* 3 */
  866. #define kTimerTestC8Ms 0x00000004 /* 2 */
  867. #define kTimerRtcEnTestClk 0x00000002 /* 1 */
  868. #define kTimerEnRtcTest 0x00000001 /* 0 */
  869. #define kTimerControlReadMask 0x000000ff
  870. /***** Register Equates (PoseidonModule.perTimer) *****/
  871. #define kTimerPerCntMask 0xffff0000  /* 31:16 */
  872. #define kTimerPerLoadMask 0x0000ffff  /* 15:0 */
  873. #define kTimerPerCntShift 16
  874. #define kTimerPerLoadShift 0
  875. /***** SPI Module Equates *****/
  876. /***** SPI Control Register Equates (PoseidonModule.spiControl) *****/
  877. #define kSpiOnStatusMask 0x00020000 /* 17 */
  878. #define kSpiEmptyStatusMask 0x00010000 /* 16 */
  879. #define kSpiInterCharacterDelayMask 0x0000f000  /* 15:12 */
  880. #define kSpiBaudRateMask 0x00000f00  /* 11:8 */
  881. #define kSpiTransmitOnRisingEdgeMask 0x00000020 /* 5 */
  882. #define kSpiClockIdleHighMask 0x00000010 /* 4 */
  883. #define kSpi16BitDataMask 0x00000004 /* 2 */
  884. #define kSpiShiftDataLsbFirstMask 0x00000002 /* 1 */
  885. #define kSpiEnableMask 0x00000001 /* 0 */
  886. #define kSpiInterCharacterDelayShift 12
  887. #define kSpiBaudRateShift 8
  888. #define kSpiDefaultBaud 3
  889. #define kSpiControlWriteMask ( 
  890. kSpiInterCharacterDelayMask | 
  891. kSpiBaudRateMask | 
  892. kSpiTransmitOnRisingEdgeMask | 
  893. kSpiClockIdleHighMask | 
  894. kSpi16BitDataMask | 
  895. kSpiShiftDataLsbFirstMask | 
  896. kSpiEnableMask)
  897. /***** SPI Data Register Equates (PoseidonModule.spi) *****/
  898. #define kSpiTxDataHoldMask 0x0000ffff /* 15:0 */
  899. #define kSpiRxDataHoldMask 0x0000ffff /* 15:0 */
  900. /***** IO Module Equates *****/
  901. /***** Register Equates (PoseidonModule.ioControl) *****/
  902. #define kIODebounceSelect6Mask 0x40000000 /* 30 */
  903. #define kIODebounceSelect5Mask 0x20000000 /* 29 */
  904. #define kIODebounceSelect4Mask 0x10000000 /* 28 */
  905. #define kIODebounceSelect3Mask 0x08000000 /* 27 */
  906. #define kIODebounceSelect2Mask 0x04000000 /* 26 */
  907. #define kIODebounceSelect1Mask 0x02000000 /* 25 */
  908. #define kIODebounceSelect0Mask 0x01000000 /* 24 */
  909. #define kIOOutputSelect6Mask 0x00400000 /* 22 */
  910. #define kIOOutputSelect5Mask 0x00200000 /* 21 */
  911. #define kIOOutputSelect4Mask 0x00100000 /* 20 */
  912. #define kIOOutputSelect3Mask 0x00080000 /* 19 */
  913. #define kIOOutputSelect2Mask 0x00040000 /* 18 */
  914. #define kIOOutputSelect1Mask 0x00020000 /* 17 */
  915. #define kIOOutputSelect0Mask 0x00010000 /* 16 */
  916. #define kIODataOut6Mask 0x00004000 /* 14 */
  917. #define kIODataOut5Mask 0x00002000 /* 13 */
  918. #define kIODataOut4Mask 0x00001000 /* 12 */
  919. #define kIODataOut3Mask 0x00000800 /* 11 */
  920. #define kIODataOut2Mask 0x00000400 /* 10 */
  921. #define kIODataOut1Mask 0x00000200 /* 9 */
  922. #define kIODataOut0Mask 0x00000100 /* 8 */
  923. #define kIODataIn6Mask 0x00000040 /* 6 */
  924. #define kIODataIn5Mask 0x00000020 /* 5 */
  925. #define kIODataIn4Mask 0x00000010 /* 4 */
  926. #define kIODataIn3Mask 0x00000008 /* 3 */
  927. #define kIODataIn2Mask 0x00000004 /* 2 */
  928. #define kIODataIn1Mask 0x00000002 /* 1 */
  929. #define kIODataIn0Mask 0x00000001 /* 0 */
  930. #define kIOBit6Mask 0x00000040 /* 6 */
  931. #define kIOBit5Mask 0x00000020 /* 5 */
  932. #define kIOBit4Mask 0x00000010 /* 4 */
  933. #define kIOBit3Mask 0x00000008 /* 3 */
  934. #define kIOBit2Mask 0x00000004 /* 2 */
  935. #define kIOBit1Mask 0x00000002 /* 1 */
  936. #define kIOBit0Mask 0x00000001 /* 0 */
  937. #define kIODebounceSelectShift 24
  938. #define kIOOutputSelectShift 16
  939. #define kIODataOutShift 8
  940. #define kIODataInShift 0
  941. #define IO_DATA_OUT_PIN_TO_MASK(pin) (1 << (kIODataOutShift + (pin)))
  942. #define IO_DATA_IN_PIN_TO_MASK(pin) (1 << (kIODataInShift + (pin)))
  943. /***** Register Equates (PoseidonModule.mfioDataOutput) *****/
  944. #define kIOMfioDataOut31Mask 0x80000000 /* 31 */
  945. #define kIOMfioDataOut30Mask 0x40000000 /* 30 */
  946. #define kIOMfioDataOut29Mask 0x20000000 /* 29 */
  947. #define kIOMfioDataOut28Mask 0x10000000 /* 28 */
  948. #define kIOMfioDataOut27Mask 0x08000000 /* 27 */
  949. #define kIOMfioDataOut26Mask 0x04000000 /* 26 */
  950. #define kIOMfioDataOut25Mask 0x02000000 /* 25 */
  951. #define kIOMfioDataOut24Mask 0x01000000 /* 24 */
  952. #define kIOMfioDataOut23Mask 0x00800000 /* 23 */
  953. #define kIOMfioDataOut22Mask 0x00400000 /* 22 */
  954. #define kIOMfioDataOut21Mask 0x00200000 /* 21 */
  955. #define kIOMfioDataOut20Mask 0x00100000 /* 20 */
  956. #define kIOMfioDataOut19Mask 0x00080000 /* 19 */
  957. #define kIOMfioDataOut18Mask 0x00040000 /* 18 */
  958. #define kIOMfioDataOut17Mask 0x00020000 /* 17 */
  959. #define kIOMfioDataOut16Mask 0x00010000 /* 16 */
  960. #define kIOMfioDataOut15Mask 0x00008000 /* 15 */
  961. #define kIOMfioDataOut14Mask 0x00004000 /* 14 */
  962. #define kIOMfioDataOut13Mask 0x00002000 /* 13 */
  963. #define kIOMfioDataOut12Mask 0x00001000 /* 12 */
  964. #define kIOMfioDataOut11Mask 0x00000800 /* 11 */
  965. #define kIOMfioDataOut10Mask 0x00000400 /* 10 */
  966. #define kIOMfioDataOut9Mask 0x00000200 /* 9 */
  967. #define kIOMfioDataOut8Mask 0x00000100 /* 8 */
  968. #define kIOMfioDataOut7Mask 0x00000080 /* 7 */
  969. #define kIOMfioDataOut6Mask 0x00000040 /* 6 */
  970. #define kIOMfioDataOut5Mask 0x00000020 /* 5 */
  971. #define kIOMfioDataOut4Mask 0x00000010 /* 4 */
  972. #define kIOMfioDataOut3Mask 0x00000008 /* 3 */
  973. #define kIOMfioDataOut2Mask 0x00000004 /* 2 */
  974. #define kIOMfioDataOut1Mask 0x00000002 /* 1 */
  975. #define kIOMfioDataOut0Mask 0x00000001 /* 0 */
  976. #define MFIO_DATA_OUT_PIN_TO_MASK(pin) (1 << (pin))
  977. /***** Register Equates (PoseidonModule.mfioDirection) *****/
  978. #define kIOMfioOutputSelect31Mask 0x80000000 /* 31 */
  979. #define kIOMfioOutputSelect30Mask 0x40000000 /* 30 */
  980. #define kIOMfioOutputSelect29Mask 0x20000000 /* 29 */
  981. #define kIOMfioOutputSelect28Mask 0x10000000 /* 28 */
  982. #define kIOMfioOutputSelect27Mask 0x08000000 /* 27 */
  983. #define kIOMfioOutputSelect26Mask 0x04000000 /* 26 */
  984. #define kIOMfioOutputSelect25Mask 0x02000000 /* 25 */
  985. #define kIOMfioOutputSelect24Mask 0x01000000 /* 24 */
  986. #define kIOMfioOutputSelect23Mask 0x00800000 /* 23 */
  987. #define kIOMfioOutputSelect22Mask 0x00400000 /* 22 */
  988. #define kIOMfioOutputSelect21Mask 0x00200000 /* 21 */
  989. #define kIOMfioOutputSelect20Mask 0x00100000 /* 20 */
  990. #define kIOMfioOutputSelect19Mask 0x00080000 /* 19 */
  991. #define kIOMfioOutputSelect18Mask 0x00040000 /* 18 */
  992. #define kIOMfioOutputSelect17Mask 0x00020000 /* 17 */
  993. #define kIOMfioOutputSelect16Mask 0x00010000 /* 16 */
  994. #define kIOMfioOutputSelect15Mask 0x00008000 /* 15 */
  995. #define kIOMfioOutputSelect14Mask 0x00004000 /* 14 */
  996. #define kIOMfioOutputSelect13Mask 0x00002000 /* 13 */
  997. #define kIOMfioOutputSelect12Mask 0x00001000 /* 12 */
  998. #define kIOMfioOutputSelect11Mask 0x00000800 /* 11 */
  999. #define kIOMfioOutputSelect10Mask 0x00000400 /* 10 */
  1000. #define kIOMfioOutputSelect9Mask 0x00000200 /* 9 */
  1001. #define kIOMfioOutputSelect8Mask 0x00000100 /* 8 */
  1002. #define kIOMfioOutputSelect7Mask 0x00000080 /* 7 */
  1003. #define kIOMfioOutputSelect6Mask 0x00000040 /* 6 */
  1004. #define kIOMfioOutputSelect5Mask 0x00000020 /* 5 */
  1005. #define kIOMfioOutputSelect4Mask 0x00000010 /* 4 */
  1006. #define kIOMfioOutputSelect3Mask 0x00000008 /* 3 */
  1007. #define kIOMfioOutputSelect2Mask 0x00000004 /* 2 */
  1008. #define kIOMfioOutputSelect1Mask 0x00000002 /* 1 */
  1009. #define kIOMfioOutputSelect0Mask 0x00000001 /* 0 */
  1010. #define MFIO_OUTPUT_SELECT_PIN_TO_MASK(pin) (1 << (pin))
  1011. /***** Register Equates (PoseidonModule.mfioDataInput) *****/
  1012. #define kIOMfioDataIn31Mask 0x80000000 /* 31 */
  1013. #define kIOMfioDataIn30Mask 0x40000000 /* 30 */
  1014. #define kIOMfioDataIn29Mask 0x20000000 /* 29 */
  1015. #define kIOMfioDataIn28Mask 0x10000000 /* 28 */
  1016. #define kIOMfioDataIn27Mask 0x08000000 /* 27 */
  1017. #define kIOMfioDataIn26Mask 0x04000000 /* 26 */
  1018. #define kIOMfioDataIn25Mask 0x02000000 /* 25 */
  1019. #define kIOMfioDataIn24Mask 0x01000000 /* 24 */
  1020. #define kIOMfioDataIn23Mask 0x00800000 /* 23 */
  1021. #define kIOMfioDataIn22Mask 0x00400000 /* 22 */
  1022. #define kIOMfioDataIn21Mask 0x00200000 /* 21 */
  1023. #define kIOMfioDataIn20Mask 0x00100000 /* 20 */
  1024. #define kIOMfioDataIn19Mask 0x00080000 /* 19 */
  1025. #define kIOMfioDataIn18Mask 0x00040000 /* 18 */
  1026. #define kIOMfioDataIn17Mask 0x00020000 /* 17 */
  1027. #define kIOMfioDataIn16Mask 0x00010000 /* 16 */
  1028. #define kIOMfioDataIn15Mask 0x00008000 /* 15 */
  1029. #define kIOMfioDataIn14Mask 0x00004000 /* 14 */
  1030. #define kIOMfioDataIn13Mask 0x00002000 /* 13 */
  1031. #define kIOMfioDataIn12Mask 0x00001000 /* 12 */
  1032. #define kIOMfioDataIn11Mask 0x00000800 /* 11 */
  1033. #define kIOMfioDataIn10Mask 0x00000400 /* 10 */
  1034. #define kIOMfioDataIn9Mask 0x00000200 /* 9 */
  1035. #define kIOMfioDataIn8Mask 0x00000100 /* 8 */
  1036. #define kIOMfioDataIn7Mask 0x00000080 /* 7 */
  1037. #define kIOMfioDataIn6Mask 0x00000040 /* 6 */
  1038. #define kIOMfioDataIn5Mask 0x00000020 /* 5 */
  1039. #define kIOMfioDataIn4Mask 0x00000010 /* 4 */
  1040. #define kIOMfioDataIn3Mask 0x00000008 /* 3 */
  1041. #define kIOMfioDataIn2Mask 0x00000004 /* 2 */
  1042. #define kIOMfioDataIn1Mask 0x00000002 /* 1 */
  1043. #define kIOMfioDataIn0Mask 0x00000001 /* 0 */
  1044. #define MFIO_DATA_IN_PIN_TO_MASK(pin) (1 << (pin))
  1045. /***** Register Equates (PoseidonModule.mfioSelect) *****/
  1046. #define kIOMfioSelect31Mask 0x80000000 /* 31 */
  1047. #define kIOMfioSelect30Mask 0x40000000 /* 30 */
  1048. #define kIOMfioSelect29Mask 0x20000000 /* 29 */
  1049. #define kIOMfioSelect28Mask 0x10000000 /* 28 */
  1050. #define kIOMfioSelect27Mask 0x08000000 /* 27 */
  1051. #define kIOMfioSelect26Mask 0x04000000 /* 26 */
  1052. #define kIOMfioSelect25Mask 0x02000000 /* 25 */
  1053. #define kIOMfioSelect24Mask 0x01000000 /* 24 */
  1054. #define kIOMfioSelect23Mask 0x00800000 /* 23 */
  1055. #define kIOMfioSelect22Mask 0x00400000 /* 22 */
  1056. #define kIOMfioSelect21Mask 0x00200000 /* 21 */
  1057. #define kIOMfioSelect20Mask 0x00100000 /* 20 */
  1058. #define kIOMfioSelect19Mask 0x00080000 /* 19 */
  1059. #define kIOMfioSelect18Mask 0x00040000 /* 18 */
  1060. #define kIOMfioSelect17Mask 0x00020000 /* 17 */
  1061. #define kIOMfioSelect16Mask 0x00010000 /* 16 */
  1062. #define kIOMfioSelect15Mask 0x00008000 /* 15 */
  1063. #define kIOMfioSelect14Mask 0x00004000 /* 14 */
  1064. #define kIOMfioSelect13Mask 0x00002000 /* 13 */
  1065. #define kIOMfioSelect12Mask 0x00001000 /* 12 */
  1066. #define kIOMfioSelect11Mask 0x00000800 /* 11 */
  1067. #define kIOMfioSelect10Mask 0x00000400 /* 10 */
  1068. #define kIOMfioSelect9Mask 0x00000200 /* 9 */
  1069. #define kIOMfioSelect8Mask 0x00000100 /* 8 */
  1070. #define kIOMfioSelect7Mask 0x00000080 /* 7 */
  1071. #define kIOMfioSelect6Mask 0x00000040 /* 6 */
  1072. #define kIOMfioSelect5Mask 0x00000020 /* 5 */
  1073. #define kIOMfioSelect4Mask 0x00000010 /* 4 */
  1074. #define kIOMfioSelect3Mask 0x00000008 /* 3 */
  1075. #define kIOMfioSelect2Mask 0x00000004 /* 2 */
  1076. #define kIOMfioSelect1Mask 0x00000002 /* 1 */
  1077. #define kIOMfioSelect0Mask 0x00000001 /* 0 */
  1078. #define MFIO_SELECT_PIN_TO_MASK(pin) (1 << (pin))
  1079. /* 
  1080.  * MFIO Standard function masks used for: (PoseidonModule.mfioDataOutput, PoseidonModule.mfioDirection,
  1081.  * PoseidonModule.mfioDataInput, PoseidonModule.mfioSelect, PoseidonModule.mfioPowerDown)
  1082.  */
  1083. #define kIOMfioChiFrameSyncMask kIOMfioSelect31Mask
  1084. #define kIOMfioChiClockMask kIOMfioSelect30Mask
  1085. #define kIOMfioChiDataOutMask kIOMfioSelect29Mask
  1086. #define kIOMfioChiDataInMask kIOMfioSelect28Mask
  1087. #define kIOMfioBusRequestMask kIOMfioSelect27Mask
  1088. #define kIOMfioBusGrantMask kIOMfioSelect26Mask
  1089. #define kIOMfioBuffered32KhzClockMask kIOMfioSelect25Mask
  1090. #define kIOMfioUartATransmitDataMask kIOMfioSelect24Mask
  1091. #define kIOMfioUartAReceiveDataMask kIOMfioSelect23Mask
  1092. #define kIOMfioChipSelect1Mask kIOMfioSelect22Mask
  1093. #define kIOMfioChipSelect2Mask kIOMfioSelect21Mask
  1094. #define kIOMfioChipSelect3Mask kIOMfioSelect20Mask
  1095. #define kIOMfioMagicCardChipSelect0Mask kIOMfioSelect19Mask
  1096. #define kIOMfioMagicCardChipSelect1Mask kIOMfioSelect18Mask
  1097. #define kIOMfioMagicCardChipSelect2Mask kIOMfioSelect17Mask
  1098. #define kIOMfioMagicCardChipSelect3Mask kIOMfioSelect16Mask
  1099. #define kIOMfioSpiClockMask kIOMfioSelect15Mask
  1100. #define kIOMfioSpiDataOutMask kIOMfioSelect14Mask
  1101. #define kIOMfioSpiDataInMask kIOMfioSelect13Mask
  1102. #define kIOMfioSibMClockMask kIOMfioSelect12Mask
  1103. #define kIOMfioCardRegMask kIOMfioSelect11Mask
  1104. #define kIOMfioCardIoWriteMask kIOMfioSelect10Mask
  1105. #define kIOMfioCardIoReadMask kIOMfioSelect9Mask
  1106. #define kIOMfioCard1ChipSelectLowMask kIOMfioSelect8Mask
  1107. #define kIOMfioCard1ChipSelectHighMask kIOMfioSelect7Mask
  1108. #define kIOMfioCard2ChipSelectLowMask kIOMfioSelect6Mask
  1109. #define kIOMfioCard2ChipSelectHighMask kIOMfioSelect5Mask
  1110. #define kIOMfioCard1WaitMask kIOMfioSelect4Mask
  1111. #define kIOMfioCard2WaitMask kIOMfioSelect3Mask
  1112. #define kIOMfioCardDirectionMask kIOMfioSelect2Mask
  1113. #define kIOMfioCard1Disable (kIOMfioCard1ChipSelectLowMask | kIOMfioCard1ChipSelectHighMask | kIOMfioCard1WaitMask)
  1114. #define kIOMfioCard2Disable (kIOMfioCard2ChipSelectLowMask | kIOMfioCard2ChipSelectHighMask | kIOMfioCard2WaitMask)
  1115. #define kIOMfioCardDisable (kIOMfioCardRegMask | kIOMfioCardIoWriteMask | kIOMfioCardIoReadMask | kIOMfioCardDirectionMask)
  1116. #define kIOMfioGeneralDisable kIOMfioCardDisable
  1117. /***** Register Equates (PoseidonModule.ioPowerDown) *****/
  1118. #define kIOPowerDown6Mask 0x00000040 /* 6 */
  1119. #define kIOPowerDown5Mask 0x00000020 /* 5 */
  1120. #define kIOPowerDown4Mask 0x00000010 /* 4 */
  1121. #define kIOPowerDown3Mask 0x00000008 /* 3 */
  1122. #define kIOPowerDown2Mask 0x00000004 /* 2 */
  1123. #define kIOPowerDown1Mask 0x00000002 /* 1 */
  1124. #define kIOPowerDown0Mask 0x00000001 /* 0 */
  1125. #define IO_POWER_DOWN_PIN_TO_MASK(pin) (1 << (pin))
  1126. /***** Register Equates (PoseidonModule.mfioPowerDown) *****/
  1127. #define kIOMfioPowerDown31Mask 0x80000000 /* 31 */
  1128. #define kIOMfioPowerDown30Mask 0x40000000 /* 30 */
  1129. #define kIOMfioPowerDown29Mask 0x20000000 /* 29 */
  1130. #define kIOMfioPowerDown28Mask 0x10000000 /* 28 */
  1131. #define kIOMfioPowerDown27Mask 0x08000000 /* 27 */
  1132. #define kIOMfioPowerDown26Mask 0x04000000 /* 26 */
  1133. #define kIOMfioPowerDown25Mask 0x02000000 /* 25 */
  1134. #define kIOMfioPowerDown24Mask 0x01000000 /* 24 */
  1135. #define kIOMfioPowerDown23Mask 0x00800000 /* 23 */
  1136. #define kIOMfioPowerDown22Mask 0x00400000 /* 22 */
  1137. #define kIOMfioPowerDown21Mask 0x00200000 /* 21 */
  1138. #define kIOMfioPowerDown20Mask 0x00100000 /* 20 */
  1139. #define kIOMfioPowerDown19Mask 0x00080000 /* 19 */
  1140. #define kIOMfioPowerDown18Mask 0x00040000 /* 18 */
  1141. #define kIOMfioPowerDown17Mask 0x00020000 /* 17 */
  1142. #define kIOMfioPowerDown16Mask 0x00010000 /* 16 */
  1143. #define kIOMfioPowerDown15Mask 0x00008000 /* 15 */
  1144. #define kIOMfioPowerDown14Mask 0x00004000 /* 14 */
  1145. #define kIOMfioPowerDown13Mask 0x00002000 /* 13 */
  1146. #define kIOMfioPowerDown12Mask 0x00001000 /* 12 */
  1147. #define kIOMfioPowerDown11Mask 0x00000800 /* 11 */
  1148. #define kIOMfioPowerDown10Mask 0x00000400 /* 10 */
  1149. #define kIOMfioPowerDown9Mask 0x00000200 /* 9 */
  1150. #define kIOMfioPowerDown8Mask 0x00000100 /* 8 */
  1151. #define kIOMfioPowerDown7Mask 0x00000080 /* 7 */
  1152. #define kIOMfioPowerDown6Mask 0x00000040 /* 6 */
  1153. #define kIOMfioPowerDown5Mask 0x00000020 /* 5 */
  1154. #define kIOMfioPowerDown4Mask 0x00000010 /* 4 */
  1155. #define kIOMfioPowerDown3Mask 0x00000008 /* 3 */
  1156. #define kIOMfioPowerDown2Mask 0x00000004 /* 2 */
  1157. #define kIOMfioPowerDown1Mask 0x00000002 /* 1 */
  1158. #define kIOMfioPowerDown0Mask 0x00000001 /* 0 */
  1159. #define MFIO_POWER_DOWN_PIN_TO_MASK(pin) (1 << (pin))
  1160. /***** Clock Control Equates *****/
  1161. /***** Clock Control Register Equates (PoseidonModule.masterClock) *****/
  1162. #define kClockChiClkDivMask 0xff000000 /* 31:24 */
  1163. #define kClockChiMClkSelectMask 0x00200000 /* 21 */
  1164. #define kClockChiClkDirectionMask 0x00100000 /* 20 */
  1165. #define kClockEnChiMClkMask 0x00080000 /* 19 */
  1166. #define kClockEnVideoClkMask 0x00040000 /* 18 */
  1167. #define kClockEnMbusClkMask 0x00020000 /* 17 */
  1168. #define kClockEnSpiClkMask 0x00010000 /* 16 */
  1169. #define kClockEnTimerClkMask 0x00008000 /* 15 */
  1170. #define kClockEnFastTimerClkMask 0x00004000 /* 14 */
  1171. #define kClockSibMClkDirectionMask 0x00002000 /* 13 */
  1172. #define kClockEnSibMClkMask 0x00000800 /* 11 */
  1173. #define kClockSibMClkDivMask 0x00000700 /* 10:8 */
  1174. #define kClockCserSelectMask 0x00000080 /* 7 */
  1175. #define kClockCserDivMask 0x00000070 /* 6:4 */
  1176. #define kClockEnCserClkMask 0x00000008 /* 3 */
  1177. #define kClockEnIrClkMask 0x00000004 /* 2 */
  1178. #define kClockEnUartAClkMask 0x00000002 /* 1 */
  1179. #define kClockEnUartBClkMask 0x00000001 /* 0 */
  1180. /***** Values for kClockChiClkDivMask *****/
  1181. #define kClockChiClockDivShift 24
  1182. /***** Values for kClockSibMClkDivMask *****/
  1183. #define kClockSibMClkDivBy8 0x00000600
  1184. #define kClockSibMClkDivBy7 0x00000500
  1185. #define kClockSibMClkDivBy6 0x00000400
  1186. #define kClockSibMClkDivBy5 0x00000300
  1187. #define kClockSibMClkDivBy4 0x00000200
  1188. #define kClockSibMClkDivBy3 0x00000100
  1189. #define kClockSibMClkDivBy2 0x00000000
  1190. #define kClockSibMClockDivShift 8
  1191. /***** Values for kClockCserDivMask *****/
  1192. #define kClockCserDivBy8 0x00000060
  1193. #define kClockCserDivBy7 0x00000050
  1194. #define kClockCserDivBy6 0x00000040
  1195. #define kClockCserDivBy5 0x00000030
  1196. #define kClockCserDivBy4 0x00000020
  1197. #define kClockCserDivBy3 0x00000010
  1198. #define kClockCserDivBy2 0x00000000
  1199. #define kClockCserDivShift 4
  1200. /***** Power Module Equates *****/
  1201. /***** Power Module Control Equates (PoseidonModule.powerControl) *****/
  1202. #define kPowerOnButtonStatusMask 0x80000000 /* 31 */
  1203. #define kPowerInterruptStatusMask 0x40000000 /* 30 */
  1204. #define kPowerOkStatusMask 0x20000000 /* 29 */
  1205. #define kPowerStopTimerValueMask 0x0000f000 /* 15:12 */
  1206. #define kPowerEnableStopTimerMask 0x00000800 /* 11 */
  1207. #define kPowerEnableForceShutdownMask 0x00000400 /* 10 */
  1208. #define kPowerForceShutdownMask 0x00000200 /* 9 */
  1209. #define kPowerForceShutdownOccurredMask 0x00000100 /* 8 */
  1210. #define kPowerSelectShortWakeUpDebounceMask 0x00000080 /* 7 */
  1211. #define kPowerDisableWakeUpDebounceMask 0x00000020 /* 5 */
  1212. #define kPowerStopCpuMask 0x00000010 /* 4 */
  1213. #define kPowerEnableOnButtonDebounceMask 0x00000008 /* 3 */
  1214. #define kPowerColdStartMask 0x00000004 /* 2 */
  1215. #define kPowerCsMask 0x00000002 /* 1 */
  1216. #define kPowerVccOnMask 0x00000001 /* 0 */
  1217. #define kPowerStopTimerValueShift 12
  1218. #define kPowerWriteMask ( 
  1219. kPowerStopTimerValueMask | 
  1220. kPowerEnableStopTimerMask | 
  1221. kPowerEnableForceShutdownMask | 
  1222. kPowerForceShutdownMask | 
  1223. kPowerForceShutdownOccurredMask | 
  1224. kPowerSelectShortWakeUpDebounceMask | 
  1225. kPowerDisableWakeUpDebounceMask | 
  1226. kPowerStopCpuMask | 
  1227. kPowerEnableOnButtonDebounceMask | 
  1228. kPowerColdStartMask | 
  1229. kPowerCsMask | 
  1230. kPowerVccOnMask)
  1231. /***** CHI Module Equates *****/
  1232. /***** Register Equates (PoseidonModule.chiControl) *****/
  1233. #define kChiFsOutputSelectMask 0x08000000 /* 27 */
  1234. #define kChiFsWidthMask 0x06000000 /* 26:25 */
  1235. #define kChiNumChanTimeslotsMask 0x01f00000 /* 24:20 */
  1236. #define kChiTxBitOffsetMask 0x000f0000 /* 19:16 */
  1237. #define kChiRxBitOffsetMask 0x0000f000 /* 15:12 */
  1238. #define kChiTxMSBSelectMask 0x00000800 /* 11 */
  1239. #define kChiRxMSBSelectMask 0x00000400 /* 10 */
  1240. #define kChiRxFsNegativePolMask 0x00000200 /* 9 */
  1241. #define kChiTxFsNegativePolMask 0x00000100 /* 8 */
  1242. #define kChiRxRisingEdgeMask 0x00000080 /* 7 */
  1243. #define kChiTxRisingEdgeMask 0x00000040 /* 6 */
  1244. #define kChiRxFsRisingEdgeMask 0x00000020 /* 5 */
  1245. #define kChiTxFsRisingEdgeMask 0x00000010 /* 4 */
  1246. #define kChiSelect2xClockMask 0x00000008 /* 3 */
  1247. #define kChiEnReceiveMask 0x00000004 /* 2 */
  1248. #define kChiEnTransmitMask 0x00000002 /* 1 */
  1249. #define kChiEnMask 0x00000001 /* 0 */
  1250. #define kChiFsWidthShift 25
  1251. #define kChiNumChanTimeslotsShift 20
  1252. #define kChiTxBitOffsetShift 16
  1253. #define kChiRxBitOffsetShift 12
  1254. /***** Register Equates (PoseidonModule.chiPointerEnable) *****/
  1255. #define kChiEnTxPtrB3TimeslotMask 0x80000000 /* 31 */
  1256. #define kChiEnTxPtrB2TimeslotMask 0x40000000 /* 30 */
  1257. #define kChiEnTxPtrB1TimeslotMask 0x20000000 /* 29 */
  1258. #define kChiEnTxPtrB0TimeslotMask 0x10000000 /* 28 */
  1259. #define kChiEnTxPtrA3TimeslotMask 0x08000000 /* 27 */
  1260. #define kChiEnTxPtrA2TimeslotMask 0x04000000 /* 26 */
  1261. #define kChiEnTxPtrA1TimeslotMask 0x02000000 /* 25 */
  1262. #define kChiEnTxPtrA0TimeslotMask 0x01000000 /* 24 */
  1263. #define kChiEnRxPtrB3TimeslotMask 0x00800000 /* 23 */
  1264. #define kChiEnRxPtrB2TimeslotMask 0x00400000 /* 22 */
  1265. #define kChiEnRxPtrB1TimeslotMask 0x00200000 /* 21 */
  1266. #define kChiEnRxPtrB0TimeslotMask 0x00100000 /* 20 */
  1267. #define kChiEnRxPtrA3TimeslotMask 0x00080000 /* 19 */
  1268. #define kChiEnRxPtrA2TimeslotMask 0x00040000 /* 18 */
  1269. #define kChiEnRxPtrA1TimeslotMask 0x00020000 /* 17 */
  1270. #define kChiEnRxPtrA0TimeslotMask 0x00010000 /* 16 */
  1271. /***** Register Equates (PoseidonModule.chiRxPointerA) *****/
  1272. #define kChiRxPtrA3Mask 0x1f000000 /* 28:24 */
  1273. #define kChiRxPtrA2Mask 0x001f0000 /* 20:16 */
  1274. #define kChiRxPtrA1Mask 0x00001f00 /* 12:8 */
  1275. #define kChiRxPtrA0Mask 0x0000001f /* 4:0 */
  1276. #define kChiRxPtrA3Shift 24
  1277. #define kChiRxPtrA2Shift 16
  1278. #define kChiRxPtrA1Shift 8
  1279. #define kChiRxPtrA0Shift 0
  1280. /***** Register Equates (PoseidonModule.chiRxPointerB) *****/
  1281. #define kChiRxPtrB3Mask 0x1f000000 /* 28:24 */
  1282. #define kChiRxPtrB2Mask 0x001f0000 /* 20:16 */
  1283. #define kChiRxPtrB1Mask 0x00001f00 /* 12:8 */
  1284. #define kChiRxPtrB0Mask 0x0000001f /* 4:0 */
  1285. #define kChiRxPtrB3Shift 24
  1286. #define kChiRxPtrB2Shift 16
  1287. #define kChiRxPtrB1Shift 8
  1288. #define kChiRxPtrB0Shift 0
  1289. /***** Register Equates (PoseidonModule.chiTxPointerA) *****/
  1290. #define kChiTxPtrA3Mask 0x1f000000 /* 28:24 */
  1291. #define kChiTxPtrA2Mask 0x001f0000 /* 20:16 */
  1292. #define kChiTxPtrA1Mask 0x00001f00 /* 12:8 */
  1293. #define kChiTxPtrA0Mask 0x0000001f /* 4:0 */
  1294. #define kChiTxPtrA3Shift 24
  1295. #define kChiTxPtrA2Shift 16
  1296. #define kChiTxPtrA1Shift 8
  1297. #define kChiTxPtrA0Shift 0
  1298. /***** Register Equates (PoseidonModule.chiTxPointerB) *****/
  1299. #define kChiTxPtrB3Mask 0x1f000000 /* 28:24 */
  1300. #define kChiTxPtrB2Mask 0x001f0000 /* 20:16 */
  1301. #define kChiTxPtrB1Mask 0x00001f00 /* 12:8 */
  1302. #define kChiTxPtrB0Mask 0x0000001f /* 4:0 */
  1303. #define kChiTxPtrB3Shift 24
  1304. #define kChiTxPtrB2Shift 16
  1305. #define kChiTxPtrB1Shift 8
  1306. #define kChiTxPtrB0Shift 0
  1307. /***** Register Equates (PoseidonModule.chiSize) *****/
  1308. #define kChiDmaPtrMask 0x3ffc0000 /* 29:18 */
  1309. #define kChiDmaOnceMask 0x00008000 /* 15 */
  1310. #define kChiDmaLoopMask 0x00004000 /* 14 */
  1311. #define kChiDmaSizeMask 0x00003ffc /* 13:2 */
  1312. #define kChiEnRxDmaMask 0x00000002 /* 1 */
  1313. #define kChiEnTxDmaMask 0x00000001 /* 0 */
  1314. #define kChiDmaPtrShift 18
  1315. #define kChiDmaSizeShift 2
  1316. /***** Register Equates (PoseidonModule.chiRxStart) *****/
  1317. #define kChiRxDmaStartAddrMask 0xfffffffc /* 31:2 */
  1318. #define kChiRxDmaStartAddrShift 2
  1319. /***** Register Equates (PoseidonModule.chiTxStart) *****/
  1320. #define kChiTxDmaStartAddrMask 0xfffffffc /* 31:2 */
  1321. #define kChiTxDmaStartAddrShift 2
  1322. /***** Register Equates (PoseidonModule.chiHold) *****/
  1323. #endif /* __POSEIDON__ */