cisLib.h
上传用户:luoyougen
上传日期:2008-05-12
资源大小:23136k
文件大小:5k
源码类别:

VxWorks

开发平台:

C/C++

  1. /* cisLib.h - PCMCIA CIS library header */
  2. /* Copyright 1984-1996 Wind River Systems, Inc. */
  3. /*
  4. modification history
  5. --------------------
  6. 01d,02may01,dat  added WRS_PACK_ALIGN struct. spr 67168
  7. 01c,16jan97,hdn  added CIS_MAX_TUPLES.
  8. 01b,22feb96,hdn  cleaned up.
  9. 01a,10feb95,hdn  written
  10. */
  11. #ifndef __INCcislibh
  12. #define __INCcislibh
  13. #ifdef __cplusplus
  14. extern "C" {
  15. #endif
  16. #ifndef _ASMLANGUAGE
  17. /*
  18.  * The following packing attribute is needed by code that reads the CIS tuples
  19.  * to ensure the structure sizes can be used to calculate the proper offsets.
  20.  */
  21. #ifndef WRS_PACK_ALIGN
  22. #   define WRS_PACK_ALIGN(x) __attribute__((packed, aligned(x)))
  23. #endif
  24. typedef struct cisTupleA
  25.     {
  26.     u_char code;
  27.     u_char dummy0;
  28.     u_char link;
  29.     u_char dummy1;
  30.     } CIS_TUPLE_A;
  31. typedef struct cisTupleC
  32.     {
  33.     u_char code;
  34.     u_char link;
  35.     } WRS_PACK_ALIGN(2) CIS_TUPLE_C;
  36. typedef CIS_TUPLE_C CIS_TUPLE;
  37. typedef union cisByte2
  38.     {
  39.     u_char c[2];
  40.     u_short s;
  41.     } CIS_BYTE2;
  42. typedef union cisByte4
  43.     {
  44.     u_char c[4];
  45.     u_int l;
  46.     } CIS_BYTE4;
  47. typedef struct cisIo
  48.     {
  49.     u_int start;
  50.     u_int stop;
  51.     } CIS_IO;
  52. typedef struct cisMem
  53.     {
  54.     u_int length;
  55.     u_int cAddr;
  56.     u_int hAddr;
  57.     } CIS_MEM;
  58. typedef struct cisConfig
  59.     {
  60.     DL_NODE node; /* Double Link Node */
  61.     u_char index; /* configuration index */
  62.     u_char interfaceType; /* interface type */
  63.     u_char vcc[3]; /* vcc */
  64.     u_char vpp1[3]; /* vpp1 */
  65.     u_char vpp2[3]; /* vpp2 */
  66.     u_char ioBuswidth; /* io bus width */
  67.     u_char ioAddrlines; /* io address lines */
  68.     u_char ioRanges; /* io ranges */
  69.     CIS_IO io[16]; /* io window info */
  70.     u_char irqMode; /* IRQ mode */
  71.     u_char irqMask; /* IRQ mask */
  72.     u_char irqLevel; /* IRQ level */
  73.     u_char irqSpecial; /* IRQ special */
  74.     CIS_BYTE2 irqBit; /* IRQ bit */
  75.     CIS_MEM mem[8]; /* memory window info */
  76.     u_char twins; /* twin */
  77.     u_char audio; /* audio */
  78.     u_char readonly; /* read only */
  79.     u_char pwrdown; /* power down */
  80.     } CIS_CONFIG;
  81. /* assume max number of tuples in attribute or common memory */
  82. #define CIS_MAX_TUPLES 512
  83. /* memory window for Tuple and Configuration-register */
  84. #define CIS_MEM_TUPLE 0
  85. #define CIS_MEM_CONFIG 1
  86. /* Tuple codes */
  87. #define CISTPL_NULL 0x00
  88. #define CISTPL_DEVICE 0x01
  89. #define CISTPL_CHECKSUM 0x10
  90. #define CISTPL_LONGLINK_A 0x11
  91. #define CISTPL_LONGLINK_C 0x12
  92. #define CISTPL_LINKTARGET 0x13
  93. #define CISTPL_NO_LINK 0x14
  94. #define CISTPL_VERS_1 0x15
  95. #define CISTPL_ALTSTR 0x16
  96. #define CISTPL_DEVICE_A 0x17
  97. #define CISTPL_JEDEC_C 0x18
  98. #define CISTPL_JEDEC_A 0x19
  99. #define CISTPL_CONFIG 0x1a
  100. #define CISTPL_CFTABLE_ENTRY 0x1b
  101. #define CISTPL_DEVICE_OC 0x1c
  102. #define CISTPL_DEVICE_OA 0x1d
  103. #define CISTPL_DEVICE_GEO 0x1e
  104. #define CISTPL_DEVICE_GEO_A 0x1f
  105. #define CISTPL_MANFID 0x20
  106. #define CISTPL_FUNCID 0x21
  107. #define CISTPL_FUNCE 0x22
  108. #define CISTPL_SWIL 0x23
  109. #define CISTPL_VERS_2 0x40
  110. #define CISTPL_FORMAT 0x41
  111. #define CISTPL_GEOMETRY 0x42
  112. #define CISTPL_BYTEORDER 0x43
  113. #define CISTPL_DATE 0x44
  114. #define CISTPL_BATTERY 0x45
  115. #define CISTPL_ORG 0x46
  116. #define CISTPL_END 0xff
  117. /* device speed codes */
  118. #define DSPEED_NULL 0
  119. #define DSPEED_250NS 1
  120. #define DSPEED_200NS 2
  121. #define DSPEED_150NS 3
  122. #define DSPEED_100NS 4
  123. #define DSPEED_EXT 7
  124. /* device type codes */
  125. #define DTYPE_NULL 0x00
  126. #define DTYPE_ROM 0x10
  127. #define DTYPE_OTPROM 0x20
  128. #define DTYPE_EPROM 0x30
  129. #define DTYPE_EEPROM 0x40
  130. #define DTYPE_FLASH 0x50
  131. #define DTYPE_SRAM 0x60
  132. #define DTYPE_DRAM 0x70
  133. #define DTYPE_FUNCSPEC 0xd0
  134. #define DTYPE_EXTEND 0xe0
  135. /* function ID */
  136. #define FUNC_MULTI 0x0
  137. #define FUNC_MEMORY 0x1
  138. #define FUNC_SERIAL 0x2
  139. #define FUNC_PARALLEL 0x3
  140. #define FUNC_FIXEDDISK 0x4
  141. #define FUNC_VIDEO 0x5
  142. #define FUNC_LAN 0x6
  143. #define FUNC_AIMS 0x7
  144. /* function extension type and data */
  145. #define FUNCE_TYPE_DISK 0x01
  146. #define FUNCE_DATA_ATA 0x01
  147. /* configuration register: configuration option register */
  148. #define COR_SRESET 0x80
  149. #define COR_LEVIREQ 0x40
  150. /* configuration register: card configuration and status register */
  151. #define CCSR_CHANGED 0x80
  152. #define CCSR_SIGCHG 0x40
  153. #define CCSR_IOIS8 0x20
  154. #define CCSR_AUDIO 0x08
  155. #define CCSR_PWRDWN 0x04
  156. #define CCSR_INTR 0x02
  157. /* configuration register: pin replacement register */
  158. #define PRR_CBVD1 0x80
  159. #define PRR_CBVD2 0x40
  160. #define PRR_CRDY 0x20
  161. #define PRR_CWPROT 0x10
  162. #define PRR_RBVD1 0x08
  163. #define PRR_RBVD2 0x04
  164. #define PRR_RRDY 0x02
  165. #define PRR_RWPROT 0x01
  166. /* function declarations */
  167. #if defined(__STDC__) || defined(__cplusplus)
  168. extern STATUS cisGet (int sock);
  169. extern void cisFree (int sock);
  170. extern STATUS cisConfigregGet (int sock, int reg, int *pValue);
  171. extern STATUS cisConfigregSet (int sock, int reg, int value);
  172. extern void cisShow (int sock);
  173. #else
  174. extern STATUS cisGet ();
  175. extern void cisFree ();
  176. extern STATUS cisConfigregGet ();
  177. extern STATUS cisConfigregSet ();
  178. extern void cisShow ();
  179. #endif  /* __STDC__ */
  180. #endif /* _ASMLANGUAGE */
  181. #ifdef __cplusplus
  182. }
  183. #endif
  184. #endif /* __INCcislibh */