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

VxWorks

开发平台:

C/C++

  1. /* pcmciaLib.h - PCMCIA library header */
  2. /* Copyright 1984-1996 Wind River Systems, Inc. */
  3. /* Copyright (c) 1994 David A. Hinds -- All Rights Reserved */
  4. /*
  5. modification history
  6. --------------------
  7. 01c,16jan97,hdn  added two new members to PCMCIA_CTRL.
  8. 01b,22feb96,hdn  cleaned up.
  9. 01a,19jan95,hdn  written based on David Hinds's version 2.2.3.
  10. */
  11. #ifndef __INCpcmciah
  12. #define __INCpcmciah
  13. #ifdef __cplusplus
  14. extern "C" {
  15. #endif
  16. #include "vwModNum.h"
  17. /* pcmciaLib status codes */
  18. #define S_pcmciaLib_BATTERY_DEAD (M_pcmciaLib | 1)
  19. #define S_pcmciaLib_BATTERY_WARNING (M_pcmciaLib | 2)
  20. #ifndef _ASMLANGUAGE
  21. #include "dllLib.h"
  22. #include "blkIo.h"
  23. #include "sysLib.h"
  24. #include "dosFsLib.h"
  25. #include "drv/pcmcia/pccardLib.h"
  26. #define DOS_ID_OFFSET                   3
  27. #define FIRST_PARTITION_SECTOR_OFFSET   (0x1be + 8)
  28. #define VXDOS                           "VXDOS"
  29. #define VXEXT                           "VXEXT"
  30. #define PCMCIA_MAX_ARGS 6 /* max args to task level call */
  31. #define PCMCIA_MAX_MSGS 10 /* max number of PCMCIA event msgs */
  32. #define MAX_SOCKETS 8 /* XXX */
  33. #define PCMCIA_CIS_WINDOW 0 /* memory window for CIS */
  34. typedef struct pcmciaCard /* for PC card */
  35.     {
  36.     int type; /* card type */
  37.     int sock; /* socket no. */
  38.     int ctrl; /* controller no. */
  39.     BOOL detected; /* TRUE if a card is detected */
  40.     BOOL installed; /* TRUE if a driver is installed */
  41.     BOOL changed; /* TRUE if a card is changed */
  42.     int regBase; /* config register base */
  43.     int regMask; /* config register mask */
  44.     int cardStatus; /* card status */
  45.     int initStatus; /* init status */
  46.     FUNCPTR cscIntr; /* CSC interrupt handler */
  47.     FUNCPTR showRtn; /* show routine */
  48.     DL_LIST cisTupleList; /* CIS tuple link list */
  49.     DL_LIST cisConfigList; /* CIS config tuple link list */
  50.     PCCARD_RESOURCE *pResource; /* resources for the card */
  51.     BLK_DEV *pBlkDev; /* booting for block device */
  52.     NETIF *pNetIf; /* booting for ethernet device */
  53.     DOS_VOL_DESC *pDos; /* DOS file system volume descriptor */
  54.     } PCMCIA_CARD;
  55. typedef struct pcmciaChip /* for PCMCIA host adapter chip */
  56.     {
  57.     int type; /* type of PCMCIA adapter chip */
  58.     char *name; /* name of PCMCIA adapter chip */
  59.     BOOL installed; /* TRUE if it is installed */
  60.     int socks; /* number of sockets supported */
  61.     int flags; /* */
  62.     int intLevel; /* CSC interrupt level */
  63.     int memWindows; /* number of memory windows */
  64.     int ioWindows; /* number of io windows */
  65.     FUNCPTR reset; /* reset routine */
  66.     FUNCPTR status; /* status routine */
  67.     FUNCPTR flagGet; /* flag get routine */
  68.     FUNCPTR flagSet; /* flag set routine */
  69.     FUNCPTR cscOn; /* CSC on routine */
  70.     FUNCPTR cscOff; /* CSC off routine */
  71.     FUNCPTR cscPoll; /* CSC poll routine */
  72.     FUNCPTR irqGet; /* IRQ get routine */
  73.     FUNCPTR irqSet; /* IRQ set routine */
  74.     FUNCPTR iowinGet; /* io window get routine */
  75.     FUNCPTR iowinSet; /* io window set routine */
  76.     FUNCPTR memwinGet; /* memory window get routine */
  77.     FUNCPTR memwinSet; /* memory window set routine */
  78.     FUNCPTR showRtn; /* show routine */
  79.     } PCMCIA_CHIP;
  80. typedef struct pcmciaCtrl
  81.     {
  82.     int socks; /* number of sockets */
  83.     int memBase; /* mapping memory base addr */
  84.     PCMCIA_CHIP chip; /* chip structure */
  85.     PCMCIA_CARD card[MAX_SOCKETS]; /* card structure */
  86.     } PCMCIA_CTRL;
  87. typedef struct pcmciaIowin
  88.     {
  89.     int window;
  90.     int flags;
  91.     int extraws;
  92.     int start;
  93.     int stop;
  94.     } PCMCIA_IOWIN;
  95. typedef struct pcmciaMemwin
  96.     {
  97.     int window;
  98.     int flags;
  99.     int extraws;
  100.     int start;
  101.     int stop;
  102.     int cardstart;
  103.     } PCMCIA_MEMWIN;
  104. typedef struct pcmciaAdapter
  105.     {
  106.     int type; /* type of a PCMCIA adapter chip */
  107.     int ioBase; /* IO base address */
  108.     int intVec; /* CSC interrupt vector */
  109.     int intLevel; /* CSC interrupt level */
  110.     FUNCPTR initRtn; /* initialize routine */
  111.     FUNCPTR showRtn; /* show routine */
  112.     } PCMCIA_ADAPTER;
  113. typedef struct pcmciaMsg
  114.     {
  115.     VOIDFUNCPTR func; /* pointer to function to invoke */
  116.     int arg [PCMCIA_MAX_ARGS]; /* args for function */
  117.     } PCMCIA_MSG;
  118. /* supported PCMCIA host adapter chip type */
  119. #define PCMCIA_PCIC 0x01
  120. #define PCMCIA_TCIC 0x02
  121. /* supported PC card type */
  122. #define PCCARD_SRAM 0x01
  123. #define PCCARD_ATA 0x02
  124. #define PCCARD_LAN_ELT 0x03
  125. /* configuration register number */
  126. #define CONFIG_OPTION_REG 0
  127. #define CONFIG_STATUS_REG 1
  128. #define PIN_REPLACEMENT_REG 2
  129. #define SOCKET_COPY_REG 3
  130. /* bits in configuration option register */
  131. #define COPTION_SRESET 0x80
  132. #define COPTION_LEVIRQ 0x40
  133. /* bits in configuration status register */
  134. #define CSTATUS_CHANGED 0x80
  135. #define CSTATUS_SIGCHG 0x40
  136. #define CSTATUS_IOIS8 0x20
  137. #define CSTATUS_AUDIO 0x08
  138. #define CSTATUS_PWRDWN 0x04
  139. #define CSTATUS_INTR 0x02
  140. /* bits in pin replacement register */
  141. #define PINREP_CBVD1 0x80
  142. #define PINREP_CBVD2 0x40
  143. #define PINREP_CRDYBSY 0x20
  144. #define PINREP_CWPROT 0x10
  145. #define PINREP_RBVD1 0x08
  146. #define PINREP_RBVD2 0x04
  147. #define PINREP_RRDYBSY 0x02
  148. #define PINREP_RWPROT 0x01
  149. /* definitions for card status flags */
  150. #define PC_WRPROT 0x001
  151. #define PC_CARDLOCK 0x002
  152. #define PC_NO_CARD 0x004
  153. #define PC_IS_CARD 0x008
  154. #define PC_BATDEAD 0x010
  155. #define PC_BATWARN 0x020
  156. #define PC_READY 0x040
  157. #define PC_DETECT 0x080
  158. #define PC_POWERON 0x100
  159. #define PC_GPI 0x200
  160. #define PC_STSCHG 0x400
  161. /* various card configuration flags */
  162. #define PC_PWR_OFF 0x00
  163. #define PC_VCC_MASK 0x03
  164. #define PC_VCC_3V 0x01
  165. #define PC_VCC_5V 0x02
  166. #define PC_VPP_MASK 0x0C
  167. #define PC_VPP_5V 0x04
  168. #define PC_VPP_12V 0x08
  169. #define PC_PWR_AUTO 0x10
  170. #define PC_IOCARD 0x20
  171. #define PC_RESET 0x40
  172. /* flags for I/O port and memory windows */
  173. #define MAP_ACTIVE 0x01
  174. #define MAP_16BIT 0x02
  175. #define MAP_0WS 0x04
  176. #define MAP_CS16 0x08
  177. #define MAP_WRPROT 0x10
  178. #define MAP_ATTRIB 0x20
  179. /* function declarations */
  180. #if defined(__STDC__) || defined(__cplusplus)
  181. extern STATUS  pcmciaInit (void);
  182. extern STATUS  pcmciaJobAdd (VOIDFUNCPTR func, int arg1, int arg2, 
  183.  int arg3, int arg4, int arg5, int arg6);
  184. extern void  pcmciad (void);
  185. extern void  pcmciaShowInit (void);
  186. extern void  pcmciaShow (int sock);
  187. #else
  188. extern STATUS  pcmciaInit ();
  189. extern STATUS  pcmciaJobAdd ();
  190. extern void  pcmciad ();
  191. extern void  pcmciaShowInit ();
  192. extern void  pcmciaShow ();
  193. #endif /* __STDC__ */
  194. #endif /* _ASMLANGUAGE */
  195. #ifdef __cplusplus
  196. }
  197. #endif
  198. #endif /* __INCpcmciah */