Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
awilliam
GitHub Repository: awilliam/linux-vfio
Path: blob/master/drivers/isdn/hardware/eicon/io.h
15115 views
1
2
/*
3
*
4
Copyright (c) Eicon Networks, 2002.
5
*
6
This source file is supplied for the use with
7
Eicon Networks range of DIVA Server Adapters.
8
*
9
Eicon File Revision : 2.1
10
*
11
This program is free software; you can redistribute it and/or modify
12
it under the terms of the GNU General Public License as published by
13
the Free Software Foundation; either version 2, or (at your option)
14
any later version.
15
*
16
This program is distributed in the hope that it will be useful,
17
but WITHOUT ANY WARRANTY OF ANY KIND WHATSOEVER INCLUDING ANY
18
implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
19
See the GNU General Public License for more details.
20
*
21
You should have received a copy of the GNU General Public License
22
along with this program; if not, write to the Free Software
23
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
24
*
25
*/
26
#ifndef __DIVA_XDI_COMMON_IO_H_INC__ /* { */
27
#define __DIVA_XDI_COMMON_IO_H_INC__
28
/*
29
maximum = 16 adapters
30
*/
31
#define DI_MAX_LINKS MAX_ADAPTER
32
#define ISDN_MAX_NUM_LEN 60
33
/* --------------------------------------------------------------------------
34
structure for quadro card management (obsolete for
35
systems that do provide per card load event)
36
-------------------------------------------------------------------------- */
37
typedef struct {
38
dword Num ;
39
DEVICE_NAME DeviceName[4] ;
40
PISDN_ADAPTER QuadroAdapter[4] ;
41
} ADAPTER_LIST_ENTRY, *PADAPTER_LIST_ENTRY ;
42
/* --------------------------------------------------------------------------
43
Special OS memory support structures
44
-------------------------------------------------------------------------- */
45
#define MAX_MAPPED_ENTRIES 8
46
typedef struct {
47
void * Address;
48
dword Length;
49
} ADAPTER_MEMORY ;
50
/* --------------------------------------------------------------------------
51
Configuration of XDI clients carried by XDI
52
-------------------------------------------------------------------------- */
53
#define DIVA_XDI_CAPI_CFG_1_DYNAMIC_L1_ON 0x01
54
#define DIVA_XDI_CAPI_CFG_1_GROUP_POPTIMIZATION_ON 0x02
55
typedef struct _diva_xdi_capi_cfg {
56
byte cfg_1;
57
} diva_xdi_capi_cfg_t;
58
/* --------------------------------------------------------------------------
59
Main data structure kept per adapter
60
-------------------------------------------------------------------------- */
61
struct _ISDN_ADAPTER {
62
void (* DIRequest)(PISDN_ADAPTER, ENTITY *) ;
63
int State ; /* from NT4 1.srv, a good idea, but a poor achievement */
64
int Initialized ;
65
int RegisteredWithDidd ;
66
int Unavailable ; /* callback function possible? */
67
int ResourcesClaimed ;
68
int PnpBiosConfigUsed ;
69
dword Logging ;
70
dword features ;
71
char ProtocolIdString[80] ;
72
/*
73
remember mapped memory areas
74
*/
75
ADAPTER_MEMORY MappedMemory[MAX_MAPPED_ENTRIES] ;
76
CARD_PROPERTIES Properties ;
77
dword cardType ;
78
dword protocol_id ; /* configured protocol identifier */
79
char protocol_name[8] ; /* readable name of protocol */
80
dword BusType ;
81
dword BusNumber ;
82
dword slotNumber ;
83
dword slotId ;
84
dword ControllerNumber ; /* for QUADRO cards only */
85
PISDN_ADAPTER MultiMaster ; /* for 4-BRI card only - use MultiMaster or QuadroList */
86
PADAPTER_LIST_ENTRY QuadroList ; /* for QUADRO card only */
87
PDEVICE_OBJECT DeviceObject ;
88
dword DeviceId ;
89
diva_os_adapter_irq_info_t irq_info;
90
dword volatile IrqCount ;
91
int trapped ;
92
dword DspCodeBaseAddr ;
93
dword MaxDspCodeSize ;
94
dword downloadAddr ;
95
dword DspCodeBaseAddrTable[4] ; /* add. for MultiMaster */
96
dword MaxDspCodeSizeTable[4] ; /* add. for MultiMaster */
97
dword downloadAddrTable[4] ; /* add. for MultiMaster */
98
dword MemoryBase ;
99
dword MemorySize ;
100
byte __iomem *Address ;
101
byte __iomem *Config ;
102
byte __iomem *Control ;
103
byte __iomem *reset ;
104
byte __iomem *port ;
105
byte __iomem *ram ;
106
byte __iomem *cfg ;
107
byte __iomem *prom ;
108
byte __iomem *ctlReg ;
109
struct pc_maint *pcm ;
110
diva_os_dependent_devica_name_t os_name;
111
byte Name[32] ;
112
dword serialNo ;
113
dword ANum ;
114
dword ArchiveType ; /* ARCHIVE_TYPE_NONE ..._SINGLE ..._USGEN ..._MULTI */
115
char *ProtocolSuffix ; /* internal protocolfile table */
116
char Archive[32] ;
117
char Protocol[32] ;
118
char AddDownload[32] ; /* Dsp- or other additional download files */
119
char Oad1[ISDN_MAX_NUM_LEN] ;
120
char Osa1[ISDN_MAX_NUM_LEN] ;
121
char Oad2[ISDN_MAX_NUM_LEN] ;
122
char Osa2[ISDN_MAX_NUM_LEN] ;
123
char Spid1[ISDN_MAX_NUM_LEN] ;
124
char Spid2[ISDN_MAX_NUM_LEN] ;
125
byte nosig ;
126
byte BriLayer2LinkCount ; /* amount of TEI's that adapter will support in P2MP mode */
127
dword Channels ;
128
dword tei ;
129
dword nt2 ;
130
dword TerminalCount ;
131
dword WatchDog ;
132
dword Permanent ;
133
dword BChMask ; /* B channel mask for unchannelized modes */
134
dword StableL2 ;
135
dword DidLen ;
136
dword NoOrderCheck ;
137
dword ForceLaw; /* VoiceCoding - default:0, a-law: 1, my-law: 2 */
138
dword SigFlags ;
139
dword LowChannel ;
140
dword NoHscx30 ;
141
dword ProtVersion ;
142
dword crc4 ;
143
dword L1TristateOrQsig ; /* enable Layer 1 Tristate (bit 2)Or Qsig params (bit 0,1)*/
144
dword InitialDspInfo ;
145
dword ModemGuardTone ;
146
dword ModemMinSpeed ;
147
dword ModemMaxSpeed ;
148
dword ModemOptions ;
149
dword ModemOptions2 ;
150
dword ModemNegotiationMode ;
151
dword ModemModulationsMask ;
152
dword ModemTransmitLevel ;
153
dword FaxOptions ;
154
dword FaxMaxSpeed ;
155
dword Part68LevelLimiter ;
156
dword UsEktsNumCallApp ;
157
byte UsEktsFeatAddConf ;
158
byte UsEktsFeatRemoveConf ;
159
byte UsEktsFeatCallTransfer ;
160
byte UsEktsFeatMsgWaiting ;
161
byte QsigDialect;
162
byte ForceVoiceMailAlert;
163
byte DisableAutoSpid;
164
byte ModemCarrierWaitTimeSec;
165
byte ModemCarrierLossWaitTimeTenthSec;
166
byte PiafsLinkTurnaroundInFrames;
167
byte DiscAfterProgress;
168
byte AniDniLimiter[3];
169
byte TxAttenuation; /* PRI/E1 only: attenuate TX signal */
170
word QsigFeatures;
171
dword GenerateRingtone ;
172
dword SupplementaryServicesFeatures;
173
dword R2Dialect;
174
dword R2CasOptions;
175
dword FaxV34Options;
176
dword DisabledDspMask;
177
dword AdapterTestMask;
178
dword DspImageLength;
179
word AlertToIn20mSecTicks;
180
word ModemEyeSetup;
181
byte R2CtryLength;
182
byte CCBSRelTimer;
183
byte *PcCfgBufferFile;/* flexible parameter via file */
184
byte *PcCfgBuffer ; /* flexible parameter via multistring */
185
diva_os_dump_file_t dump_file; /* dump memory to file at lowest irq level */
186
diva_os_board_trace_t board_trace ; /* traces from the board */
187
diva_os_spin_lock_t isr_spin_lock;
188
diva_os_spin_lock_t data_spin_lock;
189
diva_os_soft_isr_t req_soft_isr;
190
diva_os_soft_isr_t isr_soft_isr;
191
diva_os_atomic_t in_dpc;
192
PBUFFER RBuffer; /* Copy of receive lookahead buffer */
193
word e_max;
194
word e_count;
195
E_INFO *e_tbl;
196
word assign; /* list of pending ASSIGNs */
197
word head; /* head of request queue */
198
word tail; /* tail of request queue */
199
ADAPTER a ; /* not a separate structure */
200
void (* out)(ADAPTER * a) ;
201
byte (* dpc)(ADAPTER * a) ;
202
byte (* tst_irq)(ADAPTER * a) ;
203
void (* clr_irq)(ADAPTER * a) ;
204
int (* load)(PISDN_ADAPTER) ;
205
int (* mapmem)(PISDN_ADAPTER) ;
206
int (* chkIrq)(PISDN_ADAPTER) ;
207
void (* disIrq)(PISDN_ADAPTER) ;
208
void (* start)(PISDN_ADAPTER) ;
209
void (* stop)(PISDN_ADAPTER) ;
210
void (* rstFnc)(PISDN_ADAPTER) ;
211
void (* trapFnc)(PISDN_ADAPTER) ;
212
dword (* DetectDsps)(PISDN_ADAPTER) ;
213
void (* os_trap_nfy_Fnc)(PISDN_ADAPTER, dword) ;
214
diva_os_isr_callback_t diva_isr_handler;
215
dword sdram_bar; /* must be 32 bit */
216
dword fpga_features;
217
volatile int pcm_pending;
218
volatile void * pcm_data;
219
diva_xdi_capi_cfg_t capi_cfg;
220
dword tasks;
221
void *dma_map;
222
int (*DivaAdapterTestProc)(PISDN_ADAPTER);
223
void *AdapterTestMemoryStart;
224
dword AdapterTestMemoryLength;
225
const byte* cfg_lib_memory_init;
226
dword cfg_lib_memory_init_length;
227
};
228
/* ---------------------------------------------------------------------
229
Entity table
230
--------------------------------------------------------------------- */
231
struct e_info_s {
232
ENTITY * e;
233
byte next; /* chaining index */
234
word assign_ref; /* assign reference */
235
};
236
/* ---------------------------------------------------------------------
237
S-cards shared ram structure for loading
238
--------------------------------------------------------------------- */
239
struct s_load {
240
byte ctrl;
241
byte card;
242
byte msize;
243
byte fill0;
244
word ebit;
245
word elocl;
246
word eloch;
247
byte reserved[20];
248
word signature;
249
byte fill[224];
250
byte b[256];
251
};
252
#define PR_RAM ((struct pr_ram *)0)
253
#define RAM ((struct dual *)0)
254
/* ---------------------------------------------------------------------
255
platform specific conversions
256
--------------------------------------------------------------------- */
257
extern void * PTR_P(ADAPTER * a, ENTITY * e, void * P);
258
extern void * PTR_X(ADAPTER * a, ENTITY * e);
259
extern void * PTR_R(ADAPTER * a, ENTITY * e);
260
extern void CALLBACK(ADAPTER * a, ENTITY * e);
261
extern void set_ram(void * * adr_ptr);
262
/* ---------------------------------------------------------------------
263
ram access functions for io mapped cards
264
--------------------------------------------------------------------- */
265
byte io_in(ADAPTER * a, void * adr);
266
word io_inw(ADAPTER * a, void * adr);
267
void io_in_buffer(ADAPTER * a, void * adr, void * P, word length);
268
void io_look_ahead(ADAPTER * a, PBUFFER * RBuffer, ENTITY * e);
269
void io_out(ADAPTER * a, void * adr, byte data);
270
void io_outw(ADAPTER * a, void * adr, word data);
271
void io_out_buffer(ADAPTER * a, void * adr, void * P, word length);
272
void io_inc(ADAPTER * a, void * adr);
273
void bri_in_buffer (PISDN_ADAPTER IoAdapter, dword Pos,
274
void *Buf, dword Len);
275
int bri_out_buffer (PISDN_ADAPTER IoAdapter, dword Pos,
276
void *Buf, dword Len, int Verify);
277
/* ---------------------------------------------------------------------
278
ram access functions for memory mapped cards
279
--------------------------------------------------------------------- */
280
byte mem_in(ADAPTER * a, void * adr);
281
word mem_inw(ADAPTER * a, void * adr);
282
void mem_in_buffer(ADAPTER * a, void * adr, void * P, word length);
283
void mem_look_ahead(ADAPTER * a, PBUFFER * RBuffer, ENTITY * e);
284
void mem_out(ADAPTER * a, void * adr, byte data);
285
void mem_outw(ADAPTER * a, void * adr, word data);
286
void mem_out_buffer(ADAPTER * a, void * adr, void * P, word length);
287
void mem_inc(ADAPTER * a, void * adr);
288
void mem_in_dw (ADAPTER *a, void *addr, dword* data, int dwords);
289
void mem_out_dw (ADAPTER *a, void *addr, const dword* data, int dwords);
290
/* ---------------------------------------------------------------------
291
functions exported by io.c
292
--------------------------------------------------------------------- */
293
extern IDI_CALL Requests[MAX_ADAPTER] ;
294
extern void DIDpcRoutine (struct _diva_os_soft_isr* psoft_isr,
295
void* context);
296
extern void request (PISDN_ADAPTER, ENTITY *) ;
297
/* ---------------------------------------------------------------------
298
trapFn helpers, used to recover debug trace from dead card
299
--------------------------------------------------------------------- */
300
typedef struct {
301
word *buf ;
302
word cnt ;
303
word out ;
304
} Xdesc ;
305
extern void dump_trap_frame (PISDN_ADAPTER IoAdapter, byte __iomem *exception) ;
306
extern void dump_xlog_buffer (PISDN_ADAPTER IoAdapter, Xdesc *xlogDesc) ;
307
/* --------------------------------------------------------------------- */
308
#endif /* } __DIVA_XDI_COMMON_IO_H_INC__ */
309
310