summaryrefslogtreecommitdiffstats
path: root/kernel/drivers/isdn/hardware/eicon/io.h
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/drivers/isdn/hardware/eicon/io.h')
-rw-r--r--kernel/drivers/isdn/hardware/eicon/io.h308
1 files changed, 308 insertions, 0 deletions
diff --git a/kernel/drivers/isdn/hardware/eicon/io.h b/kernel/drivers/isdn/hardware/eicon/io.h
new file mode 100644
index 000000000..01deced18
--- /dev/null
+++ b/kernel/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 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__ */