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 @@ + +/* + * + 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 __DIVA_XDI_COMMON_IO_H_INC__ /* { */ +#define __DIVA_XDI_COMMON_IO_H_INC__ +/* + maximum = 16 adapters + */ +#define DI_MAX_LINKS MAX_ADAPTER +#define ISDN_MAX_NUM_LEN 60 +/* -------------------------------------------------------------------------- + structure for quadro card management (obsolete for + systems that do provide per card load event) + -------------------------------------------------------------------------- */ +typedef struct { + dword Num ; + DEVICE_NAME DeviceName[4] ; + PISDN_ADAPTER QuadroAdapter[4] ; +} ADAPTER_LIST_ENTRY, *PADAPTER_LIST_ENTRY ; +/* -------------------------------------------------------------------------- + Special OS memory support structures + -------------------------------------------------------------------------- */ +#define MAX_MAPPED_ENTRIES 8 +typedef struct { + void * Address; + dword Length; +} ADAPTER_MEMORY ; +/* -------------------------------------------------------------------------- + Configuration of XDI clients carried by XDI + -------------------------------------------------------------------------- */ +#define DIVA_XDI_CAPI_CFG_1_DYNAMIC_L1_ON 0x01 +#define DIVA_XDI_CAPI_CFG_1_GROUP_POPTIMIZATION_ON 0x02 +typedef struct _diva_xdi_capi_cfg { + byte cfg_1; +} diva_xdi_capi_cfg_t; +/* -------------------------------------------------------------------------- + Main data structure kept per adapter + -------------------------------------------------------------------------- */ +struct _ISDN_ADAPTER { + void (* DIRequest)(PISDN_ADAPTER, ENTITY *) ; + int State ; /* from NT4 1.srv, a good idea, but a poor achievment */ + int Initialized ; + int RegisteredWithDidd ; + int Unavailable ; /* callback function possible? */ + int ResourcesClaimed ; + int PnpBiosConfigUsed ; + dword Logging ; + dword features ; + char ProtocolIdString[80] ; + /* + remember mapped memory areas + */ + ADAPTER_MEMORY MappedMemory[MAX_MAPPED_ENTRIES] ; + CARD_PROPERTIES Properties ; + dword cardType ; + dword protocol_id ; /* configured protocol identifier */ + char protocol_name[8] ; /* readable name of protocol */ + dword BusType ; + dword BusNumber ; + dword slotNumber ; + dword slotId ; + dword ControllerNumber ; /* for QUADRO cards only */ + PISDN_ADAPTER MultiMaster ; /* for 4-BRI card only - use MultiMaster or QuadroList */ + PADAPTER_LIST_ENTRY QuadroList ; /* for QUADRO card only */ + PDEVICE_OBJECT DeviceObject ; + dword DeviceId ; + diva_os_adapter_irq_info_t irq_info; + dword volatile IrqCount ; + int trapped ; + dword DspCodeBaseAddr ; + dword MaxDspCodeSize ; + dword downloadAddr ; + dword DspCodeBaseAddrTable[4] ; /* add. for MultiMaster */ + dword MaxDspCodeSizeTable[4] ; /* add. for MultiMaster */ + dword downloadAddrTable[4] ; /* add. for MultiMaster */ + dword MemoryBase ; + dword MemorySize ; + byte __iomem *Address ; + byte __iomem *Config ; + byte __iomem *Control ; + byte __iomem *reset ; + byte __iomem *port ; + byte __iomem *ram ; + byte __iomem *cfg ; + byte __iomem *prom ; + byte __iomem *ctlReg ; + struct pc_maint *pcm ; + diva_os_dependent_devica_name_t os_name; + byte Name[32] ; + dword serialNo ; + dword ANum ; + dword ArchiveType ; /* ARCHIVE_TYPE_NONE ..._SINGLE ..._USGEN ..._MULTI */ + char *ProtocolSuffix ; /* internal protocolfile table */ + char Archive[32] ; + char Protocol[32] ; + char AddDownload[32] ; /* Dsp- or other additional download files */ + char Oad1[ISDN_MAX_NUM_LEN] ; + char Osa1[ISDN_MAX_NUM_LEN] ; + char Oad2[ISDN_MAX_NUM_LEN] ; + char Osa2[ISDN_MAX_NUM_LEN] ; + char Spid1[ISDN_MAX_NUM_LEN] ; + char Spid2[ISDN_MAX_NUM_LEN] ; + byte nosig ; + byte BriLayer2LinkCount ; /* amount of TEI's that adapter will support in P2MP mode */ + dword Channels ; + dword tei ; + dword nt2 ; + dword TerminalCount ; + dword WatchDog ; + dword Permanent ; + dword BChMask ; /* B channel mask for unchannelized modes */ + dword StableL2 ; + dword DidLen ; + dword NoOrderCheck ; + dword ForceLaw; /* VoiceCoding - default:0, a-law: 1, my-law: 2 */ + dword SigFlags ; + dword LowChannel ; + dword NoHscx30 ; + dword ProtVersion ; + dword crc4 ; + dword L1TristateOrQsig ; /* enable Layer 1 Tristate (bit 2)Or Qsig params (bit 0,1)*/ + dword InitialDspInfo ; + dword ModemGuardTone ; + dword ModemMinSpeed ; + dword ModemMaxSpeed ; + dword ModemOptions ; + dword ModemOptions2 ; + dword ModemNegotiationMode ; + dword ModemModulationsMask ; + dword ModemTransmitLevel ; + dword FaxOptions ; + dword FaxMaxSpeed ; + dword Part68LevelLimiter ; + dword UsEktsNumCallApp ; + byte UsEktsFeatAddConf ; + byte UsEktsFeatRemoveConf ; + byte UsEktsFeatCallTransfer ; + byte UsEktsFeatMsgWaiting ; + byte QsigDialect; + byte ForceVoiceMailAlert; + byte DisableAutoSpid; + byte ModemCarrierWaitTimeSec; + byte ModemCarrierLossWaitTimeTenthSec; + byte PiafsLinkTurnaroundInFrames; + byte DiscAfterProgress; + byte AniDniLimiter[3]; + byte TxAttenuation; /* PRI/E1 only: attenuate TX signal */ + word QsigFeatures; + dword GenerateRingtone ; + dword SupplementaryServicesFeatures; + dword R2Dialect; + dword R2CasOptions; + dword FaxV34Options; + dword DisabledDspMask; + dword AdapterTestMask; + dword DspImageLength; + word AlertToIn20mSecTicks; + word ModemEyeSetup; + byte R2CtryLength; + byte CCBSRelTimer; + byte *PcCfgBufferFile;/* flexible parameter via file */ + byte *PcCfgBuffer ; /* flexible parameter via multistring */ + diva_os_dump_file_t dump_file; /* dump memory to file at lowest irq level */ + diva_os_board_trace_t board_trace ; /* traces from the board */ + diva_os_spin_lock_t isr_spin_lock; + diva_os_spin_lock_t data_spin_lock; + diva_os_soft_isr_t req_soft_isr; + diva_os_soft_isr_t isr_soft_isr; + diva_os_atomic_t in_dpc; + PBUFFER RBuffer; /* Copy of receive lookahead buffer */ + word e_max; + word e_count; + E_INFO *e_tbl; + word assign; /* list of pending ASSIGNs */ + word head; /* head of request queue */ + word tail; /* tail of request queue */ + ADAPTER a ; /* not a separate structure */ + void (* out)(ADAPTER * a) ; + byte (* dpc)(ADAPTER * a) ; + byte (* tst_irq)(ADAPTER * a) ; + void (* clr_irq)(ADAPTER * a) ; + int (* load)(PISDN_ADAPTER) ; + int (* mapmem)(PISDN_ADAPTER) ; + int (* chkIrq)(PISDN_ADAPTER) ; + void (* disIrq)(PISDN_ADAPTER) ; + void (* start)(PISDN_ADAPTER) ; + void (* stop)(PISDN_ADAPTER) ; + void (* rstFnc)(PISDN_ADAPTER) ; + void (* trapFnc)(PISDN_ADAPTER) ; + dword (* DetectDsps)(PISDN_ADAPTER) ; + void (* os_trap_nfy_Fnc)(PISDN_ADAPTER, dword) ; + diva_os_isr_callback_t diva_isr_handler; + dword sdram_bar; /* must be 32 bit */ + dword fpga_features; + volatile int pcm_pending; + volatile void * pcm_data; + diva_xdi_capi_cfg_t capi_cfg; + dword tasks; + void *dma_map; + int (*DivaAdapterTestProc)(PISDN_ADAPTER); + void *AdapterTestMemoryStart; + dword AdapterTestMemoryLength; + const byte* cfg_lib_memory_init; + dword cfg_lib_memory_init_length; +}; +/* --------------------------------------------------------------------- + Entity table + --------------------------------------------------------------------- */ +struct e_info_s { + ENTITY * e; + byte next; /* chaining index */ + word assign_ref; /* assign reference */ +}; +/* --------------------------------------------------------------------- + S-cards shared ram structure for loading + --------------------------------------------------------------------- */ +struct s_load { + byte ctrl; + byte card; + byte msize; + byte fill0; + word ebit; + word elocl; + word eloch; + byte reserved[20]; + word signature; + byte fill[224]; + byte b[256]; +}; +#define PR_RAM ((struct pr_ram *)0) +#define RAM ((struct dual *)0) +/* --------------------------------------------------------------------- + platform specific conversions + --------------------------------------------------------------------- */ +extern void * PTR_P(ADAPTER * a, ENTITY * e, void * P); +extern void * PTR_X(ADAPTER * a, ENTITY * e); +extern void * PTR_R(ADAPTER * a, ENTITY * e); +extern void CALLBACK(ADAPTER * a, ENTITY * e); +extern void set_ram(void * * adr_ptr); +/* --------------------------------------------------------------------- + ram access functions for io mapped cards + --------------------------------------------------------------------- */ +byte io_in(ADAPTER * a, void * adr); +word io_inw(ADAPTER * a, void * adr); +void io_in_buffer(ADAPTER * a, void * adr, void * P, word length); +void io_look_ahead(ADAPTER * a, PBUFFER * RBuffer, ENTITY * e); +void io_out(ADAPTER * a, void * adr, byte data); +void io_outw(ADAPTER * a, void * adr, word data); +void io_out_buffer(ADAPTER * a, void * adr, void * P, word length); +void io_inc(ADAPTER * a, void * adr); +void bri_in_buffer (PISDN_ADAPTER IoAdapter, dword Pos, + void *Buf, dword Len); +int bri_out_buffer (PISDN_ADAPTER IoAdapter, dword Pos, + void *Buf, dword Len, int Verify); +/* --------------------------------------------------------------------- + ram access functions for memory mapped cards + --------------------------------------------------------------------- */ +byte mem_in(ADAPTER * a, void * adr); +word mem_inw(ADAPTER * a, void * adr); +void mem_in_buffer(ADAPTER * a, void * adr, void * P, word length); +void mem_look_ahead(ADAPTER * a, PBUFFER * RBuffer, ENTITY * e); +void mem_out(ADAPTER * a, void * adr, byte data); +void mem_outw(ADAPTER * a, void * adr, word data); +void mem_out_buffer(ADAPTER * a, void * adr, void * P, word length); +void mem_inc(ADAPTER * a, void * adr); +void mem_in_dw (ADAPTER *a, void *addr, dword* data, int dwords); +void mem_out_dw (ADAPTER *a, void *addr, const dword* data, int dwords); +/* --------------------------------------------------------------------- + functions exported by io.c + --------------------------------------------------------------------- */ +extern IDI_CALL Requests[MAX_ADAPTER] ; +extern void DIDpcRoutine (struct _diva_os_soft_isr* psoft_isr, + void* context); +extern void request (PISDN_ADAPTER, ENTITY *) ; +/* --------------------------------------------------------------------- + trapFn helpers, used to recover debug trace from dead card + --------------------------------------------------------------------- */ +typedef struct { + word *buf ; + word cnt ; + word out ; +} Xdesc ; +extern void dump_trap_frame (PISDN_ADAPTER IoAdapter, byte __iomem *exception) ; +extern void dump_xlog_buffer (PISDN_ADAPTER IoAdapter, Xdesc *xlogDesc) ; +/* --------------------------------------------------------------------- */ +#endif /* } __DIVA_XDI_COMMON_IO_H_INC__ */ |