11da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
21da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*
31da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *
4475be4d85a274d0961593db41cf85689db1d583cJoe Perches Copyright (c) Eicon Networks, 2002.
51da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *
6475be4d85a274d0961593db41cf85689db1d583cJoe Perches This source file is supplied for the use with
7475be4d85a274d0961593db41cf85689db1d583cJoe Perches Eicon Networks range of DIVA Server Adapters.
81da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *
9475be4d85a274d0961593db41cf85689db1d583cJoe Perches Eicon File Revision :    2.1
101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *
11475be4d85a274d0961593db41cf85689db1d583cJoe Perches This program is free software; you can redistribute it and/or modify
12475be4d85a274d0961593db41cf85689db1d583cJoe Perches it under the terms of the GNU General Public License as published by
13475be4d85a274d0961593db41cf85689db1d583cJoe Perches the Free Software Foundation; either version 2, or (at your option)
14475be4d85a274d0961593db41cf85689db1d583cJoe Perches any later version.
151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *
16475be4d85a274d0961593db41cf85689db1d583cJoe Perches This program is distributed in the hope that it will be useful,
17475be4d85a274d0961593db41cf85689db1d583cJoe Perches but WITHOUT ANY WARRANTY OF ANY KIND WHATSOEVER INCLUDING ANY
18475be4d85a274d0961593db41cf85689db1d583cJoe Perches implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
19475be4d85a274d0961593db41cf85689db1d583cJoe Perches See the GNU General Public License for more details.
201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *
21475be4d85a274d0961593db41cf85689db1d583cJoe Perches You should have received a copy of the GNU General Public License
22475be4d85a274d0961593db41cf85689db1d583cJoe Perches along with this program; if not, write to the Free Software
23475be4d85a274d0961593db41cf85689db1d583cJoe Perches Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *
251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */
26475be4d85a274d0961593db41cf85689db1d583cJoe Perches#ifndef _DI_DEFS_
271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define _DI_DEFS_
28475be4d85a274d0961593db41cf85689db1d583cJoe Perches/* typedefs for our data structures                         */
291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldstypedef struct get_name_s GET_NAME;
301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*  The entity_s structure is used to pass all
311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds    parameters between application and IDI   */
321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldstypedef struct entity_s ENTITY;
331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldstypedef struct buffers_s BUFFERS;
341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldstypedef struct postcall_s POSTCALL;
351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldstypedef struct get_para_s GET_PARA;
361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define BOARD_NAME_LENGTH 9
371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define IDI_CALL_LINK_T
381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define IDI_CALL_ENTITY_T
391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* typedef void ( * IDI_CALL)(ENTITY *); */
401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* --------------------------------------------------------
41475be4d85a274d0961593db41cf85689db1d583cJoe Perches   IDI_CALL
421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds   -------------------------------------------------------- */
43475be4d85a274d0961593db41cf85689db1d583cJoe Perchestypedef void (IDI_CALL_LINK_T *IDI_CALL)(ENTITY IDI_CALL_ENTITY_T *);
441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldstypedef struct {
45475be4d85a274d0961593db41cf85689db1d583cJoe Perches	word length;          /* length of data/parameter field           */
46475be4d85a274d0961593db41cf85689db1d583cJoe Perches	byte P[270];          /* data/parameter field                     */
471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} DBUFFER;
481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct get_name_s {
49475be4d85a274d0961593db41cf85689db1d583cJoe Perches	word command;         /* command = 0x0100 */
50475be4d85a274d0961593db41cf85689db1d583cJoe Perches	byte name[BOARD_NAME_LENGTH];
511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct postcall_s {
53475be4d85a274d0961593db41cf85689db1d583cJoe Perches	word      command;                           /* command = 0x0300 */
54475be4d85a274d0961593db41cf85689db1d583cJoe Perches	word      dummy;                             /* not used */
55475be4d85a274d0961593db41cf85689db1d583cJoe Perches	void      (*callback)(void *);      /* call back */
56475be4d85a274d0961593db41cf85689db1d583cJoe Perches	void      *context;                          /* context pointer */
571da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
581da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define REQ_PARA            0x0600   /* request command line parameters */
591da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define REQ_PARA_LEN             1   /* number of data bytes */
601da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define L1_STARTUP_DOWN_POS      0   /* '-y' command line parameter in......*/
611da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define L1_STARTUP_DOWN_MSK   0x01   /* first byte position (index 0) with value 0x01 */
621da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct get_para_s {
63475be4d85a274d0961593db41cf85689db1d583cJoe Perches	word  command;            /* command = 0x0600 */
64475be4d85a274d0961593db41cf85689db1d583cJoe Perches	byte  len;                /* max length of para field in bytes */
65475be4d85a274d0961593db41cf85689db1d583cJoe Perches	byte  para[REQ_PARA_LEN]; /* parameter field */
661da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
671da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct buffers_s {
68475be4d85a274d0961593db41cf85689db1d583cJoe Perches	word PLength;
69475be4d85a274d0961593db41cf85689db1d583cJoe Perches	byte *P;
701da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
711da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct entity_s {
72475be4d85a274d0961593db41cf85689db1d583cJoe Perches	byte                  Req;            /* pending request          */
73475be4d85a274d0961593db41cf85689db1d583cJoe Perches	byte                  Rc;             /* return code received     */
74475be4d85a274d0961593db41cf85689db1d583cJoe Perches	byte                  Ind;            /* indication received      */
75475be4d85a274d0961593db41cf85689db1d583cJoe Perches	byte                  ReqCh;          /* channel of current Req   */
76475be4d85a274d0961593db41cf85689db1d583cJoe Perches	byte                  RcCh;           /* channel of current Rc    */
77475be4d85a274d0961593db41cf85689db1d583cJoe Perches	byte                  IndCh;          /* channel of current Ind   */
78475be4d85a274d0961593db41cf85689db1d583cJoe Perches	byte                  Id;             /* ID used by this entity   */
79475be4d85a274d0961593db41cf85689db1d583cJoe Perches	byte                  GlobalId;       /* reserved field           */
80475be4d85a274d0961593db41cf85689db1d583cJoe Perches	byte                  XNum;           /* number of X-buffers      */
81475be4d85a274d0961593db41cf85689db1d583cJoe Perches	byte                  RNum;           /* number of R-buffers      */
82475be4d85a274d0961593db41cf85689db1d583cJoe Perches	BUFFERS               *X;             /* pointer to X-buffer list */
83475be4d85a274d0961593db41cf85689db1d583cJoe Perches	BUFFERS               *R;             /* pointer to R-buffer list */
84475be4d85a274d0961593db41cf85689db1d583cJoe Perches	word                  RLength;        /* length of current R-data */
85475be4d85a274d0961593db41cf85689db1d583cJoe Perches	DBUFFER               *RBuffer;       /* buffer of current R-data */
86475be4d85a274d0961593db41cf85689db1d583cJoe Perches	byte                  RNR;            /* receive not ready flag   */
87475be4d85a274d0961593db41cf85689db1d583cJoe Perches	byte                  complete;       /* receive complete status  */
88475be4d85a274d0961593db41cf85689db1d583cJoe Perches	IDI_CALL              callback;
89475be4d85a274d0961593db41cf85689db1d583cJoe Perches	word                  user[2];
90475be4d85a274d0961593db41cf85689db1d583cJoe Perches	/* fields used by the driver internally                     */
91475be4d85a274d0961593db41cf85689db1d583cJoe Perches	byte                  No;             /* entity number            */
92475be4d85a274d0961593db41cf85689db1d583cJoe Perches	byte                  reserved2;      /* reserved field           */
93475be4d85a274d0961593db41cf85689db1d583cJoe Perches	byte                  More;           /* R/X More flags           */
94475be4d85a274d0961593db41cf85689db1d583cJoe Perches	byte                  MInd;           /* MDATA coding for this ID */
95475be4d85a274d0961593db41cf85689db1d583cJoe Perches	byte                  XCurrent;       /* current transmit buffer  */
96475be4d85a274d0961593db41cf85689db1d583cJoe Perches	byte                  RCurrent;       /* current receive buffer   */
97475be4d85a274d0961593db41cf85689db1d583cJoe Perches	word                  XOffset;        /* offset in x-buffer       */
98475be4d85a274d0961593db41cf85689db1d583cJoe Perches	word                  ROffset;        /* offset in r-buffer       */
991da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
1001da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldstypedef struct {
101475be4d85a274d0961593db41cf85689db1d583cJoe Perches	byte                  type;
102475be4d85a274d0961593db41cf85689db1d583cJoe Perches	byte                  channels;
103475be4d85a274d0961593db41cf85689db1d583cJoe Perches	word                  features;
104475be4d85a274d0961593db41cf85689db1d583cJoe Perches	IDI_CALL              request;
1051da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} DESCRIPTOR;
106475be4d85a274d0961593db41cf85689db1d583cJoe Perches/* descriptor type field coding */
1071da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define IDI_ADAPTER_S           1
1081da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define IDI_ADAPTER_PR          2
1091da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define IDI_ADAPTER_DIVA        3
1101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define IDI_ADAPTER_MAESTRA     4
1111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define IDI_VADAPTER            0x40
1121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define IDI_DRIVER              0x80
1131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define IDI_DADAPTER            0xfd
1141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define IDI_DIDDPNP             0xfe
1151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define IDI_DIMAINT             0xff
116475be4d85a274d0961593db41cf85689db1d583cJoe Perches/* Hardware IDs ISA PNP */
1171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define HW_ID_DIVA_PRO     3    /* same as IDI_ADAPTER_DIVA    */
1181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define HW_ID_MAESTRA      4    /* same as IDI_ADAPTER_MAESTRA */
1191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define HW_ID_PICCOLA      5
1201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define HW_ID_DIVA_PRO20   6
1211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define HW_ID_DIVA20       7
1221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define HW_ID_DIVA_PRO20_U 8
1231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define HW_ID_DIVA20_U     9
1241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define HW_ID_DIVA30       10
1251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define HW_ID_DIVA30_U     11
126475be4d85a274d0961593db41cf85689db1d583cJoe Perches/* Hardware IDs PCI */
1271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define HW_ID_EICON_PCI              0x1133
1281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define HW_ID_SIEMENS_PCI            0x8001 /* unused SubVendor ID for Siemens Cornet-N cards */
1291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define HW_ID_PROTTYPE_CORNETN       0x0014 /* SubDevice ID for Siemens Cornet-N cards */
1301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define HW_ID_FUJITSU_SIEMENS_PCI    0x110A /* SubVendor ID for Fujitsu Siemens */
1311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define HW_ID_GS03_PCI               0x0021 /* SubDevice ID for Fujitsu Siemens ISDN S0 card */
1321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define HW_ID_DIVA_PRO20_PCI         0xe001
1331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define HW_ID_DIVA20_PCI             0xe002
1341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define HW_ID_DIVA_PRO20_PCI_U       0xe003
1351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define HW_ID_DIVA20_PCI_U           0xe004
1361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define HW_ID_DIVA201_PCI            0xe005
1371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define HW_ID_DIVA_CT_ST             0xe006
1381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define HW_ID_DIVA_CT_U              0xe007
1391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define HW_ID_DIVA_CTL_ST            0xe008
1401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define HW_ID_DIVA_CTL_U             0xe009
1411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define HW_ID_DIVA_ISDN_V90_PCI      0xe00a
1421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define HW_ID_DIVA202_PCI_ST         0xe00b
1431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define HW_ID_DIVA202_PCI_U          0xe00c
1441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define HW_ID_DIVA_PRO30_PCI         0xe00d
1451da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define HW_ID_MAESTRA_PCI            0xe010
1461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define HW_ID_MAESTRAQ_PCI           0xe012
1471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define HW_ID_DSRV_Q8M_V2_PCI        0xe013
1481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define HW_ID_MAESTRAP_PCI           0xe014
1491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define HW_ID_DSRV_P30M_V2_PCI       0xe015
1501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define HW_ID_DSRV_VOICE_Q8M_PCI     0xe016
1511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define HW_ID_DSRV_VOICE_Q8M_V2_PCI  0xe017
1521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define HW_ID_DSRV_B2M_V2_PCI        0xe018
1531da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define HW_ID_DSRV_VOICE_P30M_V2_PCI 0xe019
1541da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define HW_ID_DSRV_B2F_PCI           0xe01a
1551da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define HW_ID_DSRV_VOICE_B2M_V2_PCI  0xe01b
156475be4d85a274d0961593db41cf85689db1d583cJoe Perches/* Hardware IDs USB */
1571da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define EICON_USB_VENDOR_ID          0x071D
1581da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define HW_ID_DIVA_USB_REV1          0x1000
1591da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define HW_ID_DIVA_USB_REV2          0x1003
1601da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define HW_ID_TELEDAT_SURF_USB_REV2  0x1004
1611da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define HW_ID_TELEDAT_SURF_USB_REV1  0x2000
1621da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* --------------------------------------------------------------------------
163475be4d85a274d0961593db41cf85689db1d583cJoe Perches   Adapter array change notification framework
164475be4d85a274d0961593db41cf85689db1d583cJoe Perches   -------------------------------------------------------------------------- */
165475be4d85a274d0961593db41cf85689db1d583cJoe Perchestypedef void (IDI_CALL_LINK_T *didd_adapter_change_callback_t)(void IDI_CALL_ENTITY_T *context, DESCRIPTOR *adapter, int removal);
1661da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* -------------------------------------------------------------------------- */
1671da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DI_VOICE          0x0 /* obsolete define */
1681da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DI_FAX3           0x1
1691da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DI_MODEM          0x2
1701da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DI_POST           0x4
1711da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DI_V110           0x8
1721da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DI_V120           0x10
1731da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DI_POTS           0x20
1741da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DI_CODEC          0x40
1751da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DI_MANAGE         0x80
1761da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DI_V_42           0x0100
1771da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DI_EXTD_FAX       0x0200 /* Extended FAX (ECM, 2D, T.6, Polling) */
1781da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DI_AT_PARSER      0x0400 /* Build-in AT Parser in the L2 */
1791da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DI_VOICE_OVER_IP  0x0800 /* Voice over IP support */
180475be4d85a274d0961593db41cf85689db1d583cJoe Perchestypedef void (IDI_CALL_LINK_T *_IDI_CALL)(void *, ENTITY *);
181475be4d85a274d0961593db41cf85689db1d583cJoe Perches#endif
182