1*4882a593Smuzhiyun /* $Id: capilli.h,v 1.1.2.2 2004/01/16 21:09:27 keil Exp $ 2*4882a593Smuzhiyun * 3*4882a593Smuzhiyun * Kernel CAPI 2.0 Driver Interface for Linux 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * Copyright 1999 by Carsten Paeth <calle@calle.de> 6*4882a593Smuzhiyun * 7*4882a593Smuzhiyun * This software may be used and distributed according to the terms 8*4882a593Smuzhiyun * of the GNU General Public License, incorporated herein by reference. 9*4882a593Smuzhiyun * 10*4882a593Smuzhiyun */ 11*4882a593Smuzhiyun 12*4882a593Smuzhiyun #ifndef __CAPILLI_H__ 13*4882a593Smuzhiyun #define __CAPILLI_H__ 14*4882a593Smuzhiyun 15*4882a593Smuzhiyun #include <linux/kernel.h> 16*4882a593Smuzhiyun #include <linux/list.h> 17*4882a593Smuzhiyun #include <linux/capi.h> 18*4882a593Smuzhiyun #include <linux/kernelcapi.h> 19*4882a593Smuzhiyun 20*4882a593Smuzhiyun typedef struct capiloaddatapart { 21*4882a593Smuzhiyun int user; /* data in userspace ? */ 22*4882a593Smuzhiyun int len; 23*4882a593Smuzhiyun unsigned char *data; 24*4882a593Smuzhiyun } capiloaddatapart; 25*4882a593Smuzhiyun 26*4882a593Smuzhiyun typedef struct capiloaddata { 27*4882a593Smuzhiyun capiloaddatapart firmware; 28*4882a593Smuzhiyun capiloaddatapart configuration; 29*4882a593Smuzhiyun } capiloaddata; 30*4882a593Smuzhiyun 31*4882a593Smuzhiyun typedef struct capicardparams { 32*4882a593Smuzhiyun unsigned int port; 33*4882a593Smuzhiyun unsigned irq; 34*4882a593Smuzhiyun int cardtype; 35*4882a593Smuzhiyun int cardnr; 36*4882a593Smuzhiyun unsigned int membase; 37*4882a593Smuzhiyun } capicardparams; 38*4882a593Smuzhiyun 39*4882a593Smuzhiyun struct capi_ctr { 40*4882a593Smuzhiyun /* filled in before calling attach_capi_ctr */ 41*4882a593Smuzhiyun struct module *owner; 42*4882a593Smuzhiyun void *driverdata; /* driver specific */ 43*4882a593Smuzhiyun char name[32]; /* name of controller */ 44*4882a593Smuzhiyun char *driver_name; /* name of driver */ 45*4882a593Smuzhiyun int (*load_firmware)(struct capi_ctr *, capiloaddata *); 46*4882a593Smuzhiyun void (*reset_ctr)(struct capi_ctr *); 47*4882a593Smuzhiyun void (*register_appl)(struct capi_ctr *, u16 appl, 48*4882a593Smuzhiyun capi_register_params *); 49*4882a593Smuzhiyun void (*release_appl)(struct capi_ctr *, u16 appl); 50*4882a593Smuzhiyun u16 (*send_message)(struct capi_ctr *, struct sk_buff *skb); 51*4882a593Smuzhiyun 52*4882a593Smuzhiyun char *(*procinfo)(struct capi_ctr *); 53*4882a593Smuzhiyun int (*proc_show)(struct seq_file *, void *); 54*4882a593Smuzhiyun 55*4882a593Smuzhiyun /* filled in before calling ready callback */ 56*4882a593Smuzhiyun u8 manu[CAPI_MANUFACTURER_LEN]; /* CAPI_GET_MANUFACTURER */ 57*4882a593Smuzhiyun capi_version version; /* CAPI_GET_VERSION */ 58*4882a593Smuzhiyun capi_profile profile; /* CAPI_GET_PROFILE */ 59*4882a593Smuzhiyun u8 serial[CAPI_SERIAL_LEN]; /* CAPI_GET_SERIAL */ 60*4882a593Smuzhiyun 61*4882a593Smuzhiyun /* management information for kcapi */ 62*4882a593Smuzhiyun 63*4882a593Smuzhiyun unsigned long nrecvctlpkt; 64*4882a593Smuzhiyun unsigned long nrecvdatapkt; 65*4882a593Smuzhiyun unsigned long nsentctlpkt; 66*4882a593Smuzhiyun unsigned long nsentdatapkt; 67*4882a593Smuzhiyun 68*4882a593Smuzhiyun int cnr; /* controller number */ 69*4882a593Smuzhiyun unsigned short state; /* controller state */ 70*4882a593Smuzhiyun int blocked; /* output blocked */ 71*4882a593Smuzhiyun int traceflag; /* capi trace */ 72*4882a593Smuzhiyun 73*4882a593Smuzhiyun struct proc_dir_entry *procent; 74*4882a593Smuzhiyun char procfn[128]; 75*4882a593Smuzhiyun }; 76*4882a593Smuzhiyun 77*4882a593Smuzhiyun int attach_capi_ctr(struct capi_ctr *); 78*4882a593Smuzhiyun int detach_capi_ctr(struct capi_ctr *); 79*4882a593Smuzhiyun 80*4882a593Smuzhiyun void capi_ctr_ready(struct capi_ctr * card); 81*4882a593Smuzhiyun void capi_ctr_down(struct capi_ctr * card); 82*4882a593Smuzhiyun void capi_ctr_handle_message(struct capi_ctr * card, u16 appl, struct sk_buff *skb); 83*4882a593Smuzhiyun 84*4882a593Smuzhiyun // --------------------------------------------------------------------------- 85*4882a593Smuzhiyun // needed for AVM capi drivers 86*4882a593Smuzhiyun 87*4882a593Smuzhiyun struct capi_driver { 88*4882a593Smuzhiyun char name[32]; /* driver name */ 89*4882a593Smuzhiyun char revision[32]; 90*4882a593Smuzhiyun 91*4882a593Smuzhiyun /* management information for kcapi */ 92*4882a593Smuzhiyun struct list_head list; 93*4882a593Smuzhiyun }; 94*4882a593Smuzhiyun 95*4882a593Smuzhiyun #endif /* __CAPILLI_H__ */ 96