1*53ee8cc1Swenshuai.xi /* $Id: capi.h,v 1.4.6.1 2001/09/23 22:25:05 kai Exp $ 2*53ee8cc1Swenshuai.xi * 3*53ee8cc1Swenshuai.xi * CAPI 2.0 Interface for Linux 4*53ee8cc1Swenshuai.xi * 5*53ee8cc1Swenshuai.xi * Copyright 1997 by Carsten Paeth (calle@calle.in-berlin.de) 6*53ee8cc1Swenshuai.xi * 7*53ee8cc1Swenshuai.xi * This software may be used and distributed according to the terms 8*53ee8cc1Swenshuai.xi * of the GNU General Public License, incorporated herein by reference. 9*53ee8cc1Swenshuai.xi * 10*53ee8cc1Swenshuai.xi */ 11*53ee8cc1Swenshuai.xi 12*53ee8cc1Swenshuai.xi #ifndef __LINUX_CAPI_H__ 13*53ee8cc1Swenshuai.xi #define __LINUX_CAPI_H__ 14*53ee8cc1Swenshuai.xi 15*53ee8cc1Swenshuai.xi #include <asm/types.h> 16*53ee8cc1Swenshuai.xi #include <linux/ioctl.h> 17*53ee8cc1Swenshuai.xi #include <linux/kernelcapi.h> 18*53ee8cc1Swenshuai.xi 19*53ee8cc1Swenshuai.xi /* 20*53ee8cc1Swenshuai.xi * CAPI_REGISTER 21*53ee8cc1Swenshuai.xi */ 22*53ee8cc1Swenshuai.xi 23*53ee8cc1Swenshuai.xi typedef struct capi_register_params { /* CAPI_REGISTER */ 24*53ee8cc1Swenshuai.xi __u32 level3cnt; /* No. of simulatneous user data connections */ 25*53ee8cc1Swenshuai.xi __u32 datablkcnt; /* No. of buffered data messages */ 26*53ee8cc1Swenshuai.xi __u32 datablklen; /* Size of buffered data messages */ 27*53ee8cc1Swenshuai.xi } capi_register_params; 28*53ee8cc1Swenshuai.xi 29*53ee8cc1Swenshuai.xi #define CAPI_REGISTER _IOW('C',0x01,struct capi_register_params) 30*53ee8cc1Swenshuai.xi 31*53ee8cc1Swenshuai.xi /* 32*53ee8cc1Swenshuai.xi * CAPI_GET_MANUFACTURER 33*53ee8cc1Swenshuai.xi */ 34*53ee8cc1Swenshuai.xi 35*53ee8cc1Swenshuai.xi #define CAPI_MANUFACTURER_LEN 64 36*53ee8cc1Swenshuai.xi 37*53ee8cc1Swenshuai.xi #define CAPI_GET_MANUFACTURER _IOWR('C',0x06,int) /* broken: wanted size 64 (CAPI_MANUFACTURER_LEN) */ 38*53ee8cc1Swenshuai.xi 39*53ee8cc1Swenshuai.xi /* 40*53ee8cc1Swenshuai.xi * CAPI_GET_VERSION 41*53ee8cc1Swenshuai.xi */ 42*53ee8cc1Swenshuai.xi 43*53ee8cc1Swenshuai.xi typedef struct capi_version { 44*53ee8cc1Swenshuai.xi __u32 majorversion; 45*53ee8cc1Swenshuai.xi __u32 minorversion; 46*53ee8cc1Swenshuai.xi __u32 majormanuversion; 47*53ee8cc1Swenshuai.xi __u32 minormanuversion; 48*53ee8cc1Swenshuai.xi } capi_version; 49*53ee8cc1Swenshuai.xi 50*53ee8cc1Swenshuai.xi #define CAPI_GET_VERSION _IOWR('C',0x07,struct capi_version) 51*53ee8cc1Swenshuai.xi 52*53ee8cc1Swenshuai.xi /* 53*53ee8cc1Swenshuai.xi * CAPI_GET_SERIAL 54*53ee8cc1Swenshuai.xi */ 55*53ee8cc1Swenshuai.xi 56*53ee8cc1Swenshuai.xi #define CAPI_SERIAL_LEN 8 57*53ee8cc1Swenshuai.xi #define CAPI_GET_SERIAL _IOWR('C',0x08,int) /* broken: wanted size 8 (CAPI_SERIAL_LEN) */ 58*53ee8cc1Swenshuai.xi 59*53ee8cc1Swenshuai.xi /* 60*53ee8cc1Swenshuai.xi * CAPI_GET_PROFILE 61*53ee8cc1Swenshuai.xi */ 62*53ee8cc1Swenshuai.xi 63*53ee8cc1Swenshuai.xi typedef struct capi_profile { 64*53ee8cc1Swenshuai.xi __u16 ncontroller; /* number of installed controller */ 65*53ee8cc1Swenshuai.xi __u16 nbchannel; /* number of B-Channels */ 66*53ee8cc1Swenshuai.xi __u32 goptions; /* global options */ 67*53ee8cc1Swenshuai.xi __u32 support1; /* B1 protocols support */ 68*53ee8cc1Swenshuai.xi __u32 support2; /* B2 protocols support */ 69*53ee8cc1Swenshuai.xi __u32 support3; /* B3 protocols support */ 70*53ee8cc1Swenshuai.xi __u32 reserved[6]; /* reserved */ 71*53ee8cc1Swenshuai.xi __u32 manu[5]; /* manufacturer specific information */ 72*53ee8cc1Swenshuai.xi } capi_profile; 73*53ee8cc1Swenshuai.xi 74*53ee8cc1Swenshuai.xi #define CAPI_GET_PROFILE _IOWR('C',0x09,struct capi_profile) 75*53ee8cc1Swenshuai.xi 76*53ee8cc1Swenshuai.xi typedef struct capi_manufacturer_cmd { 77*53ee8cc1Swenshuai.xi unsigned long cmd; 78*53ee8cc1Swenshuai.xi void *data; 79*53ee8cc1Swenshuai.xi } capi_manufacturer_cmd; 80*53ee8cc1Swenshuai.xi 81*53ee8cc1Swenshuai.xi /* 82*53ee8cc1Swenshuai.xi * CAPI_MANUFACTURER_CMD 83*53ee8cc1Swenshuai.xi */ 84*53ee8cc1Swenshuai.xi 85*53ee8cc1Swenshuai.xi #define CAPI_MANUFACTURER_CMD _IOWR('C',0x20, struct capi_manufacturer_cmd) 86*53ee8cc1Swenshuai.xi 87*53ee8cc1Swenshuai.xi /* 88*53ee8cc1Swenshuai.xi * CAPI_GET_ERRCODE 89*53ee8cc1Swenshuai.xi * capi errcode is set, * if read, write, or ioctl returns EIO, 90*53ee8cc1Swenshuai.xi * ioctl returns errcode directly, and in arg, if != 0 91*53ee8cc1Swenshuai.xi */ 92*53ee8cc1Swenshuai.xi 93*53ee8cc1Swenshuai.xi #define CAPI_GET_ERRCODE _IOR('C',0x21, __u16) 94*53ee8cc1Swenshuai.xi 95*53ee8cc1Swenshuai.xi /* 96*53ee8cc1Swenshuai.xi * CAPI_INSTALLED 97*53ee8cc1Swenshuai.xi */ 98*53ee8cc1Swenshuai.xi #define CAPI_INSTALLED _IOR('C',0x22, __u16) 99*53ee8cc1Swenshuai.xi 100*53ee8cc1Swenshuai.xi 101*53ee8cc1Swenshuai.xi /* 102*53ee8cc1Swenshuai.xi * member contr is input for 103*53ee8cc1Swenshuai.xi * CAPI_GET_MANUFACTURER, CAPI_VERSION, CAPI_GET_SERIAL 104*53ee8cc1Swenshuai.xi * and CAPI_GET_PROFILE 105*53ee8cc1Swenshuai.xi */ 106*53ee8cc1Swenshuai.xi typedef union capi_ioctl_struct { 107*53ee8cc1Swenshuai.xi __u32 contr; 108*53ee8cc1Swenshuai.xi capi_register_params rparams; 109*53ee8cc1Swenshuai.xi __u8 manufacturer[CAPI_MANUFACTURER_LEN]; 110*53ee8cc1Swenshuai.xi capi_version version; 111*53ee8cc1Swenshuai.xi __u8 serial[CAPI_SERIAL_LEN]; 112*53ee8cc1Swenshuai.xi capi_profile profile; 113*53ee8cc1Swenshuai.xi capi_manufacturer_cmd cmd; 114*53ee8cc1Swenshuai.xi __u16 errcode; 115*53ee8cc1Swenshuai.xi } capi_ioctl_struct; 116*53ee8cc1Swenshuai.xi 117*53ee8cc1Swenshuai.xi /* 118*53ee8cc1Swenshuai.xi * Middleware extension 119*53ee8cc1Swenshuai.xi */ 120*53ee8cc1Swenshuai.xi 121*53ee8cc1Swenshuai.xi #define CAPIFLAG_HIGHJACKING 0x0001 122*53ee8cc1Swenshuai.xi 123*53ee8cc1Swenshuai.xi #define CAPI_GET_FLAGS _IOR('C',0x23, unsigned) 124*53ee8cc1Swenshuai.xi #define CAPI_SET_FLAGS _IOR('C',0x24, unsigned) 125*53ee8cc1Swenshuai.xi #define CAPI_CLR_FLAGS _IOR('C',0x25, unsigned) 126*53ee8cc1Swenshuai.xi 127*53ee8cc1Swenshuai.xi #define CAPI_NCCI_OPENCOUNT _IOR('C',0x26, unsigned) 128*53ee8cc1Swenshuai.xi 129*53ee8cc1Swenshuai.xi #define CAPI_NCCI_GETUNIT _IOR('C',0x27, unsigned) 130*53ee8cc1Swenshuai.xi 131*53ee8cc1Swenshuai.xi #endif /* __LINUX_CAPI_H__ */ 132