aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/staging/dgap/dgap_fep5.h
blob: 3a12ba5e3c2ade2f34a2f376ec962e52c71ac74f (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
/*
 * Copyright 2003 Digi International (www.digi.com)
 *	Scott H Kilau <Scott_Kilau at digi dot com>
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2, or (at your option)
 * any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED; without even the
 * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
 * PURPOSE.  See the GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 *
 *	NOTE: THIS IS A SHARED HEADER. DO NOT CHANGE CODING STYLE!!!
 *
 ************************************************************************ 
 ***	FEP Version 5 dependent definitions
 ************************************************************************/

#ifndef __DGAP_FEP5_H
#define __DGAP_FEP5_H

/************************************************************************
 *      FEP memory offsets
 ************************************************************************/
#define START           0x0004L         /* Execution start address      */

#define CMDBUF          0x0d10L         /* Command (cm_t) structure offset */
#define CMDSTART        0x0400L         /* Start of command buffer      */   
#define CMDMAX          0x0800L         /* End of command buffer        */

#define EVBUF           0x0d18L         /* Event (ev_t) structure       */
#define EVSTART         0x0800L         /* Start of event buffer        */
#define EVMAX           0x0c00L         /* End of event buffer          */
#define FEP5_PLUS       0x0E40          /* ASCII '5' and ASCII 'A' is here  */
#define ECS_SEG         0x0E44          /* Segment of the extended channel structure */
#define LINE_SPEED      0x10            /* Offset into ECS_SEG for line speed   */
                                        /* if the fep has extended capabilities */

/* BIOS MAGIC SPOTS */
#define ERROR           0x0C14L		/* BIOS error code              */
#define SEQUENCE	0x0C12L		/* BIOS sequence indicator      */
#define POSTAREA	0x0C00L		/* POST complete message area   */

/* FEP MAGIC SPOTS */
#define FEPSTAT         POSTAREA        /* OS here when FEP comes up    */
#define NCHAN           0x0C02L         /* number of ports FEP sees     */
#define PANIC           0x0C10L         /* PANIC area for FEP           */
#define KMEMEM          0x0C30L         /* Memory for KME use           */   
#define CONFIG          0x0CD0L         /* Concentrator configuration info */
#define CONFIGSIZE      0x0030          /* configuration info size      */
#define DOWNREQ         0x0D00          /* Download request buffer pointer */

#define CHANBUF         0x1000L         /* Async channel (bs_t) structs */
#define FEPOSSIZE       0x1FFF          /* 8K FEPOS                     */

#define XEMPORTS    0xC02	/*
				 * Offset in board memory where FEP5 stores
				 * how many ports it has detected.
				 * NOTE: FEP5 reports 64 ports when the user
				 * has the cable in EBI OUT instead of EBI IN.
				 */

#define FEPCLR      0x00
#define FEPMEM      0x02 
#define FEPRST      0x04 
#define FEPINT      0x08
#define FEPMASK     0x0e
#define FEPWIN      0x80

#define LOWMEM      0x0100
#define HIGHMEM     0x7f00

#define FEPTIMEOUT 200000

#define ENABLE_INTR		0x0e04		/* Enable interrupts flag */
#define FEPPOLL_MIN		1		/* minimum of 1 millisecond */  
#define FEPPOLL_MAX		20		/* maximum of 20 milliseconds */
#define FEPPOLL			0x0c26		/* Fep event poll interval */   

#define	IALTPIN			0x0080		/* Input flag to swap DSR <-> DCD */

/************************************************************************ 
 * Command structure definition.
 ************************************************************************/
struct cm_t {
	volatile unsigned short cm_head;	/* Command buffer head offset	*/
	volatile unsigned short cm_tail;	/* Command buffer tail offset	*/
	volatile unsigned short cm_start;	/* start offset of buffer	*/
	volatile unsigned short cm_max;		/* last offset of buffer	*/
};

/************************************************************************
 * Event structure definition.
 ************************************************************************/
struct ev_t {
	volatile unsigned short ev_head;	/* Command buffer head offset	*/
	volatile unsigned short ev_tail;	/* Command buffer tail offset	*/
	volatile unsigned short ev_start;	/* start offset of buffer	*/
	volatile unsigned short ev_max;		/* last offset of buffer	*/
};

/************************************************************************
 * Download buffer structure.
 ************************************************************************/
struct downld_t {
	uchar	dl_type;		/* Header                       */
	uchar	dl_seq;			/* Download sequence            */
	ushort	dl_srev;		/* Software revision number     */
	ushort	dl_lrev;		/* Low revision number          */
	ushort	dl_hrev;		/* High revision number         */
	ushort	dl_seg;			/* Start segment address        */
	ushort	dl_size;		/* Number of bytes to download  */
	uchar	dl_data[1024];		/* Download data                */
};

/************************************************************************ 
 * Per channel buffer structure
 ************************************************************************
 *              Base Structure Entries Usage Meanings to Host           * 
 *                                                                      * 
 *        W = read write        R = read only                           * 
 *        C = changed by commands only                                  * 
 *        U = unknown (may be changed w/o notice)                       *
 ************************************************************************/
struct bs_t {
	volatile unsigned short  tp_jmp;	/* Transmit poll jump		 */
	volatile unsigned short  tc_jmp;	/* Cooked procedure jump	 */
	volatile unsigned short  ri_jmp;	/* Not currently used		 */
	volatile unsigned short  rp_jmp;	/* Receive poll jump		 */

	volatile unsigned short  tx_seg;	/* W  Tx segment	 */
	volatile unsigned short  tx_head;	/* W  Tx buffer head offset	*/
	volatile unsigned short  tx_tail;	/* R  Tx buffer tail offset	*/
	volatile unsigned short  tx_max;	/* W  Tx buffer size - 1	 */
 
	volatile unsigned short  rx_seg;	/* W  Rx segment		*/
	volatile unsigned short  rx_head;	/* W  Rx buffer head offset	*/
	volatile unsigned short  rx_tail;	/* R  Rx buffer tail offset	*/
	volatile unsigned short  rx_max;	/* W  Rx buffer size - 1	 */

	volatile unsigned short  tx_lw;		/* W  Tx buffer low water mark  */
	volatile unsigned short  rx_lw;		/* W  Rx buffer low water mark  */
	volatile unsigned short  rx_hw;		/* W  Rx buffer high water mark */
	volatile unsigned short  incr;		/* W  Increment to next channel */

	volatile unsigned short  fepdev;	/* U  SCC device base address    */
	volatile unsigned short  edelay;	/* W  Exception delay            */
	volatile unsigned short  blen;		/* W  Break length              */
	volatile unsigned short  btime;		/* U  Break complete time       */

	volatile unsigned short  iflag;		/* C  UNIX input flags          */
	volatile unsigned short  oflag;		/* C  UNIX output flags         */
	volatile unsigned short  cflag;		/* C  UNIX control flags        */
	volatile unsigned short  wfill[13];	/* U  Reserved for expansion    */

	volatile unsigned char   num;		/* U  Channel number            */
	volatile unsigned char   ract;		/* U  Receiver active counter   */
	volatile unsigned char   bstat;		/* U  Break status bits         */
	volatile unsigned char   tbusy;		/* W  Transmit busy             */
	volatile unsigned char   iempty;	/* W  Transmit empty event enable */
	volatile unsigned char   ilow;		/* W  Transmit low-water event enable */
	volatile unsigned char   idata;		/* W  Receive data interrupt enable */
	volatile unsigned char   eflag;		/* U  Host event flags          */

	volatile unsigned char   tflag;		/* U  Transmit flags            */
	volatile unsigned char   rflag;		/* U  Receive flags             */
	volatile unsigned char   xmask;		/* U  Transmit ready flags      */
	volatile unsigned char   xval;		/* U  Transmit ready value      */
	volatile unsigned char   m_stat;	/* RC Modem status bits          */
	volatile unsigned char   m_change;	/* U  Modem bits which changed  */
	volatile unsigned char   m_int;		/* W  Modem interrupt enable bits */
	volatile unsigned char   m_last;	/* U  Last modem status         */

	volatile unsigned char   mtran;		/* C   Unreported modem trans   */
	volatile unsigned char   orun;		/* C   Buffer overrun occurred  */
	volatile unsigned char   astartc;	/* W   Auxiliary Xon char       */  
	volatile unsigned char   astopc;	/* W   Auxiliary Xoff char      */
	volatile unsigned char   startc;	/* W   Xon character             */
	volatile unsigned char   stopc;		/* W   Xoff character           */
	volatile unsigned char   vnextc;	/* W   Vnext character           */
	volatile unsigned char   hflow;		/* C   Software flow control    */

	volatile unsigned char   fillc;		/* U   Delay Fill character     */
	volatile unsigned char   ochar;		/* U   Saved output character   */
	volatile unsigned char   omask;		/* U   Output character mask    */

	volatile unsigned char   bfill[13];	/* U   Reserved for expansion   */  

	volatile unsigned char   scc[16];	/* U   SCC registers            */
};


/************************************************************************   
 * FEP supported functions
 ************************************************************************/
#define SRLOW		0xe0		/* Set receive low water	*/
#define SRHIGH		0xe1		/* Set receive high water	*/
#define FLUSHTX		0xe2		/* Flush transmit buffer	*/
#define PAUSETX		0xe3		/* Pause data transmission	*/
#define RESUMETX	0xe4		/* Resume data transmission	*/
#define SMINT		0xe5		/* Set Modem Interrupt		*/
#define SAFLOWC		0xe6		/* Set Aux. flow control chars	*/
#define SBREAK		0xe8		/* Send break			*/
#define SMODEM		0xe9		/* Set 8530 modem control lines	*/  
#define SIFLAG		0xea		/* Set UNIX iflags		*/
#define SFLOWC		0xeb		/* Set flow control characters	*/
#define STLOW		0xec		/* Set transmit low water mark	*/
#define RPAUSE		0xee		/* Pause recieve		*/
#define RRESUME		0xef		/* Resume receive		*/  
#define CHRESET		0xf0		/* Reset Channel		*/
#define BUFSETALL	0xf2		/* Set Tx & Rx buffer size avail*/
#define SOFLAG		0xf3		/* Set UNIX oflags		*/
#define SHFLOW		0xf4		/* Set hardware handshake	*/
#define SCFLAG		0xf5		/* Set UNIX cflags		*/
#define SVNEXT		0xf6		/* Set VNEXT character		*/
#define SPINTFC		0xfc		/* Reserved			*/
#define SCOMMODE	0xfd		/* Set RS232/422 mode		*/


/************************************************************************ 
 *	Modes for SCOMMODE
 ************************************************************************/
#define MODE_232	0x00
#define MODE_422	0x01


/************************************************************************ 
 *      Event flags.
 ************************************************************************/
#define IFBREAK         0x01            /* Break received               */  
#define IFTLW           0x02            /* Transmit low water           */
#define IFTEM           0x04            /* Transmitter empty            */
#define IFDATA          0x08            /* Receive data present         */
#define IFMODEM         0x20            /* Modem status change          */

/************************************************************************   
 *      Modem flags
 ************************************************************************/
#       define  DM_RTS          0x02    /* Request to send              */
#       define  DM_CD           0x80    /* Carrier detect               */
#       define  DM_DSR          0x20    /* Data set ready               */
#       define  DM_CTS          0x10    /* Clear to send                */
#       define  DM_RI           0x40    /* Ring indicator               */
#       define  DM_DTR          0x01    /* Data terminal ready          */


#endif