11da177e4SLinus Torvalds /* $Id: capilli.h,v 1.1.2.2 2004/01/16 21:09:27 keil Exp $ 21da177e4SLinus Torvalds * 31da177e4SLinus Torvalds * Kernel CAPI 2.0 Driver Interface for Linux 41da177e4SLinus Torvalds * 51da177e4SLinus Torvalds * Copyright 1999 by Carsten Paeth <calle@calle.de> 61da177e4SLinus Torvalds * 71da177e4SLinus Torvalds * This software may be used and distributed according to the terms 81da177e4SLinus Torvalds * of the GNU General Public License, incorporated herein by reference. 91da177e4SLinus Torvalds * 101da177e4SLinus Torvalds */ 111da177e4SLinus Torvalds 121da177e4SLinus Torvalds #ifndef __CAPILLI_H__ 131da177e4SLinus Torvalds #define __CAPILLI_H__ 141da177e4SLinus Torvalds 151da177e4SLinus Torvalds #include <linux/kernel.h> 161da177e4SLinus Torvalds #include <linux/list.h> 171da177e4SLinus Torvalds #include <linux/capi.h> 181da177e4SLinus Torvalds #include <linux/kernelcapi.h> 191da177e4SLinus Torvalds 201da177e4SLinus Torvalds typedef struct capiloaddatapart { 211da177e4SLinus Torvalds int user; /* data in userspace ? */ 221da177e4SLinus Torvalds int len; 231da177e4SLinus Torvalds unsigned char *data; 241da177e4SLinus Torvalds } capiloaddatapart; 251da177e4SLinus Torvalds 261da177e4SLinus Torvalds typedef struct capiloaddata { 271da177e4SLinus Torvalds capiloaddatapart firmware; 281da177e4SLinus Torvalds capiloaddatapart configuration; 291da177e4SLinus Torvalds } capiloaddata; 301da177e4SLinus Torvalds 311da177e4SLinus Torvalds typedef struct capicardparams { 321da177e4SLinus Torvalds unsigned int port; 331da177e4SLinus Torvalds unsigned irq; 341da177e4SLinus Torvalds int cardtype; 351da177e4SLinus Torvalds int cardnr; 361da177e4SLinus Torvalds unsigned int membase; 371da177e4SLinus Torvalds } capicardparams; 381da177e4SLinus Torvalds 391da177e4SLinus Torvalds struct capi_ctr { 401da177e4SLinus Torvalds /* filled in before calling attach_capi_ctr */ 411da177e4SLinus Torvalds struct module *owner; 421da177e4SLinus Torvalds void *driverdata; /* driver specific */ 431da177e4SLinus Torvalds char name[32]; /* name of controller */ 441da177e4SLinus Torvalds char *driver_name; /* name of driver */ 451da177e4SLinus Torvalds int (*load_firmware)(struct capi_ctr *, capiloaddata *); 461da177e4SLinus Torvalds void (*reset_ctr)(struct capi_ctr *); 471da177e4SLinus Torvalds void (*register_appl)(struct capi_ctr *, u16 appl, 481da177e4SLinus Torvalds capi_register_params *); 491da177e4SLinus Torvalds void (*release_appl)(struct capi_ctr *, u16 appl); 501da177e4SLinus Torvalds u16 (*send_message)(struct capi_ctr *, struct sk_buff *skb); 511da177e4SLinus Torvalds 521da177e4SLinus Torvalds char *(*procinfo)(struct capi_ctr *); 53*2cd1f0ddSChristoph Hellwig int (*proc_show)(struct seq_file *, void *); 541da177e4SLinus Torvalds 551da177e4SLinus Torvalds /* filled in before calling ready callback */ 561da177e4SLinus Torvalds u8 manu[CAPI_MANUFACTURER_LEN]; /* CAPI_GET_MANUFACTURER */ 571da177e4SLinus Torvalds capi_version version; /* CAPI_GET_VERSION */ 581da177e4SLinus Torvalds capi_profile profile; /* CAPI_GET_PROFILE */ 591da177e4SLinus Torvalds u8 serial[CAPI_SERIAL_LEN]; /* CAPI_GET_SERIAL */ 601da177e4SLinus Torvalds 611da177e4SLinus Torvalds /* management information for kcapi */ 621da177e4SLinus Torvalds 631da177e4SLinus Torvalds unsigned long nrecvctlpkt; 641da177e4SLinus Torvalds unsigned long nrecvdatapkt; 651da177e4SLinus Torvalds unsigned long nsentctlpkt; 661da177e4SLinus Torvalds unsigned long nsentdatapkt; 671da177e4SLinus Torvalds 681da177e4SLinus Torvalds int cnr; /* controller number */ 690ca3a017SJan Kiszka unsigned short state; /* controller state */ 700ca3a017SJan Kiszka int blocked; /* output blocked */ 711da177e4SLinus Torvalds int traceflag; /* capi trace */ 721da177e4SLinus Torvalds 731da177e4SLinus Torvalds struct proc_dir_entry *procent; 741da177e4SLinus Torvalds char procfn[128]; 751da177e4SLinus Torvalds }; 761da177e4SLinus Torvalds 771da177e4SLinus Torvalds int attach_capi_ctr(struct capi_ctr *); 781da177e4SLinus Torvalds int detach_capi_ctr(struct capi_ctr *); 791da177e4SLinus Torvalds 801da177e4SLinus Torvalds void capi_ctr_ready(struct capi_ctr * card); 814e329972STilman Schmidt void capi_ctr_down(struct capi_ctr * card); 821da177e4SLinus Torvalds void capi_ctr_handle_message(struct capi_ctr * card, u16 appl, struct sk_buff *skb); 831da177e4SLinus Torvalds 841da177e4SLinus Torvalds // --------------------------------------------------------------------------- 851da177e4SLinus Torvalds // needed for AVM capi drivers 861da177e4SLinus Torvalds 871da177e4SLinus Torvalds struct capi_driver { 881da177e4SLinus Torvalds char name[32]; /* driver name */ 891da177e4SLinus Torvalds char revision[32]; 901da177e4SLinus Torvalds 911da177e4SLinus Torvalds /* management information for kcapi */ 921da177e4SLinus Torvalds struct list_head list; 931da177e4SLinus Torvalds }; 941da177e4SLinus Torvalds 951da177e4SLinus Torvalds #endif /* __CAPILLI_H__ */ 96