summaryrefslogtreecommitdiffstats
path: root/drivers/isdn/hardware/eicon/di_defs.h
blob: a5094d221086dffaf61d21bbe76e9980e0c8116b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
/*
 *
 Copyright (c) Eicon Networks, 2002.
 *
 This source file is supplied for the use with
 Eicon Networks range of DIVA Server Adapters.
 *
 Eicon File Revision :    2.1
 *
 This program is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
 the Free Software Foundation; either version 2, or (at your option)
 any later version.
 *
 This program is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY OF ANY KIND WHATSOEVER INCLUDING ANY
 implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 See the GNU General Public License for more details.
 *
 You should have received a copy of the GNU General Public License
 along with this program; if not, write to the Free Software
 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 *
 */
#ifndef _DI_DEFS_
#define _DI_DEFS_
/* typedefs for our data structures                         */
typedef struct get_name_s GET_NAME;
/*  The entity_s structure is used to pass all
    parameters between application and IDI   */
typedef struct entity_s ENTITY;
typedef struct buffers_s BUFFERS;
typedef struct postcall_s POSTCALL;
typedef struct get_para_s GET_PARA;
#define BOARD_NAME_LENGTH 9
#define IDI_CALL_LINK_T
#define IDI_CALL_ENTITY_T
/* typedef void ( * IDI_CALL)(ENTITY *); */
/* --------------------------------------------------------
   IDI_CALL
   -------------------------------------------------------- */
