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