/* pcmciaLib.h - PCMCIA library header */ /* Copyright 1984-1996, 2010 Wind River Systems, Inc. */ /* Copyright (c) 1994 David A. Hinds -- All Rights Reserved */ /* modification history -------------------- 01d,29apr10,pad Moved extern C statement after include statements. 01c,16jan97,hdn added two new members to PCMCIA_CTRL. 01b,22feb96,hdn cleaned up. 01a,19jan95,hdn written based on David Hinds's version 2.2.3. */ #ifndef __INCpcmciah #define __INCpcmciah #include "vwModNum.h" /* pcmciaLib status codes */ #define S_pcmciaLib_BATTERY_DEAD (M_pcmciaLib | 1) #define S_pcmciaLib_BATTERY_WARNING (M_pcmciaLib | 2) #ifndef _ASMLANGUAGE #include "dllLib.h" #include "blkIo.h" #include "sysLib.h" #include "dosFsLib.h" #include "drv/pcmcia/pccardLib.h" #ifdef __cplusplus extern "C" { #endif #define DOS_ID_OFFSET 3 #define FIRST_PARTITION_SECTOR_OFFSET (0x1be + 8) #define VXDOS "VXDOS" #define VXEXT "VXEXT" #define PCMCIA_MAX_ARGS 6 /* max args to task level call */ #define PCMCIA_MAX_MSGS 10 /* max number of PCMCIA event msgs */ #define MAX_SOCKETS 8 /* XXX */ #define PCMCIA_CIS_WINDOW 0 /* memory window for CIS */ typedef struct pcmciaCard /* for PC card */ { int type; /* card type */ int sock; /* socket no. */ int ctrl; /* controller no. */ BOOL detected; /* TRUE if a card is detected */ BOOL installed; /* TRUE if a driver is installed */ BOOL changed; /* TRUE if a card is changed */ int regBase; /* config register base */ int regMask; /* config register mask */ int cardStatus; /* card status */ int initStatus; /* init status */ FUNCPTR cscIntr; /* CSC interrupt handler */ FUNCPTR showRtn; /* show routine */ DL_LIST cisTupleList; /* CIS tuple link list */ DL_LIST cisConfigList; /* CIS config tuple link list */ PCCARD_RESOURCE *pResource; /* resources for the card */ BLK_DEV *pBlkDev; /* booting for block device */ NETIF *pNetIf; /* booting for ethernet device */ DOS_VOL_DESC *pDos; /* DOS file system volume descriptor */ } PCMCIA_CARD; typedef struct pcmciaChip /* for PCMCIA host adapter chip */ { int type; /* type of PCMCIA adapter chip */ char *name; /* name of PCMCIA adapter chip */ BOOL installed; /* TRUE if it is installed */ int socks; /* number of sockets supported */ int flags; /* */ int intLevel; /* CSC interrupt level */ int memWindows; /* number of memory windows */ int ioWindows; /* number of io windows */ FUNCPTR reset; /* reset routine */ FUNCPTR status; /* status routine */ FUNCPTR flagGet; /* flag get routine */ FUNCPTR flagSet; /* flag set routine */ FUNCPTR cscOn; /* CSC on routine */ FUNCPTR cscOff; /* CSC off routine */ FUNCPTR cscPoll; /* CSC poll routine */ FUNCPTR irqGet; /* IRQ get routine */ FUNCPTR irqSet; /* IRQ set routine */ FUNCPTR iowinGet; /* io window get routine */ FUNCPTR iowinSet; /* io window set routine */ FUNCPTR memwinGet; /* memory window get routine */ FUNCPTR memwinSet; /* memory window set routine */ FUNCPTR showRtn; /* show routine */ } PCMCIA_CHIP; typedef struct pcmciaCtrl { int socks; /* number of sockets */ int memBase; /* mapping memory base addr */ PCMCIA_CHIP chip; /* chip structure */ PCMCIA_CARD card[MAX_SOCKETS]; /* card structure */ } PCMCIA_CTRL; typedef struct pcmciaIowin { int window; int flags; int extraws; int start; int stop; } PCMCIA_IOWIN; typedef struct pcmciaMemwin { int window; int flags; int extraws; int start; int stop; int cardstart; } PCMCIA_MEMWIN; typedef struct pcmciaAdapter { int type; /* type of a PCMCIA adapter chip */ int ioBase; /* IO base address */ int intVec; /* CSC interrupt vector */ int intLevel; /* CSC interrupt level */ FUNCPTR initRtn; /* initialize routine */ FUNCPTR showRtn; /* show routine */ } PCMCIA_ADAPTER; typedef struct pcmciaMsg { VOIDFUNCPTR func; /* pointer to function to invoke */ int arg [PCMCIA_MAX_ARGS]; /* args for function */ } PCMCIA_MSG; /* supported PCMCIA host adapter chip type */ #define PCMCIA_PCIC 0x01 #define PCMCIA_TCIC 0x02 /* supported PC card type */ #define PCCARD_SRAM 0x01 #define PCCARD_ATA 0x02 #define PCCARD_LAN_ELT 0x03 /* configuration register number */ #define CONFIG_OPTION_REG 0 #define CONFIG_STATUS_REG 1 #define PIN_REPLACEMENT_REG 2 #define SOCKET_COPY_REG 3 /* bits in configuration option register */ #define COPTION_SRESET 0x80 #define COPTION_LEVIRQ 0x40 /* bits in configuration status register */ #define CSTATUS_CHANGED 0x80 #define CSTATUS_SIGCHG 0x40 #define CSTATUS_IOIS8 0x20 #define CSTATUS_AUDIO 0x08 #define CSTATUS_PWRDWN 0x04 #define CSTATUS_INTR 0x02 /* bits in pin replacement register */ #define PINREP_CBVD1 0x80 #define PINREP_CBVD2 0x40 #define PINREP_CRDYBSY 0x20 #define PINREP_CWPROT 0x10 #define PINREP_RBVD1 0x08 #define PINREP_RBVD2 0x04 #define PINREP_RRDYBSY 0x02 #define PINREP_RWPROT 0x01 /* definitions for card status flags */ #define PC_WRPROT 0x001 #define PC_CARDLOCK 0x002 #define PC_NO_CARD 0x004 #define PC_IS_CARD 0x008 #define PC_BATDEAD 0x010 #define PC_BATWARN 0x020 #define PC_READY 0x040 #define PC_DETECT 0x080 #define PC_POWERON 0x100 #define PC_GPI 0x200 #define PC_STSCHG 0x400 /* various card configuration flags */ #define PC_PWR_OFF 0x00 #define PC_VCC_MASK 0x03 #define PC_VCC_3V 0x01 #define PC_VCC_5V 0x02 #define PC_VPP_MASK 0x0C #define PC_VPP_5V 0x04 #define PC_VPP_12V 0x08 #define PC_PWR_AUTO 0x10 #define PC_IOCARD 0x20 #define PC_RESET 0x40 /* flags for I/O port and memory windows */ #define MAP_ACTIVE 0x01 #define MAP_16BIT 0x02 #define MAP_0WS 0x04 #define MAP_CS16 0x08 #define MAP_WRPROT 0x10 #define MAP_ATTRIB 0x20 /* function declarations */ #if defined(__STDC__) || defined(__cplusplus) extern STATUS pcmciaInit (void); extern STATUS pcmciaJobAdd (VOIDFUNCPTR func, int arg1, int arg2, int arg3, int arg4, int arg5, int arg6); extern void pcmciad (void); extern void pcmciaShowInit (void); extern void pcmciaShow (int sock); #else extern STATUS pcmciaInit (); extern STATUS pcmciaJobAdd (); extern void pcmciad (); extern void pcmciaShowInit (); extern void pcmciaShow (); #endif /* __STDC__ */ #endif /* _ASMLANGUAGE */ #ifdef __cplusplus } #endif #endif /* __INCpcmciah */