/* * $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_ */