OpenCores
URL https://opencores.org/ocsvn/test_project/test_project/trunk

Subversion Repositories test_project

[/] [test_project/] [trunk/] [linux_sd_driver/] [include/] [linux/] [stallion.h] - Blame information for rev 81

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 62 marcus.erl
/*****************************************************************************/
2
 
3
/*
4
 *      stallion.h  -- stallion multiport serial driver.
5
 *
6
 *      Copyright (C) 1996-1998  Stallion Technologies
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 _STALLION_H
26
#define _STALLION_H
27
/*****************************************************************************/
28
 
29
/*
30
 *      Define important driver constants here.
31
 */
32
#define STL_MAXBRDS             4
33
#define STL_MAXPANELS           4
34
#define STL_MAXBANKS            8
35
#define STL_PORTSPERPANEL       16
36
#define STL_MAXPORTS            64
37
#define STL_MAXDEVS             (STL_MAXBRDS * STL_MAXPORTS)
38
 
39
 
40
/*
41
 *      Define a set of structures to hold all the board/panel/port info
42
 *      for our ports. These will be dynamically allocated as required.
43
 */
44
 
45
/*
46
 *      Define a ring queue structure for each port. This will hold the
47
 *      TX data waiting to be output. Characters are fed into this buffer
48
 *      from the line discipline (or even direct from user space!) and
49
 *      then fed into the UARTs during interrupts. Will use a classic ring
50
 *      queue here for this. The good thing about this type of ring queue
51
 *      is that the head and tail pointers can be updated without interrupt
52
 *      protection - since "write" code only needs to change the head, and
53
 *      interrupt code only needs to change the tail.
54
 */
55
struct stlrq {
56
        char    *buf;
57
        char    *head;
58
        char    *tail;
59
};
60
 
61
/*
62
 *      Port, panel and board structures to hold status info about each.
63
 *      The board structure contains pointers to structures for each panel
64
 *      connected to it, and in turn each panel structure contains pointers
65
 *      for each port structure for each port on that panel. Note that
66
 *      the port structure also contains the board and panel number that it
67
 *      is associated with, this makes it (fairly) easy to get back to the
68
 *      board/panel info for a port.
69
 */
70
struct stlport {
71
        unsigned long           magic;
72
        unsigned int            portnr;
73
        unsigned int            panelnr;
74
        unsigned int            brdnr;
75
        int                     ioaddr;
76
        int                     uartaddr;
77
        unsigned int            pagenr;
78
        unsigned long           istate;
79
        int                     flags;
80
        int                     baud_base;
81
        int                     custom_divisor;
82
        int                     close_delay;
83
        int                     closing_wait;
84
        int                     refcount;
85
        int                     openwaitcnt;
86
        int                     brklen;
87
        unsigned int            sigs;
88
        unsigned int            rxignoremsk;
89
        unsigned int            rxmarkmsk;
90
        unsigned int            imr;
91
        unsigned int            crenable;
92
        unsigned long           clk;
93
        unsigned long           hwid;
94
        void                    *uartp;
95
        struct tty_struct       *tty;
96
        wait_queue_head_t       open_wait;
97
        wait_queue_head_t       close_wait;
98
        struct work_struct      tqueue;
99
        comstats_t              stats;
100
        struct stlrq            tx;
101
};
102
 
103
struct stlpanel {
104
        unsigned long   magic;
105
        unsigned int    panelnr;
106
        unsigned int    brdnr;
107
        unsigned int    pagenr;
108
        unsigned int    nrports;
109
        int             iobase;
110
        void            *uartp;
111
        void            (*isr)(struct stlpanel *panelp, unsigned int iobase);
112
        unsigned int    hwid;
113
        unsigned int    ackmask;
114
        struct stlport  *ports[STL_PORTSPERPANEL];
115
};
116
 
117
struct stlbrd {
118
        unsigned long   magic;
119
        unsigned int    brdnr;
120
        unsigned int    brdtype;
121
        unsigned int    state;
122
        unsigned int    nrpanels;
123
        unsigned int    nrports;
124
        unsigned int    nrbnks;
125
        int             irq;
126
        int             irqtype;
127
        int             (*isr)(struct stlbrd *brdp);
128
        unsigned int    ioaddr1;
129
        unsigned int    ioaddr2;
130
        unsigned int    iosize1;
131
        unsigned int    iosize2;
132
        unsigned int    iostatus;
133
        unsigned int    ioctrl;
134
        unsigned int    ioctrlval;
135
        unsigned int    hwid;
136
        unsigned long   clk;
137
        unsigned int    bnkpageaddr[STL_MAXBANKS];
138
        unsigned int    bnkstataddr[STL_MAXBANKS];
139
        struct stlpanel *bnk2panel[STL_MAXBANKS];
140
        struct stlpanel *panels[STL_MAXPANELS];
141
};
142
 
143
 
144
/*
145
 *      Define MAGIC numbers used for above structures.
146
 */
147
#define STL_PORTMAGIC   0x5a7182c9
148
#define STL_PANELMAGIC  0x7ef621a1
149
#define STL_BOARDMAGIC  0xa2267f52
150
 
151
/*****************************************************************************/
152
#endif

powered by: WebSVN 2.1.0

© copyright 1999-2025 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.