1 // pcmcia.h - Header file for PCMCIA support 2 3 #ifndef PCMCIA_H 4 #define PCMCIA_H 5 6 typedef unsigned char u_char; 7 typedef unsigned short u_short; 8 typedef unsigned int u_int; 9 typedef unsigned long u_long; 10 11 typedef u_short ioaddr_t; 12 extern int sockets; 13 14 #define MAXPCCSOCKS 8 15 #define MAXPCCCONFIGS 8 16 17 typedef enum ebpdriver_t { I82365, SOMEDRIVER } ebpdriver_t; 18 typedef enum interface_func_t { INIT, SHUTDOWN, MAPATTRMEM, UNMAPATTRMEM, SELECTCONFIG } interface_func_t; 19 typedef enum ebpstatus_t { EMPTY, HASCARD, INITIALIZED, SUSPENDED, OTHERDEVICE, UNKNOWN } ebpstatus_t; 20 21 struct driver_interact_t { 22 ebpdriver_t id; 23 int (*f)(interface_func_t,int,int,int,int); 24 char *name; 25 }; 26 struct pccsock_t { 27 ebpdriver_t device; 28 int drivernum; 29 ebpstatus_t status; 30 // Internal usage of the drivers: 31 int internalid; 32 int flags; 33 int ioaddr; 34 int type; 35 int configoffset; 36 int possibleconfignum; 37 int stringoffset; 38 u_int stringlength; 39 int rmask0; 40 }; 41 42 extern struct pccsock_t pccsock[MAXPCCSOCKS]; 43 extern u_int pccsocks; 44 45 struct pcc_config_t { 46 u_char index; 47 u_char irq; 48 int iowin; 49 int iolen; 50 }; 51 52 53 int i82365_interfacer(interface_func_t,int,int,int,void *); 54 void sleepticks(int); 55 56 #define EINVAL 22 57 58 59 //*********************************************************** cc.h: 60 /* Definitions for card status flags for GetStatus */ 61 #define SS_WRPROT 0x0001 62 #define SS_CARDLOCK 0x0002 63 #define SS_EJECTION 0x0004 64 #define SS_INSERTION 0x0008 65 #define SS_BATDEAD 0x0010 66 #define SS_BATWARN 0x0020 67 #define SS_READY 0x0040 68 #define SS_DETECT 0x0080 69 #define SS_POWERON 0x0100 70 #define SS_GPI 0x0200 71 #define SS_STSCHG 0x0400 72 #define SS_CARDBUS 0x0800 73 #define SS_3VCARD 0x1000 74 #define SS_XVCARD 0x2000 75 #define SS_PENDING 0x4000 76 77 /* cc.h: for InquireSocket */ 78 typedef struct socket_cap_t { 79 u_int features; 80 u_int irq_mask; 81 u_int map_size; 82 ioaddr_t io_offset; 83 u_char pci_irq; 84 //struct pci_dev *cb_dev; 85 //struct bus_operations *bus; 86 void *cb_dev; 87 void *bus; 88 } socket_cap_t; 89 /* InquireSocket capabilities */ 90 #define SS_CAP_PAGE_REGS 0x0001 91 #define SS_CAP_VIRTUAL_BUS 0x0002 92 #define SS_CAP_MEM_ALIGN 0x0004 93 #define SS_CAP_STATIC_MAP 0x0008 94 #define SS_CAP_PCCARD 0x4000 95 #define SS_CAP_CARDBUS 0x8000 96 97 /* for GetSocket, SetSocket */ 98 typedef struct socket_state_t { 99 u_int flags; 100 u_int csc_mask; 101 u_char Vcc, Vpp; 102 u_char io_irq; 103 } socket_state_t; 104 105 extern socket_state_t dead_socket; 106 107 /* Socket configuration flags */ 108 #define SS_PWR_AUTO 0x0010 109 #define SS_IOCARD 0x0020 110 #define SS_RESET 0x0040 111 #define SS_DMA_MODE 0x0080 112 #define SS_SPKR_ENA 0x0100 113 #define SS_OUTPUT_ENA 0x0200 114 #define SS_DEBOUNCED 0x0400 /* Tell driver that the debounce delay has ended */ 115 #define SS_ZVCARD 0x0800 116 117 /* Flags for I/O port and memory windows */ 118 #define MAP_ACTIVE 0x01 119 #define MAP_16BIT 0x02 120 #define MAP_AUTOSZ 0x04 121 #define MAP_0WS 0x08 122 #define MAP_WRPROT 0x10 123 #define MAP_ATTRIB 0x20 124 #define MAP_USE_WAIT 0x40 125 #define MAP_PREFETCH 0x80 126 127 /* Use this just for bridge windows */ 128 #define MAP_IOSPACE 0x20 129 130 typedef struct pccard_io_map { 131 u_char map; 132 u_char flags; 133 u_short speed; 134 ioaddr_t start, stop; 135 } pccard_io_map; 136 137 138 typedef struct pccard_mem_map { 139 u_char map; 140 u_char flags; 141 u_short speed; 142 u_long sys_start, sys_stop; 143 u_int card_start; 144 } pccard_mem_map; 145 146 typedef struct cb_bridge_map { 147 u_char map; 148 u_char flags; 149 u_int start, stop; 150 } cb_bridge_map; 151 // need the global function pointer struct? *TODO* 152 //************************************* end cc.h 153 154 155 156 #endif /* PCMCIA_H */ 157