xref: /linux/include/linux/isdn/capilli.h (revision f59aba2f)
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