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)
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
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
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
51 * Revision 1.1 1997/01/31 10:32:20 calle
59 * struct for loading t4 file
61 typedef struct avmb1_t4file
{
66 typedef struct avmb1_loaddef
{
71 typedef struct avmb1_loadandconfigdef
{
74 avmb1_t4file t4config
;
75 } avmb1_loadandconfigdef
;
77 typedef struct avmb1_resetdef
{
81 typedef struct avmb1_getdef
{
88 * struct for adding new cards
90 typedef struct 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
{
105 int cardnr
; /* for HEMA/T1 */
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
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
131 #define AVMB1_PORTLEN 0x1f
133 #define AVM_MAXVERSION 8
136 #define AVM_NNCCI_PER_CHANNEL 4
142 typedef struct avmb1_card
{
143 struct avmb1_card
*next
;
148 int cardnr
; /* for T1-HEMA */
149 volatile unsigned short cardstate
;
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
;
166 #define VER_CARDTYPE 1
171 #define VER_PROFILE 6
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
);
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_ */