|
|
1.1 root 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 */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.