mirror of
				https://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson
				synced 2025-10-30 05:11:01 +00:00 
			
		
		
		
	 e13df2c58f
			
		
	
	
		e13df2c58f
		
	
	
	
	
		
			
			Convert:
BOOL  -> bool
FALSE -> false
TRUE  -> true
Change a variable ('mContinue') to boolean from char, since it is used
as boolean.
Signed-off-by: Richard Knutsson <ricknu-0@student.ltu.se>
Acked-by: Randy Dunlap <randy.dunlap@oracle.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
		
	
			
		
			
				
	
	
		
			1323 lines
		
	
	
		
			29 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			1323 lines
		
	
	
		
			29 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /******************************************************************************
 | |
|  *    ixj.h
 | |
|  *
 | |
|  *
 | |
|  * Device Driver for Quicknet Technologies, Inc.'s Telephony cards
 | |
|  * including the Internet PhoneJACK, Internet PhoneJACK Lite,
 | |
|  * Internet PhoneJACK PCI, Internet LineJACK, Internet PhoneCARD and
 | |
|  * SmartCABLE
 | |
|  *
 | |
|  *    (c) Copyright 1999-2001  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:
 | |
|  *
 | |
|  * IN NO EVENT SHALL QUICKNET TECHNOLOGIES, INC. BE LIABLE TO ANY PARTY FOR
 | |
|  * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT
 | |
|  * OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF QUICKNET
 | |
|  * TECHNOLOGIES, INC.HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | |
|  *
 | |
|  * QUICKNET TECHNOLOGIES, INC. SPECIFICALLY DISCLAIMS ANY WARRANTIES,
 | |
|  * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
 | |
|  * AND FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS
 | |
|  * ON AN "AS IS" BASIS, AND QUICKNET TECHNOLOGIES, INC. HAS NO OBLIGATION 
 | |
|  * TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
 | |
|  *
 | |
|  *****************************************************************************/
 | |
| #define IXJ_VERSION 3031
 | |
| 
 | |
| #include <linux/types.h>
 | |
| 
 | |
| #include <linux/ixjuser.h>
 | |
| #include <linux/phonedev.h>
 | |
| 
 | |
| typedef __u16 WORD;
 | |
| typedef __u32 DWORD;
 | |
| typedef __u8 BYTE;
 | |
| 
 | |
| #ifndef IXJMAX
 | |
| #define IXJMAX 16
 | |
| #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;
 | |
| 
 | |
| typedef union {
 | |
|         BYTES bytes;
 | |
|         short word;
 | |
| } IXJ_WORD;
 | |
| 
 | |
| typedef struct{
 | |
| 	unsigned int b0:1;
 | |
| 	unsigned int b1:1;
 | |
| 	unsigned int b2:1;
 | |
| 	unsigned int b3:1;
 | |
| 	unsigned int b4:1;
 | |
| 	unsigned int b5:1;
 | |
| 	unsigned int b6:1;
 | |
| 	unsigned int b7:1;
 | |
| } IXJ_CBITS;
 | |
| 
 | |
| typedef union{
 | |
| 	IXJ_CBITS cbits;
 | |
| 	  char  cbyte;
 | |
| } IXJ_CBYTE;
 | |
| 
 | |
| /******************************************************************************
 | |
| *
 | |
| *  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 control logic on the Internet PhoneCARD
 | |
| *
 | |
| ******************************************************************************/
 | |
| typedef struct {
 | |
| 	unsigned int x0:4;	/* unused bits */
 | |
| 
 | |
| 	unsigned int ed:1;	/* Event Detect */
 | |
| 
 | |
| 	unsigned int drf:1;	/* SmartCABLE Removal Flag 1=no cable */
 | |
| 
 | |
| 	unsigned int dspf:1;	/* DSP Flag 1=DSP Ready */
 | |
| 
 | |
| 	unsigned int crr:1;	/* Control Register Ready */
 | |
| 
 | |
| } COMMAND_REG1;
 | |
| 
 | |
| typedef union {
 | |
| 	COMMAND_REG1 bits;
 | |
| 	unsigned char byte;
 | |
| } PCMCIA_CR1;
 | |
