File: /usr/include/linux/istallion.h

1     /*****************************************************************************/
2     
3     /*
4      *	istallion.h  -- stallion intelligent multiport serial driver.
5      *
6      *	Copyright (C) 1996-1998  Stallion Technologies (support@stallion.oz.au).
7      *	Copyright (C) 1994-1996  Greg Ungerer.
8      *
9      *	This program is free software; you can redistribute it and/or modify
10      *	it under the terms of the GNU General Public License as published by
11      *	the Free Software Foundation; either version 2 of the License, or
12      *	(at your option) any later version.
13      *
14      *	This program is distributed in the hope that it will be useful,
15      *	but WITHOUT ANY WARRANTY; without even the implied warranty of
16      *	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17      *	GNU General Public License for more details.
18      *
19      *	You should have received a copy of the GNU General Public License
20      *	along with this program; if not, write to the Free Software
21      *	Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
22      */
23     
24     /*****************************************************************************/
25     #ifndef	_ISTALLION_H
26     #define	_ISTALLION_H
27     /*****************************************************************************/
28     
29     /*
30      *	Define important driver constants here.
31      */
32     #define	STL_MAXBRDS		4
33     #define	STL_MAXPANELS		4
34     #define	STL_MAXPORTS		64
35     #define	STL_MAXCHANS		(STL_MAXPORTS + 1)
36     #define	STL_MAXDEVS		(STL_MAXBRDS * STL_MAXPORTS)
37     
38     
39     /*
40      *	Define a set of structures to hold all the board/panel/port info
41      *	for our ports. These will be dynamically allocated as required at
42      *	driver initialization time.
43      */
44     
45     /*
46      *	Port and board structures to hold status info about each object.
47      *	The board structure contains pointers to structures for each port
48      *	connected to it. Panels are not distinguished here, since
49      *	communication with the slave board will always be on a per port
50      *	basis.
51      */
52     typedef struct {
53     	unsigned long		magic;
54     	int			portnr;
55     	int			panelnr;
56     	int			brdnr;
57     	unsigned long		state;
58     	int			devnr;
59     	int			flags;
60     	int			baud_base;
61     	int			custom_divisor;
62     	int			close_delay;
63     	int			closing_wait;
64     	int			refcount;
65     	int			openwaitcnt;
66     	int			rc;
67     	int			argsize;
68     	void			*argp;
69     	long			session;
70     	long			pgrp;
71     	unsigned int		rxmarkmsk;
72     	struct tty_struct	*tty;
73     #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,3,0))
74     	struct wait_queue	*open_wait;
75     	struct wait_queue	*close_wait;
76     	struct wait_queue	*raw_wait;
77     #else
78     	wait_queue_head_t	open_wait;
79     	wait_queue_head_t	close_wait;
80     	wait_queue_head_t	raw_wait;
81     #endif
82     	struct tq_struct	tqhangup;
83     	struct termios		normaltermios;
84     	struct termios		callouttermios;
85     	asysigs_t		asig;
86     	unsigned long		addr;
87     	unsigned long		rxoffset;
88     	unsigned long		txoffset;
89     	unsigned long		sigs;
90     	unsigned long		pflag;
91     	unsigned int		rxsize;
92     	unsigned int		txsize;
93     	unsigned char		reqbit;
94     	unsigned char		portidx;
95     	unsigned char		portbit;
96     } stliport_t;
97     
98     /*
99      *	Use a structure of function pointers to do board level operations.
100      *	These include, enable/disable, paging shared memory, interrupting, etc.
101      */
102     typedef struct stlibrd {
103     	unsigned long	magic;
104     	int		brdnr;
105     	int		brdtype;
106     	int		state;
107     	int		nrpanels;
108     	int		nrports;
109     	int		nrdevs;
110     	unsigned int	iobase;
111     	int		iosize;
112     	unsigned long	memaddr;
113     	void		*membase;
114     	int		memsize;
115     	int		pagesize;
116     	int		hostoffset;
117     	int		slaveoffset;
118     	int		bitsize;
119     	int		enabval;
120     	int		panels[STL_MAXPANELS];
121     	int		panelids[STL_MAXPANELS];
122     	void		(*init)(struct stlibrd *brdp);
123     	void		(*enable)(struct stlibrd *brdp);
124     	void		(*reenable)(struct stlibrd *brdp);
125     	void		(*disable)(struct stlibrd *brdp);
126     	char		*(*getmemptr)(struct stlibrd *brdp, unsigned long offset, int line);
127     	void		(*intr)(struct stlibrd *brdp);
128     	void		(*reset)(struct stlibrd *brdp);
129     	stliport_t	*ports[STL_MAXPORTS];
130     } stlibrd_t;
131     
132     
133     /*
134      *	Define MAGIC numbers used for above structures.
135      */
136     #define	STLI_PORTMAGIC	0xe671c7a1
137     #define	STLI_BOARDMAGIC	0x4bc6c825
138     
139     /*****************************************************************************/
140     #endif
141