Commit | Line | Data |
---|---|---|
1da177e4 LT |
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 *) ; | |
25985edc | 63 | int State ; /* from NT4 1.srv, a good idea, but a poor achievement */ |
1da177e4 LT |
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__ */ |