typedef void (IDI_CALL_LINK_T *IDI_CALL)(ENTITY IDI_CALL_ENTITY_T *);
typedef struct {
	word length;          /* length of data/parameter field           */
	byte P[270];          /* data/parameter field                     */
} DBUFFER;
struct get_name_s {
	word command;         /* command = 0x0100 */
	byte name[BOARD_NAME_LENGTH];
};
struct postcall_s {
	word      command;                           /* command = 0x0300 */
	word      dummy;                             /* not used */
	void      (*callback)(void *);      /* call back */
	void      *context;                          /* context pointer */
};
#define REQ_PARA            0x0600   /* request command line parameters */
#define REQ_PARA_LEN             1   /* number of data bytes */
#define L1_STARTUP_DOWN_POS      0   /* '-y' command line parameter in......*/
#define L1_STARTUP_DOWN_MSK   0x01   /* first byte position (index 0) with value 0x01 */
struct get_para_s {
	word  command;            /* command = 0x0600 */
	byte  len;                /* max length of para field in bytes */
	byte  para[REQ_PARA_LEN]; /* parameter field */
};
struct buffers_s {
	word PLength;
	byte *P;
};
struct entity_s {
	byte                  Req;            /* pending request          */
	byte                  Rc;             /* return code received     */
	byte                  Ind;            /* indication received      */
	byte                  ReqCh;          /* channel of current Req   */
	byte                  RcCh;           /* channel of current Rc    */
	byte                  IndCh;          /* channel of current Ind   */
	byte                  Id;             /* ID used by this entity   */
	byte                  GlobalId;       /* reserved field           */
	byte                  XNum;           /* number of X-buffers      */
	byte                  RNum;           /* number of R-buffers      */
	BUFFERS               *X;             /* pointer to X-buffer list */
	BUFFERS               *R;             /* pointer to R-buffer list */
	word                  RLength;        /* length of current R-data */
	DBUFFER               *RBuffer;       /* buffer of current R-data */
	byte                  RNR;            /* receive not ready flag   */
	byte                  complete;       /* receive complete status  */
	IDI_CALL              callback;
	word                  user[2];
	/* fields used by the driver internally                     */
	byte                  No;             /* entity number            */
	byte                  reserved2;      /* reserved field           */
	byte                  More;           /* R/X More flags           */
	byte                  MInd;           /* MDATA coding for this ID */
	byte                  XCurrent;       /* current transmit buffer  */
	byte                  RCurrent;       /* current receive buffer   */
	word                  XOffset;        /* offset in x-buffer       */
	word                  ROffset;        /* offset in r-buffer       */
};
typedef struct {
	byte                  type;
	byte                  channels;
	word                  features;
	IDI_CALL              request;
} DESCRIPTOR;
/* descriptor type field coding */
#define IDI_ADAPTER_S           1
#define IDI_ADAPTER_PR          2
#define IDI_ADAPTER_DIVA        3
#define IDI_ADAPTER_MAESTRA     4
#define IDI_VADAPTER            0x40
#define IDI_DRIVER              0x80
#define IDI_DADAPTER            0xfd
#define IDI_DIDDPNP             0xfe
#define IDI_DIMAINT             0xff
/* Hardware IDs ISA PNP */
#define HW_ID_DIVA_PRO     3    /* same as IDI_ADAPTER_DIVA    */
#define HW_ID_MAESTRA      4    /* same as IDI_ADAPTER_MAESTRA */
#define HW_ID_PICCOLA      5
#define HW_ID_DIVA_PRO20   6
#define HW_ID_DIVA20       7
#define HW_ID_DIVA_PRO20_U 8
#define HW_ID_DIVA20_U     9
#define HW_ID_DIVA30       10
#define HW_ID_DIVA30_U     11
/* Hardware IDs PCI */
#define HW_ID_EICON_PCI              0x1133
#define HW_ID_SIEMENS_PCI            0x8001 /* unused SubVendor ID for Siemens Cornet-N cards */
#define HW_ID_PROTTYPE_CORNETN       0x0014 /* SubDevice ID for Siemens Cornet-N cards */
#define HW_ID_FUJITSU_SIEMENS_PCI    0x110A /* SubVendor ID for Fujitsu Siemens */
#define HW_ID_GS03_PCI               0x0021 /* SubDevice ID for Fujitsu Siemens ISDN S0 card */
#define HW_ID_DIVA_PRO20_PCI         0xe001
#define HW_ID_DIVA20_PCI             0xe002
#define HW_ID_DIVA_PRO20_PCI_U       0xe003
#define HW_ID_DIVA20_PCI_U           0xe004
#define HW_ID_DIVA201_PCI            0xe005
#define HW_ID_DIVA_CT_ST             0xe006
#define HW_ID_DIVA_CT_U              0xe007
#define HW_ID_DIVA_CTL_ST            0xe008
#define HW_ID_DIVA_CTL_U             0xe009
#define HW_ID_DIVA_ISDN_V90_PCI      0xe00a
#define HW_ID_DIVA202_PCI_ST         0xe00b
#define HW_ID_DIVA202_PCI_U          0xe00c
#define HW_ID_DIVA_PRO30_PCI         0xe00d
#define HW_ID_MAESTRA_PCI            0xe010
#define HW_ID_MAESTRAQ_PCI           0xe012
#define HW_ID_DSRV_Q8M_V2_PCI        0xe013
#define HW_ID_MAESTRAP_PCI           0xe014
#define HW_ID_DSRV_P30M_V2_PCI       0xe015
#define HW_ID_DSRV_VOICE_Q8M_PCI     0xe016
#define HW_ID_DSRV_VOICE_Q8M_V2_PCI  0xe017
#define HW_ID_DSRV_B2M_V2_PCI        0xe018
#define HW_ID_DSRV_VOICE_P30M_V2_PCI 0xe019
#define HW_ID_DSRV_B2F_PCI           0xe01a
#define HW_ID_DSRV_VOICE_B2M_V2_PCI  0xe01b
/* Hardware IDs USB */
#define EICON_USB_VENDOR_ID          0x071D
#define HW_ID_DIVA_USB_REV1          0x1000
#define HW_ID_DIVA_USB_REV2          0x1003
#define HW_ID_TELEDAT_SURF_USB_REV2  0x1004
#define HW_ID_TELEDAT_SURF_USB_REV1  0x2000
/* --------------------------------------------------------------------------
   Adapter array change notification framework
   -------------------------------------------------------------------------- */
typedef void (IDI_CALL_LINK_T *didd_adapter_change_callback_t)(void IDI_CALL_ENTITY_T *context, DESCRIPTOR *adapter, int removal);
/* -------------------------------------------------------------------------- */
#define DI_VOICE          0x0 /* obsolete define */
#define DI_FAX3           0x1
#define DI_MODEM          0x2
#define DI_POST           0x4
#define DI_V110           0x8
#define DI_V120           0x10
#define DI_POTS           0x20
#define DI_CODEC          0x40
#define DI_MANAGE         0x80
#define DI_V_42           0x0100
#define DI_EXTD_FAX       0x0200 /* Extended FAX (ECM, 2D, T.6, Polling) */
#define DI_AT_PARSER      0x0400 /* Build-in AT Parser in the L2 */
#define DI_VOICE_OVER_IP  0x0800 /* Voice over IP support */
typedef void (IDI_CALL_LINK_T *_IDI_CALL)(void *, ENTITY *);
#endif