| 
 | |
| typedef struct {
 | |
| 	unsigned int x0:4;	/* unused bits */
 | |
| 
 | |
| 	unsigned int rstc:1;	/* SmartCABLE Reset */
 | |
| 
 | |
| 	unsigned int pwr:1;	/* SmartCABLE Power */
 | |
| 
 | |
| 	unsigned int x1:2;	/* unused bits */
 | |
| 
 | |
| } COMMAND_REG2;
 | |
| 
 | |
| typedef union {
 | |
| 	COMMAND_REG2 bits;
 | |
| 	unsigned char byte;
 | |
| } PCMCIA_CR2;
 | |
| 
 | |
| typedef struct {
 | |
| 	unsigned int addr:5;	/* R/W SmartCABLE Register Address */
 | |
| 
 | |
| 	unsigned int rw:1;	/* Read / Write flag */
 | |
| 
 | |
| 	unsigned int dev:2;	/* 2 bit SmartCABLE Device Address */
 | |
| 
 | |
| } CONTROL_REG;
 | |
| 
 | |
| typedef union {
 | |
| 	CONTROL_REG bits;
 | |
| 	unsigned char byte;
 | |
| } PCMCIA_SCCR;
 | |
| 
 | |
| typedef struct {
 | |
| 	unsigned int hsw:1;
 | |
| 	unsigned int det:1;
 | |
| 	unsigned int led2:1;
 | |
| 	unsigned int led1:1;
 | |
| 	unsigned int ring1:1;
 | |
| 	unsigned int ring0:1;
 | |
| 	unsigned int x:1;
 | |
| 	unsigned int powerdown:1;
 | |
| } PCMCIA_SLIC_REG;
 | |
| 
 | |
| typedef union {
 | |
| 	PCMCIA_SLIC_REG bits;
 | |
| 	unsigned char byte;
 | |
| } PCMCIA_SLIC;
 | |
| 
 | |
| typedef struct {
 | |
| 	unsigned int cpd:1;	/* Chip Power Down */
 | |
| 
 | |
| 	unsigned int mpd:1;	/* MIC Bias Power Down */
 | |
| 
 | |
| 	unsigned int hpd:1;	/* Handset Drive Power Down */
 | |
| 
 | |
| 	unsigned int lpd:1;	/* Line Drive Power Down */
 | |
| 
 | |
| 	unsigned int spd:1;	/* Speaker Drive Power Down */
 | |
| 
 | |
| 	unsigned int x:2;	/* unused bits */
 | |
| 
 | |
| 	unsigned int sr:1;	/* Software Reset */
 | |
| 
 | |
| } Si3CONTROL1;
 | |
| 
 | |
| typedef union {
 | |
| 	Si3CONTROL1 bits;
 | |
| 	unsigned char byte;
 | |
| } Si3C1;
 | |
| 
 | |
| typedef struct {
 | |
| 	unsigned int al:1;	/* Analog Loopback DAC analog -> ADC analog */
 | |
| 
 | |
| 	unsigned int dl2:1;	/* Digital Loopback DAC -> ADC one bit */
 | |
| 
 | |
| 	unsigned int dl1:1;	/* Digital Loopback ADC -> DAC one bit */
 | |
| 
 | |
| 	unsigned int pll:1;	/* 1 = div 10, 0 = div 5 */
 | |
| 
 | |
| 	unsigned int hpd:1;	/* HPF disable */
 | |
| 
 | |
| 	unsigned int x:3;	/* unused bits */
 | |
| 
 | |
| } Si3CONTROL2;
 | |
| 
 | |
| typedef union {
 | |
| 	Si3CONTROL2 bits;
 | |
| 	unsigned char byte;
 | |
| } Si3C2;
 | |
| 
 | |
| typedef struct {
 | |
| 	unsigned int iir:1;	/* 1 enables IIR, 0 enables FIR */
 | |
| 
 | |
| 	unsigned int him:1;	/* Handset Input Mute */
 | |
| 
 | |
| 	unsigned int mcm:1;	/* MIC In Mute */
 | |
| 
 | |
| 	unsigned int mcg:2;	/* MIC In Gain */
 | |
| 
 | |
| 	unsigned int lim:1;	/* Line In Mute */
 | |
| 
 | |
| 	unsigned int lig:2;	/* Line In Gain */
 | |
| 
 | |
| } Si3RXGAIN;
 | |
