| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 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 *); | 
| Alexey Dobriyan | 9a58a80 | 2010-01-14 03:10:54 -0800 | [diff] [blame] | 53 | const struct file_operations *proc_fops; | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 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 */ | 
| Jan Kiszka | 0ca3a01 | 2010-02-08 10:12:14 +0000 | [diff] [blame] | 69 | unsigned short state;			/* controller state */ | 
|  | 70 | int blocked;				/* output blocked */ | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 71 | int traceflag;				/* capi trace */ | 
| Jan Kiszka | 0ca3a01 | 2010-02-08 10:12:14 +0000 | [diff] [blame] | 72 | wait_queue_head_t state_wait_queue; | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 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); | 
| Tilman Schmidt | 4e32997 | 2009-06-07 09:09:23 +0000 | [diff] [blame] | 82 | void capi_ctr_down(struct capi_ctr * card); | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 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__ */ |