diff options
Diffstat (limited to 'drivers/isdn/hardware/eicon/io.h')
-rw-r--r-- | drivers/isdn/hardware/eicon/io.h | 308 |
1 files changed, 308 insertions, 0 deletions
diff --git a/drivers/isdn/hardware/eicon/io.h b/drivers/isdn/hardware/eicon/io.h new file mode 100644 index 000000000000..0c6c650d76bb --- /dev/null +++ b/drivers/isdn/hardware/eicon/io.h | |||
@@ -0,0 +1,308 @@ | |||
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 achievment */ | ||
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__ */ | ||