11da177e4SLinus Torvalds /* 21da177e4SLinus Torvalds * $Id: kernelcapi.h,v 1.8.6.2 2001/02/07 11:31:31 kai Exp $ 31da177e4SLinus Torvalds * 41da177e4SLinus Torvalds * Kernel CAPI 2.0 Interface for Linux 51da177e4SLinus Torvalds * 61da177e4SLinus Torvalds * (c) Copyright 1997 by Carsten Paeth ([email protected]) 71da177e4SLinus Torvalds * 81da177e4SLinus Torvalds */ 91da177e4SLinus Torvalds 101da177e4SLinus Torvalds #ifndef __KERNELCAPI_H__ 111da177e4SLinus Torvalds #define __KERNELCAPI_H__ 121da177e4SLinus Torvalds 131da177e4SLinus Torvalds #define CAPI_MAXAPPL 240 /* maximum number of applications */ 141da177e4SLinus Torvalds #define CAPI_MAXCONTR 32 /* maximum number of controller */ 151da177e4SLinus Torvalds #define CAPI_MAXDATAWINDOW 8 161da177e4SLinus Torvalds 171da177e4SLinus Torvalds 181da177e4SLinus Torvalds typedef struct kcapi_flagdef { 191da177e4SLinus Torvalds int contr; 201da177e4SLinus Torvalds int flag; 211da177e4SLinus Torvalds } kcapi_flagdef; 221da177e4SLinus Torvalds 231da177e4SLinus Torvalds typedef struct kcapi_carddef { 241da177e4SLinus Torvalds char driver[32]; 251da177e4SLinus Torvalds unsigned int port; 261da177e4SLinus Torvalds unsigned irq; 271da177e4SLinus Torvalds unsigned int membase; 281da177e4SLinus Torvalds int cardnr; 291da177e4SLinus Torvalds } kcapi_carddef; 301da177e4SLinus Torvalds 311da177e4SLinus Torvalds /* new ioctls >= 10 */ 321da177e4SLinus Torvalds #define KCAPI_CMD_TRACE 10 331da177e4SLinus Torvalds #define KCAPI_CMD_ADDCARD 11 /* OBSOLETE */ 341da177e4SLinus Torvalds 351da177e4SLinus Torvalds /* 361da177e4SLinus Torvalds * flag > 2 => trace also data 371da177e4SLinus Torvalds * flag & 1 => show trace 381da177e4SLinus Torvalds */ 391da177e4SLinus Torvalds #define KCAPI_TRACE_OFF 0 401da177e4SLinus Torvalds #define KCAPI_TRACE_SHORT_NO_DATA 1 411da177e4SLinus Torvalds #define KCAPI_TRACE_FULL_NO_DATA 2 421da177e4SLinus Torvalds #define KCAPI_TRACE_SHORT 3 431da177e4SLinus Torvalds #define KCAPI_TRACE_FULL 4 441da177e4SLinus Torvalds 451da177e4SLinus Torvalds 461da177e4SLinus Torvalds #ifdef __KERNEL__ 471da177e4SLinus Torvalds 481da177e4SLinus Torvalds #include <linux/list.h> 491da177e4SLinus Torvalds #include <linux/skbuff.h> 50d7fe0f24SAl Viro #include <linux/workqueue.h> 51*a80958f4SAl Viro #include <asm/semaphore.h> 521da177e4SLinus Torvalds 531da177e4SLinus Torvalds #define KCI_CONTRUP 0 /* arg: struct capi_profile */ 541da177e4SLinus Torvalds #define KCI_CONTRDOWN 1 /* arg: NULL */ 551da177e4SLinus Torvalds 561da177e4SLinus Torvalds struct capi20_appl { 571da177e4SLinus Torvalds u16 applid; 581da177e4SLinus Torvalds capi_register_params rparam; 591da177e4SLinus Torvalds void (*recv_message)(struct capi20_appl *ap, struct sk_buff *skb); 601da177e4SLinus Torvalds void *private; 611da177e4SLinus Torvalds 621da177e4SLinus Torvalds /* internal to kernelcapi.o */ 631da177e4SLinus Torvalds unsigned long nrecvctlpkt; 641da177e4SLinus Torvalds unsigned long nrecvdatapkt; 651da177e4SLinus Torvalds unsigned long nsentctlpkt; 661da177e4SLinus Torvalds unsigned long nsentdatapkt; 671da177e4SLinus Torvalds struct semaphore recv_sem; 681da177e4SLinus Torvalds struct sk_buff_head recv_queue; 691da177e4SLinus Torvalds struct work_struct recv_work; 701da177e4SLinus Torvalds int release_in_progress; 711da177e4SLinus Torvalds 721da177e4SLinus Torvalds /* ugly hack to allow for notification of added/removed 731da177e4SLinus Torvalds * controllers. The Right Way (tm) is known. XXX 741da177e4SLinus Torvalds */ 751da177e4SLinus Torvalds void (*callback) (unsigned int cmd, __u32 contr, void *data); 761da177e4SLinus Torvalds }; 771da177e4SLinus Torvalds 781da177e4SLinus Torvalds u16 capi20_isinstalled(void); 791da177e4SLinus Torvalds u16 capi20_register(struct capi20_appl *ap); 801da177e4SLinus Torvalds u16 capi20_release(struct capi20_appl *ap); 811da177e4SLinus Torvalds u16 capi20_put_message(struct capi20_appl *ap, struct sk_buff *skb); 821da177e4SLinus Torvalds u16 capi20_get_manufacturer(u32 contr, u8 buf[CAPI_MANUFACTURER_LEN]); 831da177e4SLinus Torvalds u16 capi20_get_version(u32 contr, struct capi_version *verp); 841da177e4SLinus Torvalds u16 capi20_get_serial(u32 contr, u8 serial[CAPI_SERIAL_LEN]); 851da177e4SLinus Torvalds u16 capi20_get_profile(u32 contr, struct capi_profile *profp); 861da177e4SLinus Torvalds int capi20_manufacturer(unsigned int cmd, void __user *data); 871da177e4SLinus Torvalds 881da177e4SLinus Torvalds /* temporary hack XXX */ 891da177e4SLinus Torvalds void capi20_set_callback(struct capi20_appl *ap, 901da177e4SLinus Torvalds void (*callback) (unsigned int cmd, __u32 contr, void *data)); 911da177e4SLinus Torvalds 921da177e4SLinus Torvalds 931da177e4SLinus Torvalds 941da177e4SLinus Torvalds #define CAPI_NOERROR 0x0000 951da177e4SLinus Torvalds 961da177e4SLinus Torvalds #define CAPI_TOOMANYAPPLS 0x1001 971da177e4SLinus Torvalds #define CAPI_LOGBLKSIZETOSMALL 0x1002 981da177e4SLinus Torvalds #define CAPI_BUFFEXECEEDS64K 0x1003 991da177e4SLinus Torvalds #define CAPI_MSGBUFSIZETOOSMALL 0x1004 1001da177e4SLinus Torvalds #define CAPI_ANZLOGCONNNOTSUPPORTED 0x1005 1011da177e4SLinus Torvalds #define CAPI_REGRESERVED 0x1006 1021da177e4SLinus Torvalds #define CAPI_REGBUSY 0x1007 1031da177e4SLinus Torvalds #define CAPI_REGOSRESOURCEERR 0x1008 1041da177e4SLinus Torvalds #define CAPI_REGNOTINSTALLED 0x1009 1051da177e4SLinus Torvalds #define CAPI_REGCTRLERNOTSUPPORTEXTEQUIP 0x100a 1061da177e4SLinus Torvalds #define CAPI_REGCTRLERONLYSUPPORTEXTEQUIP 0x100b 1071da177e4SLinus Torvalds 1081da177e4SLinus Torvalds #define CAPI_ILLAPPNR 0x1101 1091da177e4SLinus Torvalds #define CAPI_ILLCMDORSUBCMDORMSGTOSMALL 0x1102 1101da177e4SLinus Torvalds #define CAPI_SENDQUEUEFULL 0x1103 1111da177e4SLinus Torvalds #define CAPI_RECEIVEQUEUEEMPTY 0x1104 1121da177e4SLinus Torvalds #define CAPI_RECEIVEOVERFLOW 0x1105 1131da177e4SLinus Torvalds #define CAPI_UNKNOWNNOTPAR 0x1106 1141da177e4SLinus Torvalds #define CAPI_MSGBUSY 0x1107 1151da177e4SLinus Torvalds #define CAPI_MSGOSRESOURCEERR 0x1108 1161da177e4SLinus Torvalds #define CAPI_MSGNOTINSTALLED 0x1109 1171da177e4SLinus Torvalds #define CAPI_MSGCTRLERNOTSUPPORTEXTEQUIP 0x110a 1181da177e4SLinus Torvalds #define CAPI_MSGCTRLERONLYSUPPORTEXTEQUIP 0x110b 1191da177e4SLinus Torvalds 1201da177e4SLinus Torvalds typedef enum { 1211da177e4SLinus Torvalds CapiMessageNotSupportedInCurrentState = 0x2001, 1221da177e4SLinus Torvalds CapiIllContrPlciNcci = 0x2002, 1231da177e4SLinus Torvalds CapiNoPlciAvailable = 0x2003, 1241da177e4SLinus Torvalds CapiNoNcciAvailable = 0x2004, 1251da177e4SLinus Torvalds CapiNoListenResourcesAvailable = 0x2005, 1261da177e4SLinus Torvalds CapiNoFaxResourcesAvailable = 0x2006, 1271da177e4SLinus Torvalds CapiIllMessageParmCoding = 0x2007, 1281da177e4SLinus Torvalds } RESOURCE_CODING_PROBLEM; 1291da177e4SLinus Torvalds 1301da177e4SLinus Torvalds typedef enum { 1311da177e4SLinus Torvalds CapiB1ProtocolNotSupported = 0x3001, 1321da177e4SLinus Torvalds CapiB2ProtocolNotSupported = 0x3002, 1331da177e4SLinus Torvalds CapiB3ProtocolNotSupported = 0x3003, 1341da177e4SLinus Torvalds CapiB1ProtocolParameterNotSupported = 0x3004, 1351da177e4SLinus Torvalds CapiB2ProtocolParameterNotSupported = 0x3005, 1361da177e4SLinus Torvalds CapiB3ProtocolParameterNotSupported = 0x3006, 1371da177e4SLinus Torvalds CapiBProtocolCombinationNotSupported = 0x3007, 1381da177e4SLinus Torvalds CapiNcpiNotSupported = 0x3008, 1391da177e4SLinus Torvalds CapiCipValueUnknown = 0x3009, 1401da177e4SLinus Torvalds CapiFlagsNotSupported = 0x300a, 1411da177e4SLinus Torvalds CapiFacilityNotSupported = 0x300b, 1421da177e4SLinus Torvalds CapiDataLengthNotSupportedByCurrentProtocol = 0x300c, 1431da177e4SLinus Torvalds CapiResetProcedureNotSupportedByCurrentProtocol = 0x300d, 1441da177e4SLinus Torvalds CapiTeiAssignmentFailed = 0x300e, 1451da177e4SLinus Torvalds } REQUESTED_SERVICES_PROBLEM; 1461da177e4SLinus Torvalds 1471da177e4SLinus Torvalds typedef enum { 1481da177e4SLinus Torvalds CapiSuccess = 0x0000, 1491da177e4SLinus Torvalds CapiSupplementaryServiceNotSupported = 0x300e, 1501da177e4SLinus Torvalds CapiRequestNotAllowedInThisState = 0x3010, 1511da177e4SLinus Torvalds } SUPPLEMENTARY_SERVICE_INFO; 1521da177e4SLinus Torvalds 1531da177e4SLinus Torvalds typedef enum { 1541da177e4SLinus Torvalds CapiProtocolErrorLayer1 = 0x3301, 1551da177e4SLinus Torvalds CapiProtocolErrorLayer2 = 0x3302, 1561da177e4SLinus Torvalds CapiProtocolErrorLayer3 = 0x3303, 1571da177e4SLinus Torvalds CapiTimeOut = 0x3303, // SuppServiceReason 1581da177e4SLinus Torvalds CapiCallGivenToOtherApplication = 0x3304, 1591da177e4SLinus Torvalds } CAPI_REASON; 1601da177e4SLinus Torvalds 1611da177e4SLinus Torvalds #endif /* __KERNEL__ */ 1621da177e4SLinus Torvalds 1631da177e4SLinus Torvalds #endif /* __KERNELCAPI_H__ */ 164