| 
 | |
| typedef union {
 | |
| 	Si3RXGAIN bits;
 | |
| 	unsigned char byte;
 | |
| } Si3RXG;
 | |
| 
 | |
| typedef struct {
 | |
| 	unsigned int hom:1;	/* Handset Out Mute */
 | |
| 
 | |
| 	unsigned int lom:1;	/* Line Out Mute */
 | |
| 
 | |
| 	unsigned int rxg:5;	/* RX PGA Gain */
 | |
| 
 | |
| 	unsigned int x:1;	/* unused bit */
 | |
| 
 | |
| } Si3ADCVOLUME;
 | |
| 
 | |
| typedef union {
 | |
| 	Si3ADCVOLUME bits;
 | |
| 	unsigned char byte;
 | |
| } Si3ADC;
 | |
| 
 | |
| typedef struct {
 | |
| 	unsigned int srm:1;	/* Speaker Right Mute */
 | |
| 
 | |
| 	unsigned int slm:1;	/* Speaker Left Mute */
 | |
| 
 | |
| 	unsigned int txg:5;	/* TX PGA Gain */
 | |
| 
 | |
| 	unsigned int x:1;	/* unused bit */
 | |
| 
 | |
| } Si3DACVOLUME;
 | |
| 
 | |
| typedef union {
 | |
| 	Si3DACVOLUME bits;
 | |
| 	unsigned char byte;
 | |
| } Si3DAC;
 | |
| 
 | |
| typedef struct {
 | |
| 	unsigned int x:5;	/* unused bit */
 | |
| 
 | |
| 	unsigned int losc:1;	/* Line Out Short Circuit */
 | |
| 
 | |
| 	unsigned int srsc:1;	/* Speaker Right Short Circuit */
 | |
| 
 | |
| 	unsigned int slsc:1;	/* Speaker Left Short Circuit */
 | |
| 
 | |
| } Si3STATUSREPORT;
 | |
| 
 | |
| typedef union {
 | |
| 	Si3STATUSREPORT bits;
 | |
| 	unsigned char byte;
 | |
| } Si3STAT;
 | |
| 
 | |
| typedef struct {
 | |
| 	unsigned int sot:2;	/* Speaker Out Attenuation */
 | |
| 
 | |
| 	unsigned int lot:2;	/* Line Out Attenuation */
 | |
| 
 | |
| 	unsigned int x:4;	/* unused bits */
 | |
| 
 | |
| } Si3ANALOGATTN;
 | |
| 
 | |
| typedef union {
 | |
| 	Si3ANALOGATTN bits;
 | |
| 	unsigned char byte;
 | |
| } Si3AATT;
 | |
| 
 | |
| /******************************************************************************
 | |
| *
 | |
| *  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	XOPXR0/* 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 RMR: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 SOP_PU_RESET    4
 | |
| 
 | |
| #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 {
 | |
| 	char enable;
 | |
| 	char en_filter;
 | |
| 	unsigned int filter;
 | |
| 	unsigned int state;	/* State 0 when cadence has not started. */
 | |
| 
 | |
| 	unsigned int on1;	/* State 1 */
 | |
| 
 | |
| 	unsigned long on1min;	/* State 1 - 10% + jiffies */
 | |
|  	unsigned long on1dot;	/* State 1 + jiffies */
 | |
| 
 | |
| 	unsigned long on1max;	/* State 1 + 10% + jiffies */
 | |
| 
 | |
| 	unsigned int off1;	/* State 2 */
 | |
| 
 | |
| 	unsigned long off1min;
 | |
|  	unsigned long off1dot;	/* State 2 + jiffies */
 | |
| 	unsigned long off1max;
 | |
| 	unsigned int on2;	/* State 3 */
 | |
| 
 | |
| 	unsigned long on2min;
 | |
| 	unsigned long on2dot;
 | |
