cregit-Linux how code gets into the kernel

Release 4.14 drivers/isdn/hardware/eicon/io.h

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

Overall Contributors

PersonTokensPropCommitsCommitProp
Armin Schindler130698.05%342.86%
Joe Perches141.05%114.29%
Al Viro100.75%114.29%
Steven Cole10.08%114.29%
Lucas De Marchi10.08%114.29%
Total1332100.00%7100.00%
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.