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