Linux-2.6.12-rc2
[linux-2.6/linux-acpi-2.6/ibm-acpi-2.6.git] / drivers / char / epca.h
blob52205ef7131483ae59a17a0220c3803fe0939741
1 #define XEMPORTS 0xC02
2 #define XEPORTS 0xC22
4 #define MAX_ALLOC 0x100
6 #define MAXBOARDS 12
7 #define FEPCODESEG 0x0200L
8 #define FEPCODE 0x2000L
9 #define BIOSCODE 0xf800L
11 #define MISCGLOBAL 0x0C00L
12 #define NPORT 0x0C22L
13 #define MBOX 0x0C40L
14 #define PORTBASE 0x0C90L
16 /* Begin code defines used for epca_setup */
18 #define INVALID_BOARD_TYPE 0x1
19 #define INVALID_NUM_PORTS 0x2
20 #define INVALID_MEM_BASE 0x4
21 #define INVALID_PORT_BASE 0x8
22 #define INVALID_BOARD_STATUS 0x10
23 #define INVALID_ALTPIN 0x20
25 /* End code defines used for epca_setup */
28 #define FEPCLR 0x00
29 #define FEPMEM 0x02
30 #define FEPRST 0x04
31 #define FEPINT 0x08
32 #define FEPMASK 0x0e
33 #define FEPWIN 0x80
35 #define PCXE 0
36 #define PCXEVE 1
37 #define PCXEM 2
38 #define EISAXEM 3
39 #define PC64XE 4
40 #define PCXI 5
41 #define PCIXEM 7
42 #define PCICX 8
43 #define PCIXR 9
44 #define PCIXRJ 10
45 #define EPCA_NUM_TYPES 6
48 static char *board_desc[] =
50 "PC/Xe",
51 "PC/Xeve",
52 "PC/Xem",
53 "EISA/Xem",
54 "PC/64Xe",
55 "PC/Xi",
56 "unknown",
57 "PCI/Xem",
58 "PCI/CX",
59 "PCI/Xr",
60 "PCI/Xrj",
63 #define STARTC 021
64 #define STOPC 023
65 #define IAIXON 0x2000
68 #define TXSTOPPED 0x1
69 #define LOWWAIT 0x2
70 #define EMPTYWAIT 0x4
71 #define RXSTOPPED 0x8
72 #define TXBUSY 0x10
74 #define DISABLED 0
75 #define ENABLED 1
76 #define OFF 0
77 #define ON 1
79 #define FEPTIMEOUT 200000
80 #define SERIAL_TYPE_NORMAL 1
81 #define SERIAL_TYPE_INFO 3
82 #define EPCA_EVENT_HANGUP 1
83 #define EPCA_MAGIC 0x5c6df104L
85 struct channel
87 long magic;
88 unchar boardnum;
89 unchar channelnum;
90 unchar omodem; /* FEP output modem status */
91 unchar imodem; /* FEP input modem status */
92 unchar modemfake; /* Modem values to be forced */
93 unchar modem; /* Force values */
94 unchar hflow;
95 unchar dsr;
96 unchar dcd;
97 unchar m_rts ; /* The bits used in whatever FEP */
98 unchar m_dcd ; /* is indiginous to this board to */
99 unchar m_dsr ; /* represent each of the physical */
100 unchar m_cts ; /* handshake lines */
101 unchar m_ri ;
102 unchar m_dtr ;
103 unchar stopc;
104 unchar startc;
105 unchar stopca;
106 unchar startca;
107 unchar fepstopc;
108 unchar fepstartc;
109 unchar fepstopca;
110 unchar fepstartca;
111 unchar txwin;
112 unchar rxwin;
113 ushort fepiflag;
114 ushort fepcflag;
115 ushort fepoflag;
116 ushort txbufhead;
117 ushort txbufsize;
118 ushort rxbufhead;
119 ushort rxbufsize;
120 int close_delay;
121 int count;
122 int blocked_open;
123 ulong event;
124 int asyncflags;
125 uint dev;
126 ulong statusflags;
127 ulong c_iflag;
128 ulong c_cflag;
129 ulong c_lflag;
130 ulong c_oflag;
131 unchar *txptr;
132 unchar *rxptr;
133 unchar *tmp_buf;
134 struct board_info *board;
135 volatile struct board_chan *brdchan;
136 struct digi_struct digiext;
137 struct tty_struct *tty;
138 wait_queue_head_t open_wait;
139 wait_queue_head_t close_wait;
140 struct work_struct tqueue;
141 volatile struct global_data *mailbox;
144 struct board_info
146 unchar status;
147 unchar type;
148 unchar altpin;
149 ushort numports;
150 unchar *port;
151 unchar *membase;
152 unchar __iomem *re_map_port;
153 unchar *re_map_membase;
154 ulong memory_seg;
155 void ( * memwinon ) (struct board_info *, unsigned int) ;
156 void ( * memwinoff ) (struct board_info *, unsigned int) ;
157 void ( * globalwinon ) (struct channel *) ;
158 void ( * txwinon ) (struct channel *) ;
159 void ( * rxwinon ) (struct channel *) ;
160 void ( * memoff ) (struct channel *) ;
161 void ( * assertgwinon ) (struct channel *) ;
162 void ( * assertmemoff ) (struct channel *) ;
163 unchar poller_inhibited ;