1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192
|
/*
* $Id: b1lli.h,v 1.3 1998/01/31 10:54:37 calle Exp $
*
* ISDN lowlevel-module for AVM B1-card.
*
* Copyright 1996 by Carsten Paeth (calle@calle.in-berlin.de)
*
* $Log: b1lli.h,v $
* Revision 1.3 1998/01/31 10:54:37 calle
* include changes for PCMCIA cards from 2.0 version
*
* Revision 1.2 1997/12/10 19:38:42 calle
* get changes from 2.0 tree
*
* Revision 1.1.2.2 1997/11/26 16:57:26 calle
* more changes for B1/M1/T1.
*
* Revision 1.1.2.1 1997/11/26 10:47:01 calle
* prepared for M1 (Mobile) and T1 (PMX) cards.
* prepared to set configuration after load to support other D-channel
* protocols, point-to-point and leased lines.
*
* Revision 1.1 1997/03/04 21:27:32 calle
* First version in isdn4linux
*
* Revision 2.2 1997/02/12 09:31:39 calle
* new version
*
* Revision 1.1 1997/01/31 10:32:20 calle
* Initial revision
*
*/
#ifndef _B1LLI_H_
#define _B1LLI_H_
/*
* struct for loading t4 file
*/
typedef struct avmb1_t4file {
int len;
unsigned char *data;
} avmb1_t4file;
typedef struct avmb1_loaddef {
int contr;
avmb1_t4file t4file;
} avmb1_loaddef;
typedef struct avmb1_loadandconfigdef {
int contr;
avmb1_t4file t4file;
avmb1_t4file t4config;
} avmb1_loadandconfigdef;
typedef struct avmb1_resetdef {
int contr;
} avmb1_resetdef;
typedef struct avmb1_getdef {
int contr;
int cardtype;
int cardstate;
} avmb1_getdef;
/*
* struct for adding new cards
*/
typedef struct avmb1_carddef {
int port;
int irq;
} avmb1_carddef;
#define AVM_CARDTYPE_B1 0
#define AVM_CARDTYPE_T1 1
#define AVM_CARDTYPE_M1 2
#define AVM_CARDTYPE_M2 3
typedef struct avmb1_extcarddef {
int port;
int irq;
int cardtype;
} avmb1_extcarddef;
#define AVMB1_LOAD 0 /* load image to card */
#define AVMB1_ADDCARD 1 /* add a new card */
#define AVMB1_RESETCARD 2 /* reset a card */
#define AVMB1_LOAD_AND_CONFIG 3 /* load image and config to card */
#define AVMB1_ADDCARD_WITH_TYPE 4 /* add a new card, with cardtype */
#define AVMB1_GET_CARDINFO 5 /* get cardtype */
/*
* card states for startup
*/
#define CARD_FREE 0
#define CARD_DETECTED 1
#define CARD_LOADING 2
#define CARD_INITSTATE 4
#define CARD_RUNNING 5
#define CARD_ACTIVE 6
#ifdef __KERNEL__
#define AVMB1_PORTLEN 0x1f
#define AVM_MAXVERSION 8
#define AVM_NBCHAN 2
#define AVM_NAPPS 30
#define AVM_NPLCI 5
#define AVM_NNCCI 6
/*
* Main driver data
*/
typedef struct avmb1_card {
struct avmb1_card *next;
int cnr;
unsigned short port;
unsigned irq;
int cardtype;
volatile unsigned short cardstate;
int interrupt;
int blocked;
int versionlen;
char versionbuf[1024];
char *version[AVM_MAXVERSION];
char msgbuf[128]; /* capimsg msg part */
char databuf[2048]; /* capimsg data part */
capi_version cversion;
char name[10];
} avmb1_card;
/*
* Versions
*/
#define VER_DRIVER 0
#define VER_CARDTYPE 1
#define VER_HWID 2
#define VER_SERIAL 3
#define VER_OPTION 4
#define VER_PROTO 5
#define VER_PROFILE 6
#define VER_CAPI 7
/* b1lli.c */
int B1_detect(unsigned short base, int cardtype);
void B1_reset(unsigned short base);
int B1_load_t4file(unsigned short base, avmb1_t4file * t4file);
int B1_load_config(unsigned short base, avmb1_t4file * config);
int B1_loaded(unsigned short base);
unsigned char B1_assign_irq(unsigned short base, unsigned irq, int cardtype);
unsigned char B1_enable_irq(unsigned short base);
unsigned char B1_disable_irq(unsigned short base);
int B1_valid_irq(unsigned irq, int cardtype);
void B1_handle_interrupt(avmb1_card * card);
void B1_send_init(unsigned short port,
unsigned int napps, unsigned int nncci, unsigned int cardnr);
void B1_send_register(unsigned short port,
__u16 appid, __u32 nmsg,
__u32 nb3conn, __u32 nb3blocks, __u32 b3bsize);
void B1_send_release(unsigned short port, __u16 appid);
void B1_send_message(unsigned short port, struct sk_buff *skb);
/* b1capi.c */
void avmb1_handle_new_ncci(avmb1_card * card,
__u16 appl, __u32 ncci, __u32 winsize);
void avmb1_handle_free_ncci(avmb1_card * card,
__u16 appl, __u32 ncci);
void avmb1_handle_capimsg(avmb1_card * card, __u16 appl, struct sk_buff *skb);
void avmb1_card_ready(avmb1_card * card);
/* standard calls, with check and allocation of resources */
int avmb1_addcard(int port, int irq, int cardtype);
int avmb1_probecard(int port, int irq, int cardtype);
int avmb1_resetcard(int cardnr);
/* calls for pcmcia driver */
int avmb1_detectcard(int port, int irq, int cardtype);
int avmb1_registercard(int port, int irq, int cardtype, int allocio);
int avmb1_unregistercard(int cnr, int freeio);
#endif /* __KERNEL__ */
#endif /* _B1LLI_H_ */
|