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

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) 2002. Samsung Electronics, co. ltd  All rights reserved.
  7. Module Name:  
  8. Abstract:
  9.     Platform dependent PCMCIA definitions for Intel 82365 compatible socket
  10.     controller.
  11. Rev:
  12. 2001.12.12 : add S3C2400 Specific definitions (kwangyoon LEE, kwangyoon@samsung.com)
  13. Notes: 
  14. --*/
  15. #define PD6710 1
  16. #define REG_CHIP_REVISION 0x00
  17. #define REG_INTERFACE_STATUS 0x01
  18. #define REG_POWER_CONTROL 0x02
  19. #define REG_INTERRUPT_AND_GENERAL_CONTROL 0x03
  20. #define REG_CARD_STATUS_CHANGE 0x04
  21. #define REG_STATUS_CHANGE_INT_CONFIG 0x05
  22. #define REG_WINDOW_ENABLE 0x06
  23. #define REG_IO_WINDOW_CONTROL 0x07
  24. #define REG_IO_MAP0_START_ADDR_LO 0x08
  25. #define REG_IO_MAP0_START_ADDR_HI 0x09
  26. #define REG_IO_MAP0_END_ADDR_LO 0x0A
  27. #define REG_IO_MAP0_END_ADDR_HI 0x0B
  28. #define REG_IO_MAP1_START_ADDR_LO 0x0C
  29. #define REG_IO_MAP1_START_ADDR_HI 0x0D
  30. #define REG_IO_MAP1_END_ADDR_LO 0x0E
  31. #define REG_IO_MAP1_END_ADDR_HI 0x0F
  32. #define REG_MEM_MAP0_START_ADDR_LO 0x10
  33. #define REG_MEM_MAP0_START_ADDR_HI 0x11
  34. #define REG_MEM_MAP0_END_ADDR_LO 0x12
  35. #define REG_MEM_MAP0_END_ADDR_HI 0x13
  36. #define REG_MEM_MAP0_ADDR_OFFSET_LO 0x14
  37. #define REG_MEM_MAP0_ADDR_OFFSET_HI 0x15
  38. #define REG_GENERAL_CONTROL 0x16
  39. #ifdef PD6710
  40. // PD6710 register
  41. #define REG_FIFO_CTRL 0x17
  42. #endif
  43. #define REG_MEM_MAP1_START_ADDR_LO 0x18
  44. #define REG_MEM_MAP1_START_ADDR_HI 0x19
  45. #define REG_MEM_MAP1_END_ADDR_LO 0x1A
  46. #define REG_MEM_MAP1_END_ADDR_HI 0x1B
  47. #define REG_MEM_MAP1_ADDR_OFFSET_LO 0x1C
  48. #define REG_MEM_MAP1_ADDR_OFFSET_HI 0x1D
  49. #define REG_GLOBAL_CONTROL 0x1E
  50. #define REG_CHIP_INFO 0x1F
  51. #define REG_MEM_MAP2_START_ADDR_LO 0x20
  52. #define REG_MEM_MAP2_START_ADDR_HI 0x21
  53. #define REG_MEM_MAP2_END_ADDR_LO 0x22
  54. #define REG_MEM_MAP2_END_ADDR_HI 0x23
  55. #define REG_MEM_MAP2_ADDR_OFFSET_LO 0x24
  56. #define REG_MEM_MAP2_ADDR_OFFSET_HI 0x25
  57. #ifdef PD6710
  58. // PD6710 register
  59. #define REG_ATA_CTRL 0x26
  60. #define REG_SCRATCHPAD 0x27
  61. #endif
  62. #define REG_MEM_MAP3_START_ADDR_LO 0x28
  63. #define REG_MEM_MAP3_START_ADDR_HI 0x29
  64. #define REG_MEM_MAP3_END_ADDR_LO 0x2A
  65. #define REG_MEM_MAP3_END_ADDR_HI 0x2B
  66. #define REG_MEM_MAP3_ADDR_OFFSET_LO 0x2C
  67. #define REG_MEM_MAP3_ADDR_OFFSET_HI 0x2D
  68. #ifdef PD6710
  69. // PD6710 register
  70. #define REG_EXTENDED_INDEX 0x2E
  71. #define REG_EXTENDED_DATA 0x2F
  72. #endif
  73. #define REG_MEM_MAP4_START_ADDR_LO 0x30
  74. #define REG_MEM_MAP4_START_ADDR_HI 0x31
  75. #define REG_MEM_MAP4_END_ADDR_LO 0x32
  76. #define REG_MEM_MAP4_END_ADDR_HI 0x33
  77. #define REG_MEM_MAP4_ADDR_OFFSET_LO 0x34
  78. #define REG_MEM_MAP4_ADDR_OFFSET_HI 0x35
  79. #ifdef PD6710
  80. #define REG_CARD_IO_MAP0_OFFSET_L  0x36
  81. #define REG_CARD_IO_MAP0_OFFSET_H  0x37
  82. #define REG_CARD_IO_MAP1_OFFSET_L  0x38
  83. #define REG_CARD_IO_MAP1_OFFSET_H  0x39
  84. #define REG_SETUP_TIMING0 0x3a
  85. #define REG_CMD_TIMING0 0x3b
  86. #define REG_RECOVERY_TIMING0 0x3c
  87. #define REG_SETUP_TIMING1 0x3d
  88. #define REG_CMD_TIMING1 0x3e
  89. #define REG_RECOVERY_TIMING1 0x3f
  90. #define REG_LAST_INDEX  REG_RECOVERY_TIMING1
  91. #else
  92. #define REG_LAST_INDEX  REG_MEM_MAP4_ADDR_OFFSET_HI
  93. #endif
  94. //
  95. // Relative offsets for memory window control registers
  96. //
  97. #define REG_MEM_MAP_START_ADDR_LO 0x00
  98. #define REG_MEM_MAP_START_ADDR_HI 0x01
  99. #define REG_MEM_MAP_END_ADDR_LO 0x02
  100. #define REG_MEM_MAP_END_ADDR_HI 0x03
  101. #define REG_MEM_MAP_ADDR_OFFSET_LO 0x04
  102. #define REG_MEM_MAP_ADDR_OFFSET_HI 0x05
  103. //
  104. // Interface status register 0x01
  105. //
  106. #define STS_BVD1 0x01
  107. #define STS_BVD2 0x02
  108. #define STS_CD1 0x04
  109. #define STS_CD2 0x08
  110. #define STS_WRITE_PROTECT 0x10
  111. #define STS_CARD_READY 0x20
  112. #define STS_CARD_POWER_ON 0x40
  113. #define STS_GPI  0x80
  114. //
  115. // Power and RESETDRV control register 0x02
  116. //
  117. #define PWR_VPP1_BIT0 0x01
  118. #define PWR_VPP1_BIT1 0x02
  119. #define PWR_VPP2_BIT0 0x04
  120. #define PWR_VPP2_BIT1 0x08
  121. #define PWR_VCC_POWER 0x10
  122. #define PWR_AUTO_POWER  0x20
  123. #define PWR_RESUME_RESET 0x40
  124. #define PWR_OUTPUT_ENABLE  0x80
  125. //
  126. // Interrupt and general control register 0x03
  127. //
  128. #define INT_IRQ_BIT0 0x01
  129. #define INT_IRQ_BIT1 0x02
  130. #define INT_IRQ_BIT2 0x04
  131. #define INT_IRQ_BIT3 0x08
  132. #define INT_ENABLE_MANAGE_INT 0x10
  133. #define INT_CARD_IS_IO  0x20
  134. #define INT_CARD_NOT_RESET  0x40
  135. #define INT_RING_INDICATE_ENABLE  0x80
  136. //
  137. // Card Status change register 0x04
  138. //
  139. #define CSC_BATTERY_DEAD_OR_STS_CHG 0x01
  140. #define CSC_BATTERY_WARNING 0x02
  141. #define CSC_READY_CHANGE 0x04
  142. #define CSC_DETECT_CHANGE 0x08
  143. #define CSC_GPI_CHANGE 0x10
  144. //
  145. // Card Status change interrupt configuration register 0x05
  146. //
  147. #define CFG_BATTERY_DEAD_ENABLE 0x01
  148. #define CFG_BATTERY_WARNING_ENABLE 0x02
  149. #define CFG_READY_ENABLE  0x04
  150. #define CFG_CARD_DETECT_ENABLE 0x08
  151. #define CFG_MANAGEMENT_IRQ_BIT0 0x10
  152. #define CFG_MANAGEMENT_IRQ_BIT1 0x20
  153. #define CFG_MANAGEMENT_IRQ_BIT2 0x40
  154. #define CFG_MANAGEMENT_IRQ_BIT3 0x80
  155. //
  156. // Address window enable register 0x06
  157. //
  158. #define WIN_MEM_MAP0_ENABLE 0x01
  159. #define WIN_MEM_MAP1_ENABLE  0x02
  160. #define WIN_MEM_MAP2_ENABLE 0x04
  161. #define WIN_MEM_MAP3_ENABLE 0x08
  162. #define WIN_MEM_MAP4_ENABLE 0x10
  163. #define WIN_MEMCS16_DECODE 0x20
  164. #define WIN_IO_MAP0_ENABLE 0x40
  165. #define WIN_IO_MAP1_ENABLE 0x80
  166. //
  167. // I/O control register 0x07
  168. //
  169. #define ICR_0_IO_16BIT 0x01
  170. #define ICR_0_IOCS16 0x02
  171. #define ICR_0_ZERO_WAIT_STATE 0x04
  172. #define ICR_0_WAIT_STATE 0x08
  173. #define ICR_1_IO_16BIT 0x10
  174. #define ICR_1_IOCS16 0x20
  175. #define ICR_1_ZERO_WAIT_STATE 0x40
  176. #define ICR_1_WAIT_STATE 0x80
  177. //
  178. // System memory address mapping start high byte register 0x11
  179. // (also 0x19, 0x21, 0x29 and 0x31)
  180. //
  181. #define MSH_ZERO_WAIT_STATE 0x40
  182. #define MSH_MEM_16BIT 0x80
  183. //
  184. // System memory address mapping stop high byte register 0x13
  185. // (also 0x1B, 0x23, 0x2B and 0x33)
  186. //
  187. #define MTH_WAIT_STATE_BIT0 0x40
  188. #define MTH_WAIT_STATE_BIT1 0x80
  189. //
  190. // Card memory offset address high byte register 0x15
  191. // (also 0x1D, 0x25, 0x2D and 0x35)
  192. //
  193. #define MOH_REG_ACTIVE 0x40
  194. #define MOH_WRITE_PROTECT 0x80
  195. //
  196. // MISC Control 1 register 0x16
  197. //
  198. #define MISC1_5V_DETECT 0x01
  199. #define MISC1_VCC_33 0x02
  200. #define MISC1_PM_IRQ 0x04
  201. #define MISC1_PS_IRQ 0x08
  202. #define MISC1_SPK_ENABLE 0x10
  203. #define MISC1_INPACK_ENABLE 0x80
  204. //
  205. // FIFO Control register 0x17
  206. //
  207. #define FIFO_EMPTY_WRITE 0x80
  208. //
  209. // MISC Control 2 register  0x1E
  210. //
  211. #define MISC2_BFS 0x01
  212. #define MISC2_LOW_POWER_MODE 0x02
  213. #define MISC2_SUSPEND 0x04
  214. #define MISC2_5V_CORE 0x08
  215. #define MISC2_LED_ENABLE 0x10
  216. #define MISC2_3STATE_BIT7 0x20
  217. #define MISC2_IRQ15_RIOUT 0x80
  218. //
  219. // Identification and revision register 0x00
  220. //
  221. #define IRR_PCIC_VERSION_MASK 0x0F
  222. #define IRR_PCIC_INTERFACE_ID0 0x40
  223. #define IRR_PCIC_INTERFACE_ID1 0x80
  224. //
  225. // Define rate that we poll after RESET waiting for PC card to
  226. // assert RDY.  Keep in mind that this only approximates the
  227. // actual interval, as Sleep() may not be accurate.
  228. //
  229. #define PCMCIA_RDY_POLL_INT 50
  230. #define PCMCIA_MAX_RDY_WAIT_TIME 2000
  231. //
  232. // Global data and functions
  233. //
  234. extern CRITICAL_SECTION g_PCIC_Crit;
  235. extern VOID PCICIndex(UINT socket_num, UINT8 register_num);
  236. extern VOID PCICDataWrite(UINT8 value);
  237. extern UINT8 PCICDataRead(VOID);
  238. #define SOCKET1_FIRST_MEMORY_WINDOW 5
  239. #define SOCKET0_FIRST_IO_WINDOW 5
  240. #define SOCKET1_FIRST_IO_WINDOW 7
  241. #ifdef DEBUG
  242. //
  243. // Debug stuff
  244. //
  245. #define ZONE_PDD DEBUGZONE(8)
  246. extern VOID DumpSocketRegisters(UINT socket);
  247. extern VOID DeltaSocketRegisters(UINT socket);
  248. #else
  249. #define DumpSocketRegisters(socket)
  250. #define DeltaSocketRegisters(socket)
  251. #endif