| 	unsigned long on2max;
 | |
| 	unsigned int off2;	/* State 4 */
 | |
| 
 | |
| 	unsigned long off2min;
 | |
|  	unsigned long off2dot;	/* State 4 + jiffies */
 | |
| 	unsigned long off2max;
 | |
| 	unsigned int on3;	/* State 5 */
 | |
| 
 | |
| 	unsigned long on3min;
 | |
| 	unsigned long on3dot;
 | |
| 	unsigned long on3max;
 | |
| 	unsigned int off3;	/* State 6 */
 | |
| 
 | |
| 	unsigned long off3min;
 | |
|  	unsigned long off3dot;	/* State 6 + jiffies */
 | |
| 	unsigned long off3max;
 | |
| } IXJ_CADENCE_F;
 | |
| 
 | |
| typedef struct {
 | |
| 	unsigned int busytone:1;
 | |
| 	unsigned int dialtone:1;
 | |
| 	unsigned int ringback:1;
 | |
| 	unsigned int ringing:1;
 | |
| 	unsigned int playing:1;
 | |
| 	unsigned int recording: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 */
 | |
| 
 | |
| 	unsigned int pcmciascp:1;	/* SmartCABLE Present */
 | |
| 
 | |
| 	unsigned int pcmciasct:2;	/* SmartCABLE Type */
 | |
| 
 | |
| 	unsigned int pcmciastate:3;	/* SmartCABLE Init State */
 | |
| 
 | |
| 	unsigned int inwrite:1;	/* Currently writing */
 | |
| 
 | |
| 	unsigned int inread:1;	/* Currently reading */
 | |
| 
 | |
| 	unsigned int incheck:1;	/* Currently checking the SmartCABLE */
 | |
| 
 | |
| 	unsigned int cidplay:1; /* Currently playing Caller ID */
 | |
| 
 | |
| 	unsigned int cidring:1; /* This is the ring for Caller ID */
 | |
| 
 | |
| 	unsigned int cidsent:1; /* Caller ID has been sent */
 | |
| 
 | |
| 	unsigned int cidcw_ack:1; /* Caller ID CW ACK (from CPE) */
 | |
| 	unsigned int firstring:1; /* First ring cadence is complete */
 | |
| 	unsigned int pstncheck:1;	/* Currently checking the PSTN Line */
 | |
| 	unsigned int pstn_rmr:1;
 | |
| 	unsigned int x:3;	/* unsed bits */
 | |
| 
 | |
| } IXJ_FLAGS;
 | |
| 
 | |
| /******************************************************************************
 | |
| *
 | |
| *  This structure holds the state of all of the Quicknet cards
 | |
| *
 | |
| ******************************************************************************/
 | |
| 
 | |
| typedef struct {
 | |
| 	int elements_used;
 | |
| 	IXJ_CADENCE_TERM termination;
 | |
| 	IXJ_CADENCE_ELEMENT *ce;
 | |
| } ixj_cadence;
 | |
| 
 | |
