Add the rt linux 4.1.3-rt3 as base
[kvmfornfv.git] / kernel / drivers / isdn / hardware / eicon / io.h
diff --git a/kernel/drivers/isdn/hardware/eicon/io.h b/kernel/drivers/isdn/hardware/eicon/io.h
new file mode 100644 (file)
index 0000000..01deced
--- /dev/null
@@ -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 achievement */
+       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__ */