1/*
2 * serial167.h
3 *
4 * Richard Hirst [richard@sleepie.demon.co.uk]
5 *
6 * Based on cyclades.h
7 */
8
9struct cyclades_monitor {
10        unsigned long           int_count;
11        unsigned long           char_count;
12        unsigned long           char_max;
13        unsigned long           char_last;
14};
15
16/*
17 * This is our internal structure for each serial port's state.
18 *
19 * Many fields are paralleled by the structure used by the serial_struct
20 * structure.
21 *
22 * For definitions of the flags field, see tty.h
23 */
24
25struct cyclades_port {
26	int                     magic;
27	int                     type;
28	int			card;
29	int			line;
30	int			flags; 		/* defined in tty.h */
31	struct tty_struct 	*tty;
32	int			read_status_mask;
33	int			timeout;
34	int			xmit_fifo_size;
35	int                     cor1,cor2,cor3,cor4,cor5,cor6,cor7;
36	int                     tbpr,tco,rbpr,rco;
37	int			ignore_status_mask;
38	int			close_delay;
39	int			IER; 	/* Interrupt Enable Register */
40	int			event;
41	unsigned long		last_active;
42	int			count;	/* # of fd on device */
43	int                     x_char; /* to be pushed out ASAP */
44	int                     x_break;
45	int			blocked_open; /* # of blocked opens */
46	long			session; /* Session of opening process */
47	long			pgrp; /* pgrp of opening process */
48	unsigned char 		*xmit_buf;
49	int			xmit_head;
50	int			xmit_tail;
51	int			xmit_cnt;
52        int                     default_threshold;
53        int                     default_timeout;
54	struct tq_struct	tqueue;
55	struct termios		normal_termios;
56	struct termios		callout_termios;
57	wait_queue_head_t	open_wait;
58	wait_queue_head_t	close_wait;
59        struct cyclades_monitor mon;
60};
61
62#define CYCLADES_MAGIC  0x4359
63
64#define CYGETMON                0x435901
65#define CYGETTHRESH             0x435902
66#define CYSETTHRESH             0x435903
67#define CYGETDEFTHRESH          0x435904
68#define CYSETDEFTHRESH          0x435905
69#define CYGETTIMEOUT            0x435906
70#define CYSETTIMEOUT            0x435907
71#define CYGETDEFTIMEOUT         0x435908
72#define CYSETDEFTIMEOUT         0x435909
73
74/*
75 * Events are used to schedule things to happen at timer-interrupt
76 * time, instead of at cy interrupt time.
77 */
78#define Cy_EVENT_READ_PROCESS	0
79#define Cy_EVENT_WRITE_WAKEUP	1
80#define Cy_EVENT_HANGUP		2
81#define Cy_EVENT_BREAK		3
82#define Cy_EVENT_OPEN_WAKEUP	4
83
84
85
86#define CyMaxChipsPerCard 1
87
88/**** cd2401 registers ****/
89
90#define CyGFRCR         (0x81)
91#define CyCCR		(0x13)
92#define      CyCLR_CHAN		(0x40)
93#define      CyINIT_CHAN	(0x20)
94#define      CyCHIP_RESET	(0x10)
95#define      CyENB_XMTR		(0x08)
96#define      CyDIS_XMTR		(0x04)
97#define      CyENB_RCVR		(0x02)
98#define      CyDIS_RCVR		(0x01)
99#define CyCAR		(0xee)
100#define CyIER		(0x11)
101#define      CyMdmCh		(0x80)
102#define      CyRxExc		(0x20)
103#define      CyRxData		(0x08)
104#define      CyTxMpty		(0x02)
105#define      CyTxRdy		(0x01)
106#define CyLICR		(0x26)
107#define CyRISR		(0x89)
108#define      CyTIMEOUT		(0x80)
109#define      CySPECHAR		(0x70)
110#define      CyOVERRUN		(0x08)
111#define      CyPARITY		(0x04)
112#define      CyFRAME		(0x02)
113#define      CyBREAK		(0x01)
114#define CyREOIR		(0x84)
115#define CyTEOIR		(0x85)
116#define CyMEOIR		(0x86)
117#define      CyNOTRANS		(0x08)
118#define CyRFOC		(0x30)
119#define CyRDR		(0xf8)
120#define CyTDR		(0xf8)
121#define CyMISR		(0x8b)
122#define CyRISR		(0x89)
123#define CyTISR		(0x8a)
124#define CyMSVR1		(0xde)
125#define CyMSVR2		(0xdf)
126#define      CyDSR		(0x80)
127#define      CyDCD		(0x40)
128#define      CyCTS		(0x20)
129#define      CyDTR		(0x02)
130#define      CyRTS		(0x01)
131#define CyRTPRL		(0x25)
132#define CyRTPRH		(0x24)
133#define CyCOR1		(0x10)
134#define      CyPARITY_NONE	(0x00)
135#define      CyPARITY_E		(0x40)
136#define      CyPARITY_O		(0xC0)
137#define      Cy_5_BITS		(0x04)
138#define      Cy_6_BITS		(0x05)
139#define      Cy_7_BITS		(0x06)
140#define      Cy_8_BITS		(0x07)
141#define CyCOR2		(0x17)
142#define      CyETC		(0x20)
143#define      CyCtsAE		(0x02)
144#define CyCOR3		(0x16)
145#define      Cy_1_STOP		(0x02)
146#define      Cy_2_STOP		(0x04)
147#define CyCOR4		(0x15)
148#define      CyREC_FIFO		(0x0F)  /* Receive FIFO threshold */
149#define CyCOR5		(0x14)
150#define CyCOR6		(0x18)
151#define CyCOR7		(0x07)
152#define CyRBPR		(0xcb)
153#define CyRCOR		(0xc8)
154#define CyTBPR		(0xc3)
155#define CyTCOR		(0xc0)
156#define CySCHR1		(0x1f)
157#define CySCHR2 	(0x1e)
158#define CyTPR		(0xda)
159#define CyPILR1		(0xe3)
160#define CyPILR2		(0xe0)
161#define CyPILR3		(0xe1)
162#define CyCMR		(0x1b)
163#define      CyASYNC		(0x02)
164#define CyLICR          (0x26)
165#define CyLIVR          (0x09)
166#define CySCRL		(0x23)
167#define CySCRH		(0x22)
168#define CyTFTC		(0x80)
169
170
171/* max number of chars in the FIFO */
172
173#define CyMAX_CHAR_FIFO	12
174
175/***************************************************************************/
176