|  |  | 
|  | /* | 
|  | * | 
|  | 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__ */ |