forked from mirrors/linux
		
	
		
			
				
	
	
		
			113 lines
		
	
	
	
		
			3.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			113 lines
		
	
	
	
		
			3.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /* $Id: capilli.h,v 1.1.2.2 2004/01/16 21:09:27 keil Exp $
 | |
|  * 
 | |
|  * Kernel CAPI 2.0 Driver Interface for Linux
 | |
|  * 
 | |
|  * Copyright 1999 by Carsten Paeth <calle@calle.de>
 | |
|  * 
 | |
|  * This software may be used and distributed according to the terms
 | |
|  * of the GNU General Public License, incorporated herein by reference.
 | |
|  *
 | |
|  */
 | |
| 
 | |
| #ifndef __CAPILLI_H__
 | |
| #define __CAPILLI_H__
 | |
| 
 | |
| #include <linux/kernel.h>
 | |
| #include <linux/list.h>
 | |
| #include <linux/capi.h>
 | |
| #include <linux/kernelcapi.h>
 | |
| 
 | |
| typedef struct capiloaddatapart {
 | |
| 	int user;		/* data in userspace ? */
 | |
| 	int len;
 | |
| 	unsigned char *data;
 | |
| } capiloaddatapart;
 | |
| 
 | |
| typedef struct capiloaddata {
 | |
| 	capiloaddatapart firmware;
 | |
| 	capiloaddatapart configuration;
 | |
| } capiloaddata;
 | |
| 
 | |
| typedef struct capicardparams {
 | |
| 	unsigned int port;
 | |
| 	unsigned irq;
 | |
| 	int cardtype;
 | |
| 	int cardnr;
 | |
| 	unsigned int membase;
 | |
| } capicardparams;
 | |
| 
 | |
| struct capi_ctr {
 | |
| 	/* filled in before calling attach_capi_ctr */
 | |
| 	struct module *owner;
 | |
| 	void *driverdata;			/* driver specific */
 | |
| 	char name[32];				/* name of controller */
 | |
| 	char *driver_name;			/* name of driver */
 | |
| 	int (*load_firmware)(struct capi_ctr *, capiloaddata *);
 | |
| 	void (*reset_ctr)(struct capi_ctr *);
 | |
| 	void (*register_appl)(struct capi_ctr *, u16 appl,
 | |
| 			      capi_register_params *);
 | |
| 	void (*release_appl)(struct capi_ctr *, u16 appl);
 | |
| 	u16  (*send_message)(struct capi_ctr *, struct sk_buff *skb);
 | |
| 	
 | |
| 	char *(*procinfo)(struct capi_ctr *);
 | |
| 	int (*proc_show)(struct seq_file *, void *);
 | |
| 
 | |
| 	/* filled in before calling ready callback */
 | |
| 	u8 manu[CAPI_MANUFACTURER_LEN];		/* CAPI_GET_MANUFACTURER */
 | |
| 	capi_version version;			/* CAPI_GET_VERSION */
 | |
| 	capi_profile profile;			/* CAPI_GET_PROFILE */
 | |
| 	u8 serial[CAPI_SERIAL_LEN];		/* CAPI_GET_SERIAL */
 | |
| 
 | |
| 	/* management information for kcapi */
 | |
| 
 | |
| 	unsigned long nrecvctlpkt;
 | |
| 	unsigned long nrecvdatapkt;
 | |
| 	unsigned long nsentctlpkt;
 | |
| 	unsigned long nsentdatapkt;
 | |
| 
 | |
| 	int cnr;				/* controller number */
 | |
| 	unsigned short state;			/* controller state */
 | |
| 	int blocked;				/* output blocked */
 | |
| 	int traceflag;				/* capi trace */
 | |
| 	wait_queue_head_t state_wait_queue;
 | |
| 
 | |
| 	struct proc_dir_entry *procent;
 | |
|         char procfn[128];
 | |
| };
 | |
| 
 | |
| int attach_capi_ctr(struct capi_ctr *);
 | |
| int detach_capi_ctr(struct capi_ctr *);
 | |
| 
 | |
| void capi_ctr_ready(struct capi_ctr * card);
 | |
| void capi_ctr_down(struct capi_ctr * card);
 | |
| void capi_ctr_suspend_output(struct capi_ctr * card);
 | |
| void capi_ctr_resume_output(struct capi_ctr * card);
 | |
| void capi_ctr_handle_message(struct capi_ctr * card, u16 appl, struct sk_buff *skb);
 | |
| 
 | |
| // ---------------------------------------------------------------------------
 | |
| // needed for AVM capi drivers
 | |
| 
 | |
| struct capi_driver {
 | |
| 	char name[32];				/* driver name */
 | |
| 	char revision[32];
 | |
| 
 | |
| 	int (*add_card)(struct capi_driver *driver, capicardparams *data);
 | |
| 
 | |
| 	/* management information for kcapi */
 | |
| 	struct list_head list; 
 | |
| };
 | |
| 
 | |
| void register_capi_driver(struct capi_driver *driver);
 | |
| void unregister_capi_driver(struct capi_driver *driver);
 | |
| 
 | |
| // ---------------------------------------------------------------------------
 | |
| // library functions for use by hardware controller drivers
 | |
| 
 | |
| void capilib_new_ncci(struct list_head *head, u16 applid, u32 ncci, u32 winsize);
 | |
| void capilib_free_ncci(struct list_head *head, u16 applid, u32 ncci);
 | |
| void capilib_release_appl(struct list_head *head, u16 applid);
 | |
| void capilib_release(struct list_head *head);
 | |
| void capilib_data_b3_conf(struct list_head *head, u16 applid, u32 ncci, u16 msgid);
 | |
| u16  capilib_data_b3_req(struct list_head *head, u16 applid, u32 ncci, u16 msgid);
 | |
| 
 | |
| #endif				/* __CAPILLI_H__ */
 | 
