Import 2.3.7pre7
[davej-history.git] / include / linux / b1lli.h
blob71ad74f6ec275387fbc75b1f670e407f9476de43
1 /*
2 * $Id: b1lli.h,v 1.6 1999/04/15 19:49:36 calle Exp $
4 * ISDN lowlevel-module for AVM B1-card.
6 * Copyright 1996 by Carsten Paeth (calle@calle.in-berlin.de)
8 * $Log: b1lli.h,v $
9 * Revision 1.6 1999/04/15 19:49:36 calle
10 * fix fuer die B1-PCI. Jetzt geht z.B. auch IRQ 17 ...
12 * Revision 1.5 1998/10/25 14:50:28 fritz
13 * Backported from MIPS (Cobalt).
15 * Revision 1.4 1998/03/29 16:05:02 calle
16 * changes from 2.0 tree merged.
18 * Revision 1.1.2.9 1998/03/20 14:30:02 calle
19 * added cardnr to detect if you try to add same T1 to different io address.
20 * change number of nccis depending on number of channels.
22 * Revision 1.1.2.8 1998/03/04 17:32:33 calle
23 * Changes for T1.
25 * Revision 1.1.2.7 1998/02/27 15:38:29 calle
26 * T1 running with slow link.
28 * Revision 1.1.2.6 1998/02/24 17:57:36 calle
29 * changes for T1.
31 * Revision 1.3 1998/01/31 10:54:37 calle
32 * include changes for PCMCIA cards from 2.0 version
34 * Revision 1.2 1997/12/10 19:38:42 calle
35 * get changes from 2.0 tree
37 * Revision 1.1.2.2 1997/11/26 16:57:26 calle
38 * more changes for B1/M1/T1.
40 * Revision 1.1.2.1 1997/11/26 10:47:01 calle
41 * prepared for M1 (Mobile) and T1 (PMX) cards.
42 * prepared to set configuration after load to support other D-channel
43 * protocols, point-to-point and leased lines.
45 * Revision 1.1 1997/03/04 21:27:32 calle
46 * First version in isdn4linux
48 * Revision 2.2 1997/02/12 09:31:39 calle
49 * new version
51 * Revision 1.1 1997/01/31 10:32:20 calle
52 * Initial revision
56 #ifndef _B1LLI_H_
57 #define _B1LLI_H_
59 * struct for loading t4 file
61 typedef struct avmb1_t4file {
62 int len;
63 unsigned char *data;
64 } avmb1_t4file;
66 typedef struct avmb1_loaddef {
67 int contr;
68 avmb1_t4file t4file;
69 } avmb1_loaddef;
71 typedef struct avmb1_loadandconfigdef {
72 int contr;
73 avmb1_t4file t4file;
74 avmb1_t4file t4config;
75 } avmb1_loadandconfigdef;
77 typedef struct avmb1_resetdef {
78 int contr;
79 } avmb1_resetdef;
81 typedef struct avmb1_getdef {
82 int contr;
83 int cardtype;
84 int cardstate;
85 } avmb1_getdef;
88 * struct for adding new cards
90 typedef struct avmb1_carddef {
91 int port;
92 int irq;
93 } avmb1_carddef;
95 #define AVM_CARDTYPE_B1 0
96 #define AVM_CARDTYPE_T1 1
97 #define AVM_CARDTYPE_M1 2
98 #define AVM_CARDTYPE_M2 3
99 #define AVM_CARDTYPE_B1PCI 4
101 typedef struct avmb1_extcarddef {
102 int port;
103 int irq;
104 int cardtype;
105 int cardnr; /* for HEMA/T1 */
106 } avmb1_extcarddef;
108 #define AVMB1_LOAD 0 /* load image to card */
109 #define AVMB1_ADDCARD 1 /* add a new card */
110 #define AVMB1_RESETCARD 2 /* reset a card */
111 #define AVMB1_LOAD_AND_CONFIG 3 /* load image and config to card */
112 #define AVMB1_ADDCARD_WITH_TYPE 4 /* add a new card, with cardtype */
113 #define AVMB1_GET_CARDINFO 5 /* get cardtype */
114 #define AVMB1_REMOVECARD 6 /* remove a card (usefull for T1) */
119 * card states for startup
122 #define CARD_FREE 0
123 #define CARD_DETECTED 1
124 #define CARD_LOADING 2
125 #define CARD_INITSTATE 4
126 #define CARD_RUNNING 5
127 #define CARD_ACTIVE 6
129 #ifdef __KERNEL__
131 #define AVMB1_PORTLEN 0x1f
133 #define AVM_MAXVERSION 8
135 #define AVM_NAPPS 30
136 #define AVM_NNCCI_PER_CHANNEL 4
139 * Main driver data
142 typedef struct avmb1_card {
143 struct avmb1_card *next;
144 int cnr;
145 unsigned int port;
146 unsigned irq;
147 int cardtype;
148 int cardnr; /* for T1-HEMA */
149 volatile unsigned short cardstate;
150 int interrupt;
151 int blocked;
152 int versionlen;
153 char versionbuf[1024];
154 char *version[AVM_MAXVERSION];
155 char msgbuf[128]; /* capimsg msg part */
156 char databuf[2048]; /* capimsg data part */
157 capi_version cversion;
158 char name[10];
159 } avmb1_card;
162 * Versions
165 #define VER_DRIVER 0
166 #define VER_CARDTYPE 1
167 #define VER_HWID 2
168 #define VER_SERIAL 3
169 #define VER_OPTION 4
170 #define VER_PROTO 5
171 #define VER_PROFILE 6
172 #define VER_CAPI 7
175 /* b1lli.c */
176 int B1_detect(unsigned int base, int cardtype);
177 int T1_detectandinit(unsigned int base, unsigned irq, int cardnr);
178 void B1_reset(unsigned int base);
179 void T1_reset(unsigned int base);
180 int B1_load_t4file(unsigned int base, avmb1_t4file * t4file);
181 int B1_load_config(unsigned int base, avmb1_t4file * config);
182 int B1_loaded(unsigned int base);
183 void B1_setinterrupt(unsigned int base, unsigned irq, int cardtype);
184 unsigned char B1_disable_irq(unsigned int base);
185 void T1_disable_irq(unsigned int base);
186 int B1_valid_irq(unsigned irq, int cardtype);
187 int B1_valid_port(unsigned port, int cardtype);
188 void B1_handle_interrupt(avmb1_card * card);
189 void B1_send_init(unsigned int port,
190 unsigned int napps, unsigned int nncci, unsigned int cardnr);
191 void B1_send_register(unsigned int port,
192 __u16 appid, __u32 nmsg,
193 __u32 nb3conn, __u32 nb3blocks, __u32 b3bsize);
194 void B1_send_release(unsigned int port, __u16 appid);
195 void B1_send_message(unsigned int port, struct sk_buff *skb);
197 /* b1capi.c */
198 void avmb1_handle_new_ncci(avmb1_card * card,
199 __u16 appl, __u32 ncci, __u32 winsize);
200 void avmb1_handle_free_ncci(avmb1_card * card,
201 __u16 appl, __u32 ncci);
202 void avmb1_handle_capimsg(avmb1_card * card, __u16 appl, struct sk_buff *skb);
203 void avmb1_card_ready(avmb1_card * card);
205 /* standard calls, with check and allocation of resources */
206 int avmb1_addcard(int port, int irq, int cardtype);
207 int avmb1_probecard(int port, int irq, int cardtype);
210 int avmb1_resetcard(int cardnr);
212 /* calls for pcmcia driver */
213 int avmb1_detectcard(int port, int irq, int cardtype);
214 int avmb1_registercard(int port, int irq, int cardtype, int allocio);
215 int avmb1_unregistercard(int cnr, int freeio);
217 #endif /* __KERNEL__ */
219 #endif /* _B1LLI_H_ */