| typedef struct {
 | |
| 	struct phone_device p;
 | |
| 	struct timer_list timer;
 | |
| 	unsigned int board;
 | |
| 	unsigned int DSPbase;
 | |
| 	unsigned int XILINXbase;
 | |
| 	unsigned int serial;
 | |
| 	atomic_t DSPWrite;
 | |
| 	struct phone_capability caplist[30];
 | |
| 	unsigned int caps;
 | |
| 	struct pnp_dev *dev;
 | |
| 	unsigned int cardtype;
 | |
| 	unsigned int rec_codec;
 | |
| 	unsigned int cid_rec_codec;
 | |
| 	unsigned int cid_rec_volume;
 | |
| 	unsigned char cid_rec_flag;
 | |
| 	signed char rec_mode;
 | |
| 	unsigned int play_codec;
 | |
| 	unsigned int cid_play_codec;
 | |
| 	unsigned int cid_play_volume;
 | |
| 	unsigned char cid_play_flag;
 | |
| 	signed char play_mode;
 | |
| 	IXJ_FLAGS flags;
 | |
| 	unsigned long busyflags;
 | |
| 	unsigned int rec_frame_size;
 | |
| 	unsigned int play_frame_size;
 | |
| 	unsigned int cid_play_frame_size;
 | |
| 	unsigned int cid_base_frame_size;
 | |
| 	unsigned long cidcw_wait;
 | |
| 	int aec_level;
 | |
| 	int cid_play_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;
 | |
| 	size_t read_buffer_size;
 | |
| 	unsigned int read_buffer_ready;
 | |
|         wait_queue_head_t write_q;
 | |
| 	char *write_buffer, *write_buffer_end;
 | |
| 	char *write_convert_buffer;
 | |
| 	size_t 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;
 | |
| 	ixj_cadence *cadence_r;
 | |
| 	int tone_cadence_state;
 | |
| 	IXJ_CADENCE_F cadence_f[6];
 | |
| 	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;
 | |
| 	PCMCIA_CR1 pccr1;
 | |
| 	PCMCIA_CR2 pccr2;
 | |
| 	PCMCIA_SCCR psccr;
 | |
| 	PCMCIA_SLIC pslic;
 | |
| 	char pscdd;
 | |
| 	Si3C1 sic1;
 | |
| 	Si3C2 sic2;
 | |
| 	Si3RXG sirxg;
 | |
| 	Si3ADC siadc;
 | |
| 	Si3DAC sidac;
 | |
| 	Si3STAT sistat;
 | |
| 	Si3AATT siaatt;
 | |
| 	MIX mix;
 | |
| 	unsigned short ring_cadence;
 | |
| 	int ring_cadence_t;
 | |
| 	unsigned long ring_cadence_jif;
 | |
| 	unsigned long checkwait;
 | |
| 	int intercom;
 | |
| 	int m_hook;
 | |
| 	int r_hook;
 | |
| 	int p_hook;
 | |
| 	char pstn_envelope;
 | |
| 	char pstn_cid_intr;
 | |
| 	unsigned char fskz;
 | |
| 	unsigned char fskphase;
 | |
| 	unsigned char fskcnt;
 | |
|         unsigned int cidsize;
 | |
| 	unsigned int cidcnt;
 | |
| 	unsigned long pstn_cid_received;
 | |
| 	PHONE_CID cid;
 | |
| 	PHONE_CID cid_send;
 | |
| 	unsigned long pstn_ring_int;
 | |
| 	unsigned long pstn_ring_start;
 | |
| 	unsigned long pstn_ring_stop;
 | |
| 	unsigned long pstn_winkstart;
 | |
| 	unsigned long pstn_last_rmr;
 | |
| 	unsigned long pstn_prev_rmr;
 | |
| 	unsigned long pots_winkstart;
 | |
| 	unsigned int winktime;
 | |
| 	unsigned long flash_end;
 | |
| 	char port;
 | |
| 	char hookstate;
 | |
| 	union telephony_exception ex;
 | |
| 	union telephony_exception ex_sig;
 | |
| 	int ixj_signals[35];
 | |
| 	IXJ_SIGDEF sigdef;
 | |
| 	char daa_mode;
 | |
| 	char daa_country;
 | |
| 	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_hist[4];
 | |
| 	unsigned char filter_en[6];
 | |
| 	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;
 | |
| 	unsigned long statuswait;
 | |
| 	unsigned long statuswaitfail;
 | |
| 	unsigned long pcontrolwait;
 | |
| 	unsigned long pcontrolwaitfail;
 | |
| 	unsigned long iscontrolready;
 | |
| 	unsigned long iscontrolreadyfail;
 | |
| 	unsigned long pstnstatecheck;
 | |
| #ifdef IXJ_DYN_ALLOC
 | |
| 	short *fskdata;
 | |
| #else
 | |
| 	short fskdata[8000];
 | |
| #endif
 | |
| 	int fsksize;
 | |
| 	int fskdcnt;
 | |
| } IXJ;
 | |
| 
 | |
| typedef int (*IXJ_REGFUNC) (IXJ * j, unsigned long arg);
 | |
| 
 | |
| extern IXJ *ixj_pcmcia_probe(unsigned long, unsigned long);
 | |
| 
 |