 1da177e4c3
			
		
	
	
	1da177e4c3
	
	
	
		
			
			Initial git repository build. I'm not bothering with the full history, even though we have it. We can create a separate "historical" git archive of that later if we want to, and in the meantime it's about 3.2GB when imported into git - space that would just make the early git days unnecessarily complicated, when we don't have a lot of good infrastructure for it. Let it rip!
		
			
				
	
	
		
			308 lines
		
	
	
	
		
			13 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			308 lines
		
	
	
	
		
			13 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
| 
 | |
| /*
 | |
|  *
 | |
|   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__ */
 |