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