Add qemu 2.4.0
[kvmfornfv.git] / qemu / roms / ipxe / src / include / pcmcia.h
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 */