patch-2.3.36 linux/drivers/telephony/ixj.h
Next file: linux/drivers/telephony/phonedev.c
Previous file: linux/drivers/telephony/ixj.c
Back to the patch index
Back to the overall index
- Lines: 975
- Date:
Wed Dec 29 17:13:59 1999
- Orig file:
v2.3.35/linux/drivers/telephony/ixj.h
- Orig date:
Wed Dec 31 16:00:00 1969
diff -u --recursive --new-file v2.3.35/linux/drivers/telephony/ixj.h linux/drivers/telephony/ixj.h
@@ -0,0 +1,974 @@
+/*
+ * ixj.h
+ *
+ * Device Driver for the Internet PhoneJACK and
+ * Internet LineJACK Telephony Cards.
+ *
+ * (c) Copyright 1999 Quicknet Technologies, Inc.
+ *
+ * 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 of the License, or (at your option) any later version.
+ *
+ * Author: Ed Okerson, <eokerson@quicknet.net>
+ *
+ * Contributors: Greg Herlein, <gherlein@quicknet.net>
+ * David W. Erhart, <derhart@quicknet.net>
+ * John Sellers, <jsellers@quicknet.net>
+ * Mike Preston, <mpreston@quicknet.net>
+ *
+ * More information about the hardware related to this driver can be found
+ * at our website: http://www.quicknet.net
+ *
+ * Fixes:
+ * Linux 2.3 port, Alan Cox
+ */
+static char ixj_h_rcsid[] = "$Id: ixj.h,v 3.4 1999/12/16 22:18:36 root Exp root $";
+
+#ifndef _I386_TYPES_H
+#include <asm/types.h>
+#endif
+
+#include <linux/ixjuser.h>
+#include <linux/phonedev.h>
+
+typedef __u16 WORD;
+typedef __u32 DWORD;
+typedef __u8 BYTE;
+typedef __u8 BOOL;
+
+#define IXJMAX 16
+
+#define TRUE 1
+#define FALSE 0
+
+#ifndef min
+#define min(a,b) (((a)<(b))?(a):(b))
+#endif
+#ifndef max
+#define max(a,b) (((a)>(b))?(a):(b))
+#endif
+
+/******************************************************************************
+*
+* This structure when unioned with the structures below makes simple byte
+* access to the registers easier.
+*
+******************************************************************************/
+typedef struct {
+ unsigned char low;
+ unsigned char high;
+} BYTES;
+
+int ixj_WriteDSPCommand(unsigned short, int board);
+
+/******************************************************************************
+*
+* This structure represents the Hardware Control Register of the CT8020/8021
+* The CT8020 is used in the Internet PhoneJACK, and the 8021 in the
+* Internet LineJACK
+*
+******************************************************************************/
+typedef struct {
+ unsigned int rxrdy:1;
+ unsigned int txrdy:1;
+ unsigned int status:1;
+ unsigned int auxstatus:1;
+ unsigned int rxdma:1;
+ unsigned int txdma:1;
+ unsigned int rxburst:1;
+ unsigned int txburst:1;
+ unsigned int dmadir:1;
+ unsigned int cont:1;
+ unsigned int irqn:1;
+ unsigned int t:5;
+} HCRBIT;
+
+typedef union {
+ HCRBIT bits;
+ BYTES bytes;
+} HCR;
+
+/******************************************************************************
+*
+* This structure represents the Hardware Status Register of the CT8020/8021
+* The CT8020 is used in the Internet PhoneJACK, and the 8021 in the
+* Internet LineJACK
+*
+******************************************************************************/
+typedef struct {
+ unsigned int controlrdy:1;
+ unsigned int auxctlrdy:1;
+ unsigned int statusrdy:1;
+ unsigned int auxstatusrdy:1;
+ unsigned int rxrdy:1;
+ unsigned int txrdy:1;
+ unsigned int restart:1;
+ unsigned int irqn:1;
+ unsigned int rxdma:1;
+ unsigned int txdma:1;
+ unsigned int cohostshutdown:1;
+ unsigned int t:5;
+} HSRBIT;
+
+typedef union {
+ HSRBIT bits;
+ BYTES bytes;
+} HSR;
+
+/******************************************************************************
+*
+* This structure represents the General Purpose IO Register of the CT8020/8021
+* The CT8020 is used in the Internet PhoneJACK, and the 8021 in the
+* Internet LineJACK
+*
+******************************************************************************/
+typedef struct {
+ unsigned int x:1;
+ unsigned int gpio1:1;
+ unsigned int gpio2:1;
+ unsigned int gpio3:1;
+ unsigned int gpio4:1;
+ unsigned int gpio5:1;
+ unsigned int gpio6:1;
+ unsigned int gpio7:1;
+ unsigned int xread:1;
+ unsigned int gpio1read:1;
+ unsigned int gpio2read:1;
+ unsigned int gpio3read:1;
+ unsigned int gpio4read:1;
+ unsigned int gpio5read:1;
+ unsigned int gpio6read:1;
+ unsigned int gpio7read:1;
+} GPIOBIT;
+
+typedef union {
+ GPIOBIT bits;
+ BYTES bytes;
+ unsigned short word;
+} GPIO;
+
+/******************************************************************************
+*
+* This structure represents the Line Monitor status response
+*
+******************************************************************************/
+typedef struct {
+ unsigned int digit:4;
+ unsigned int cpf_valid:1;
+ unsigned int dtmf_valid:1;
+ unsigned int peak:1;
+ unsigned int z:1;
+ unsigned int f0:1;
+ unsigned int f1:1;
+ unsigned int f2:1;
+ unsigned int f3:1;
+ unsigned int frame:4;
+} LMON;
+
+typedef union {
+ LMON bits;
+ BYTES bytes;
+} DTMF;
+
+typedef struct {
+ unsigned int z:7;
+ unsigned int dtmf_en:1;
+ unsigned int y:4;
+ unsigned int F3:1;
+ unsigned int F2:1;
+ unsigned int F1:1;
+ unsigned int F0:1;
+} CP;
+
+typedef union {
+ CP bits;
+ BYTES bytes;
+} CPTF;
+
+/******************************************************************************
+*
+* This structure represents the Status Control Register on the Internet
+* LineJACK
+*
+******************************************************************************/
+typedef struct {
+ unsigned int c0:1;
+ unsigned int c1:1;
+ unsigned int stereo:1;
+ unsigned int daafsyncen:1;
+ unsigned int led1:1;
+ unsigned int led2:1;
+ unsigned int led3:1;
+ unsigned int led4:1;
+} PSCRWI; // Internet LineJACK and Internet PhoneJACK Lite
+
+typedef struct {
+ unsigned int eidp:1;
+ unsigned int eisd:1;
+ unsigned int x:6;
+} PSCRWP; // Internet PhoneJACK PCI
+
+typedef union {
+ PSCRWI bits;
+ PSCRWP pcib;
+ char byte;
+} PLD_SCRW;
+
+typedef struct {
+ unsigned int c0:1;
+ unsigned int c1:1;
+ unsigned int x:1;
+ unsigned int d0ee:1;
+ unsigned int mixerbusy:1;
+ unsigned int sci:1;
+ unsigned int dspflag:1;
+ unsigned int daaflag:1;
+} PSCRRI;
+
+typedef struct {
+ unsigned int eidp:1;
+ unsigned int eisd:1;
+ unsigned int x:4;
+ unsigned int dspflag:1;
+ unsigned int det:1;
+} PSCRRP;
+
+typedef union {
+ PSCRRI bits;
+ PSCRRP pcib;
+ char byte;
+} PLD_SCRR;
+
+/******************************************************************************
+*
+* These structures represents the SLIC Control Register on the
+* Internet LineJACK
+*
+******************************************************************************/
+typedef struct {
+ unsigned int c1:1;
+ unsigned int c2:1;
+ unsigned int c3:1;
+ unsigned int b2en:1;
+ unsigned int spken:1;
+ unsigned int rly1:1;
+ unsigned int rly2:1;
+ unsigned int rly3:1;
+} PSLICWRITE;
+
+typedef struct {
+ unsigned int state:3;
+ unsigned int b2en:1;
+ unsigned int spken:1;
+ unsigned int c3:1;
+ unsigned int potspstn:1;
+ unsigned int det:1;
+} PSLICREAD;
+
+typedef struct {
+ unsigned int c1:1;
+ unsigned int c2:1;
+ unsigned int c3:1;
+ unsigned int b2en:1;
+ unsigned int e1:1;
+ unsigned int mic:1;
+ unsigned int spk:1;
+ unsigned int x:1;
+} PSLICPCI;
+
+typedef union {
+ PSLICPCI pcib;
+ PSLICWRITE bits;
+ PSLICREAD slic;
+ char byte;
+} PLD_SLICW;
+
+typedef union {
+ PSLICPCI pcib;
+ PSLICREAD bits;
+ char byte;
+} PLD_SLICR;
+
+/******************************************************************************
+*
+* These structures represents the Clock Control Register on the
+* Internet LineJACK
+*
+******************************************************************************/
+typedef struct {
+ unsigned int clk0:1;
+ unsigned int clk1:1;
+ unsigned int clk2:1;
+ unsigned int x0:1;
+ unsigned int slic_e1:1;
+ unsigned int x1:1;
+ unsigned int x2:1;
+ unsigned int x3:1;
+} PCLOCK;
+
+typedef union {
+ PCLOCK bits;
+ char byte;
+} PLD_CLOCK;
+
+/******************************************************************************
+*
+* These structures deal with the mixer on the Internet LineJACK
+*
+******************************************************************************/
+
+typedef struct {
+ unsigned short vol[10];
+ unsigned int recsrc;
+ unsigned int modcnt;
+ unsigned short micpreamp;
+} MIX;
+
+/******************************************************************************
+*
+* These structures deal with the DAA on the Internet LineJACK
+*
+******************************************************************************/
+
+typedef struct _DAA_REGS {
+ //-----------------------------------------------
+ // SOP Registers
+ //
+ BYTE bySOP;
+
+ union _SOP_REGS {
+ struct _SOP {
+ union // SOP - CR0 Register
+ {
+ BYTE reg;
+ struct _CR0_BITREGS {
+ BYTE CLK_EXT:1; // cr0[0:0]
+
+ BYTE RIP:1; // cr0[1:1]
+
+ BYTE AR:1; // cr0[2:2]
+
+ BYTE AX:1; // cr0[3:3]
+
+ BYTE FRR:1; // cr0[4:4]
+
+ BYTE FRX:1; // cr0[5:5]
+
+ BYTE IM:1; // cr0[6:6]
+
+ BYTE TH:1; // cr0[7:7]
+
+ } bitreg;
+ } cr0;
+
+ union // SOP - CR1 Register
+ {
+ BYTE reg;
+ struct _CR1_REGS {
+ BYTE RM:1; // cr1[0:0]
+
+ BYTE RMR:1; // cr1[1:1]
+
+ BYTE No_auto:1; // cr1[2:2]
+
+ BYTE Pulse:1; // cr1[3:3]
+
+ BYTE P_Tone1:1; // cr1[4:4]
+
+ BYTE P_Tone2:1; // cr1[5:5]
+
+ BYTE E_Tone1:1; // cr1[6:6]
+
+ BYTE E_Tone2:1; // cr1[7:7]
+
+ } bitreg;
+ } cr1;
+
+ union // SOP - CR2 Register
+ {
+ BYTE reg;
+ struct _CR2_REGS {
+ BYTE Call_II:1; // CR2[0:0]
+
+ BYTE Call_I:1; // CR2[1:1]
+
+ BYTE Call_en:1; // CR2[2:2]
+
+ BYTE Call_pon:1; // CR2[3:3]
+
+ BYTE IDR:1; // CR2[4:4]
+
+ BYTE COT_R:3; // CR2[5:7]
+
+ } bitreg;
+ } cr2;
+
+ union // SOP - CR3 Register
+ {
+ BYTE reg;
+ struct _CR3_REGS {
+ BYTE DHP_X:1; // CR3[0:0]
+
+ BYTE DHP_R:1; // CR3[1:1]
+
+ BYTE Cal_pctl:1; // CR3[2:2]
+
+ BYTE SEL:1; // CR3[3:3]
+
+ BYTE TestLoops:4; // CR3[4:7]
+
+ } bitreg;
+ } cr3;
+
+ union // SOP - CR4 Register
+ {
+ BYTE reg;
+ struct _CR4_REGS {
+ BYTE Fsc_en:1; // CR4[0:0]
+
+ BYTE Int_en:1; // CR4[1:1]
+
+ BYTE AGX:2; // CR4[2:3]
+
+ BYTE AGR_R:2; // CR4[4:5]
+
+ BYTE AGR_Z:2; // CR4[6:7]
+
+ } bitreg;
+ } cr4;
+
+ union // SOP - CR5 Register
+ {
+ BYTE reg;
+ struct _CR5_REGS {
+ BYTE V_0:1; // CR5[0:0]
+
+ BYTE V_1:1; // CR5[1:1]
+
+ BYTE V_2:1; // CR5[2:2]
+
+ BYTE V_3:1; // CR5[3:3]
+
+ BYTE V_4:1; // CR5[4:4]
+
+ BYTE V_5:1; // CR5[5:5]
+
+ BYTE V_6:1; // CR5[6:6]
+
+ BYTE V_7:1; // CR5[7:7]
+
+ } bitreg;
+ } cr5;
+
+ union // SOP - CR6 Register
+ {
+ BYTE reg;
+ struct _CR6_REGS {
+ BYTE reserved:8; // CR6[0:7]
+
+ } bitreg;
+ } cr6;
+
+ union // SOP - CR7 Register
+ {
+ BYTE reg;
+ struct _CR7_REGS {
+ BYTE reserved:8; // CR7[0:7]
+
+ } bitreg;
+ } cr7;
+ } SOP;
+
+ BYTE ByteRegs[sizeof(struct _SOP)];
+
+ } SOP_REGS;
+
+ // DAA_REGS.SOP_REGS.SOP.CR5.reg
+ // DAA_REGS.SOP_REGS.SOP.CR5.bitreg
+ // DAA_REGS.SOP_REGS.SOP.CR5.bitreg.V_2
+ // DAA_REGS.SOP_REGS.ByteRegs[5]
+
+ //-----------------------------------------------
+ // XOP Registers
+ //
+ BYTE byXOP;
+
+ union _XOP_REGS {
+ struct _XOP {
+ union // XOP - XR0 Register - Read values
+ {
+ BYTE reg;
+ struct _XR0_BITREGS {
+ BYTE SI_0:1; // XR0[0:0] - Read
+
+ BYTE SI_1:1; // XR0[1:1] - Read
+
+ BYTE VDD_OK:1; // XR0[2:2] - Read
+
+ BYTE Caller_ID:1; // XR0[3:3] - Read
+
+ BYTE RING:1; // XR0[4:4] - Read
+
+ BYTE Cadence:1; // XR0[5:5] - Read
+
+ BYTE Wake_up:1; // XR0[6:6] - Read
+
+ BYTE unused:1; // XR0[7:7] - Read
+
+ } bitreg;
+ } xr0;
+
+ union // XOP - XR1 Register
+ {
+ BYTE reg;
+ struct _XR1_BITREGS {
+ BYTE M_SI_0:1; // XR1[0:0]
+
+ BYTE M_SI_1:1; // XR1[1:1]
+
+ BYTE M_VDD_OK:1; // XR1[2:2]
+
+ BYTE M_Caller_ID:1; // XR1[3:3]
+
+ BYTE M_RING:1; // XR1[4:4]
+
+ BYTE M_Cadence:1; // XR1[5:5]
+
+ BYTE M_Wake_up:1; // XR1[6:6]
+
+ BYTE unused:1; // XR1[7:7]
+
+ } bitreg;
+ } xr1;
+
+ union // XOP - XR2 Register
+ {
+ BYTE reg;
+ struct _XR2_BITREGS {
+ BYTE CTO0:1; // XR2[0:0]
+
+ BYTE CTO1:1; // XR2[1:1]
+
+ BYTE CTO2:1; // XR2[2:2]
+
+ BYTE CTO3:1; // XR2[3:3]
+
+ BYTE CTO4:1; // XR2[4:4]
+
+ BYTE CTO5:1; // XR2[5:5]
+
+ BYTE CTO6:1; // XR2[6:6]
+
+ BYTE CTO7:1; // XR2[7:7]
+
+ } bitreg;
+ } xr2;
+
+ union // XOP - XR3 Register
+ {
+ BYTE reg;
+ struct _XR3_BITREGS {
+ BYTE DCR0:1; // XR3[0:0]
+
+ BYTE DCR1:1; // XR3[1:1]
+
+ BYTE DCI:1; // XR3[2:2]
+
+ BYTE DCU0:1; // XR3[3:3]
+
+ BYTE DCU1:1; // XR3[4:4]
+
+ BYTE B_off:1; // XR3[5:5]
+
+ BYTE AGB0:1; // XR3[6:6]
+
+ BYTE AGB1:1; // XR3[7:7]
+
+ } bitreg;
+ } xr3;
+
+ union // XOP - XR4 Register
+ {
+ BYTE reg;
+ struct _XR4_BITREGS {
+ BYTE C_0:1; // XR4[0:0]
+
+ BYTE C_1:1; // XR4[1:1]
+
+ BYTE C_2:1; // XR4[2:2]
+
+ BYTE C_3:1; // XR4[3:3]
+
+ BYTE C_4:1; // XR4[4:4]
+
+ BYTE C_5:1; // XR4[5:5]
+
+ BYTE C_6:1; // XR4[6:6]
+
+ BYTE C_7:1; // XR4[7:7]
+
+ } bitreg;
+ } xr4;
+
+ union // XOP - XR5 Register
+ {
+ BYTE reg;
+ struct _XR5_BITREGS {
+ BYTE T_0:1; // XR5[0:0]
+
+ BYTE T_1:1; // XR5[1:1]
+
+ BYTE T_2:1; // XR5[2:2]
+
+ BYTE T_3:1; // XR5[3:3]
+
+ BYTE T_4:1; // XR5[4:4]
+
+ BYTE T_5:1; // XR5[5:5]
+
+ BYTE T_6:1; // XR5[6:6]
+
+ BYTE T_7:1; // XR5[7:7]
+
+ } bitreg;
+ } xr5;
+
+ union // XOP - XR6 Register - Read Values
+ {
+ BYTE reg;
+ struct _XR6_BITREGS {
+ BYTE CPS0:1; // XR6[0:0]
+
+ BYTE CPS1:1; // XR6[1:1]
+
+ BYTE unused1:2; // XR6[2:3]
+
+ BYTE CLK_OFF:1; // XR6[4:4]
+
+ BYTE unused2:3; // XR6[5:7]
+
+ } bitreg;
+ } xr6;
+
+ union // XOP - XR7 Register
+ {
+ BYTE reg;
+ struct _XR7_BITREGS {
+ BYTE unused1:1; // XR7[0:0]
+
+ BYTE Vdd0:1; // XR7[1:1]
+
+ BYTE Vdd1:1; // XR7[2:2]
+
+ BYTE unused2:5; // XR7[3:7]
+
+ } bitreg;
+ } xr7;
+ } XOP;
+
+ BYTE ByteRegs[sizeof(struct _XOP)];
+
+ } XOP_REGS;
+
+ // DAA_REGS.XOP_REGS.XOP.XR7.reg
+ // DAA_REGS.XOP_REGS.XOP.XR7.bitreg
+ // DAA_REGS.XOP_REGS.XOP.XR7.bitreg.Vdd0
+ // DAA_REGS.XOP_REGS.ByteRegs[7]
+
+ //-----------------------------------------------
+ // COP Registers
+ //
+ BYTE byCOP;
+
+ union _COP_REGS {
+ struct _COP {
+ BYTE THFilterCoeff_1[8]; // COP - TH Filter Coefficients, CODE=0, Part 1
+
+ BYTE THFilterCoeff_2[8]; // COP - TH Filter Coefficients, CODE=1, Part 2
+
+ BYTE THFilterCoeff_3[8]; // COP - TH Filter Coefficients, CODE=2, Part 3
+
+ BYTE RingerImpendance_1[8]; // COP - Ringer Impendance Coefficients, CODE=3, Part 1
+
+ BYTE IMFilterCoeff_1[8]; // COP - IM Filter Coefficients, CODE=4, Part 1
+
+ BYTE IMFilterCoeff_2[8]; // COP - IM Filter Coefficients, CODE=5, Part 2
+
+ BYTE RingerImpendance_2[8]; // COP - Ringer Impendance Coefficients, CODE=6, Part 2
+
+ BYTE FRRFilterCoeff[8]; // COP - FRR Filter Coefficients, CODE=7
+
+ BYTE FRXFilterCoeff[8]; // COP - FRX Filter Coefficients, CODE=8
+
+ BYTE ARFilterCoeff[4]; // COP - AR Filter Coefficients, CODE=9
+
+ BYTE AXFilterCoeff[4]; // COP - AX Filter Coefficients, CODE=10
+
+ BYTE Tone1Coeff[4]; // COP - Tone1 Coefficients, CODE=11
+
+ BYTE Tone2Coeff[4]; // COP - Tone2 Coefficients, CODE=12
+
+ BYTE LevelmeteringRinging[4]; // COP - Levelmetering Ringing, CODE=13
+
+ BYTE CallerID1stTone[8]; // COP - Caller ID 1st Tone, CODE=14
+
+ BYTE CallerID2ndTone[8]; // COP - Caller ID 2nd Tone, CODE=15
+
+ } COP;
+
+ BYTE ByteRegs[sizeof(struct _COP)];
+
+ } COP_REGS;
+
+ // DAA_REGS.COP_REGS.COP.XR7.Tone1Coeff[3]
+ // DAA_REGS.COP_REGS.COP.XR7.bitreg
+ // DAA_REGS.COP_REGS.COP.XR7.bitreg.Vdd0
+ // DAA_REGS.COP_REGS.ByteRegs[57]
+
+ //-----------------------------------------------
+ // CAO Registers
+ //
+ BYTE byCAO;
+
+ union _CAO_REGS {
+ struct _CAO {
+ BYTE CallerID[512]; // CAO - Caller ID Bytes
+
+ } CAO;
+
+ BYTE ByteRegs[sizeof(struct _CAO)];
+ } CAO_REGS;
+
+ union // XOP - XR0 Register - Write values
+ {
+ BYTE reg;
+ struct _XR0_BITREGSW {
+ BYTE SO_0:1; // XR1[0:0] - Write
+
+ BYTE SO_1:1; // XR1[1:1] - Write
+
+ BYTE SO_2:1; // XR1[2:2] - Write
+
+ BYTE unused:5; // XR1[3:7] - Write
+
+ } bitreg;
+ } XOP_xr0_W;
+
+ union // XOP - XR6 Register - Write values
+ {
+ BYTE reg;
+ struct _XR6_BITREGSW {
+ BYTE unused1:4; // XR6[0:3]
+
+ BYTE CLK_OFF:1; // XR6[4:4]
+
+ BYTE unused2:3; // XR6[5:7]
+
+ } bitreg;
+ } XOP_xr6_W;
+
+} DAA_REGS;
+
+#define ALISDAA_ID_BYTE 0x81
+#define ALISDAA_CALLERID_SIZE 512
+
+//------------------------------
+//
+// Misc definitions
+//
+
+// Power Up Operation
+#define SOP_PU_SLEEP 0
+#define SOP_PU_RINGING 1
+#define SOP_PU_CONVERSATION 2
+#define SOP_PU_PULSEDIALING 3
+
+#define ALISDAA_CALLERID_SIZE 512
+
+#define PLAYBACK_MODE_COMPRESSED 0 // Selects: Compressed modes, TrueSpeech 8.5-4.1, G.723.1, G.722, G.728, G.729
+#define PLAYBACK_MODE_TRUESPEECH_V40 0 // Selects: TrueSpeech 8.5, 6.3, 5.3, 4.8 or 4.1 Kbps
+#define PLAYBACK_MODE_TRUESPEECH 8 // Selects: TrueSpeech 8.5, 6.3, 5.3, 4.8 or 4.1 Kbps Version 5.1
+#define PLAYBACK_MODE_ULAW 2 // Selects: 64 Kbit/sec MuA-law PCM
+#define PLAYBACK_MODE_ALAW 10 // Selects: 64 Kbit/sec A-law PCM
+#define PLAYBACK_MODE_16LINEAR 6 // Selects: 128 Kbit/sec 16-bit linear
+#define PLAYBACK_MODE_8LINEAR 4 // Selects: 64 Kbit/sec 8-bit signed linear
+#define PLAYBACK_MODE_8LINEAR_WSS 5 // Selects: 64 Kbit/sec WSS 8-bit unsigned linear
+
+#define RECORD_MODE_COMPRESSED 0 // Selects: Compressed modes, TrueSpeech 8.5-4.1, G.723.1, G.722, G.728, G.729
+#define RECORD_MODE_TRUESPEECH 0 // Selects: TrueSpeech 8.5, 6.3, 5.3, 4.8 or 4.1 Kbps
+#define RECORD_MODE_ULAW 4 // Selects: 64 Kbit/sec Mu-law PCM
+#define RECORD_MODE_ALAW 12 // Selects: 64 Kbit/sec A-law PCM
+#define RECORD_MODE_16LINEAR 5 // Selects: 128 Kbit/sec 16-bit linear
+#define RECORD_MODE_8LINEAR 6 // Selects: 64 Kbit/sec 8-bit signed linear
+#define RECORD_MODE_8LINEAR_WSS 7 // Selects: 64 Kbit/sec WSS 8-bit unsigned linear
+
+enum SLIC_STATES {
+ PLD_SLIC_STATE_OC = 0,
+ PLD_SLIC_STATE_RINGING,
+ PLD_SLIC_STATE_ACTIVE,
+ PLD_SLIC_STATE_OHT,
+ PLD_SLIC_STATE_TIPOPEN,
+ PLD_SLIC_STATE_STANDBY,
+ PLD_SLIC_STATE_APR,
+ PLD_SLIC_STATE_OHTPR
+};
+
+enum SCI_CONTROL {
+ SCI_End = 0,
+ SCI_Enable_DAA,
+ SCI_Enable_Mixer,
+ SCI_Enable_EEPROM
+};
+
+enum Mode {
+ T63, T53, T48, T40
+};
+enum Dir {
+ V3_TO_V4, V4_TO_V3, V4_TO_V5, V5_TO_V4
+};
+
+typedef struct Proc_Info_Tag {
+ enum Mode convert_mode;
+ enum Dir convert_dir;
+ int Prev_Frame_Type;
+ int Current_Frame_Type;
+} Proc_Info_Type;
+
+enum PREVAL {
+ NORMAL = 0,
+ NOPOST,
+ POSTONLY,
+ PREERROR
+};
+
+enum IXJ_EXTENSIONS {
+ G729LOADER = 0,
+ TS85LOADER,
+ PRE_READ,
+ POST_READ,
+ PRE_WRITE,
+ POST_WRITE,
+ PRE_IOCTL,
+ POST_IOCTL
+};
+
+typedef struct {
+ unsigned int busytone:1;
+ unsigned int dialtone:1;
+ unsigned int ringback:1;
+ unsigned int ringing:1;
+ unsigned int cringing:1;
+ unsigned int play_first_frame:1;
+ unsigned int pstn_present:1;
+ unsigned int pstn_ringing:1;
+ unsigned int pots_correct:1;
+ unsigned int pots_pstn:1;
+ unsigned int g729_loaded:1;
+ unsigned int ts85_loaded:1;
+ unsigned int dtmf_oob:1; // DTMF Out-Of-Band
+
+} IXJ_FLAGS;
+
+/******************************************************************************
+*
+* This structure represents the Internet PhoneJACK and Internet LineJACK
+*
+******************************************************************************/
+
+typedef struct {
+ struct phone_device p;
+ unsigned int board;
+ unsigned int DSPbase;
+ unsigned int XILINXbase;
+ unsigned int serial;
+ struct phone_capability caplist[30];
+ unsigned int caps;
+ struct pci_dev *dev;
+ unsigned int cardtype;
+ unsigned int rec_codec;
+ char rec_mode;
+ unsigned int play_codec;
+ char play_mode;
+ IXJ_FLAGS flags;
+ unsigned int rec_frame_size;
+ unsigned int play_frame_size;
+ int aec_level;
+ int readers, writers;
+ wait_queue_head_t poll_q;
+ wait_queue_head_t read_q;
+ char *read_buffer, *read_buffer_end;
+ char *read_convert_buffer;
+ unsigned int read_buffer_size;
+ unsigned int read_buffer_ready;
+ wait_queue_head_t write_q;
+ char *write_buffer, *write_buffer_end;
+ char *write_convert_buffer;
+ unsigned int write_buffer_size;
+ unsigned int write_buffers_empty;
+ unsigned long drybuffer;
+ char *write_buffer_rp, *write_buffer_wp;
+ char dtmfbuffer[80];
+ char dtmf_current;
+ int dtmf_wp, dtmf_rp, dtmf_state, dtmf_proc;
+ int tone_off_time, tone_on_time;
+ struct fasync_struct *async_queue;
+ unsigned long tone_start_jif;
+ char tone_index;
+ char tone_state;
+ char maxrings;
+ IXJ_CADENCE *cadence_t;
+ int tone_cadence_state;
+ DTMF dtmf;
+ CPTF cptf;
+ BYTES dsp;
+ BYTES ver;
+ BYTES scr;
+ BYTES ssr;
+ BYTES baseframe;
+ HSR hsr;
+ GPIO gpio;
+ PLD_SCRR pld_scrr;
+ PLD_SCRW pld_scrw;
+ PLD_SLICW pld_slicw;
+ PLD_SLICR pld_slicr;
+ PLD_CLOCK pld_clock;
+ MIX mix;
+ unsigned short ring_cadence;
+ int ring_cadence_t;
+ unsigned long ring_cadence_jif;
+ int intercom;
+ int m_hook;
+ int r_hook;
+ char pstn_envelope;
+ char pstn_cid_intr;
+ unsigned pstn_cid_recieved;
+ IXJ_CID cid;
+ unsigned long pstn_ring_start;
+ unsigned long pstn_winkstart;
+ unsigned int winktime;
+ char port;
+ union telephony_exception ex;
+ char daa_mode;
+ unsigned long pstn_sleeptil;
+ DAA_REGS m_DAAShadowRegs;
+ Proc_Info_Type Info_read;
+ Proc_Info_Type Info_write;
+ unsigned short frame_count;
+ unsigned int filter_cadence;
+ unsigned int filter_hist[4];
+ unsigned short proc_load;
+ unsigned long framesread;
+ unsigned long frameswritten;
+ unsigned long read_wait;
+ unsigned long write_wait;
+ unsigned long timerchecks;
+ unsigned long txreadycheck;
+ unsigned long rxreadycheck;
+} IXJ;
+
+typedef int (*IXJ_REGFUNC) (IXJ * j, unsigned long arg);
+
+int ixj_register(int index, IXJ_REGFUNC regfunc);
+int ixj_unregister(int index);
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)