1 /******************************************************************************
5 * Device Driver for Quicknet Technologies, Inc.'s Telephony cards
6 * including the Internet PhoneJACK, Internet PhoneJACK Lite,
7 * Internet PhoneJACK PCI, Internet LineJACK, Internet PhoneCARD and
10 * (c) Copyright 1999-2001 Quicknet Technologies, Inc.
12 * This program is free software; you can redistribute it and/or
13 * modify it under the terms of the GNU General Public License
14 * as published by the Free Software Foundation; either version
15 * 2 of the License, or (at your option) any later version.
17 * Author: Ed Okerson, <eokerson@quicknet.net>
19 * Contributors: Greg Herlein, <gherlein@quicknet.net>
20 * David W. Erhart, <derhart@quicknet.net>
21 * John Sellers, <jsellers@quicknet.net>
22 * Mike Preston, <mpreston@quicknet.net>
24 * More information about the hardware related to this driver can be found
25 * at our website: http://www.quicknet.net
29 * IN NO EVENT SHALL QUICKNET TECHNOLOGIES, INC. BE LIABLE TO ANY PARTY FOR
30 * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT
31 * OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF QUICKNET
32 * TECHNOLOGIES, INC.HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34 * QUICKNET TECHNOLOGIES, INC. SPECIFICALLY DISCLAIMS ANY WARRANTIES,
35 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
36 * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
37 * ON AN "AS IS" BASIS, AND QUICKNET TECHNOLOGIES, INC. HAS NO OBLIGATION
38 * TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
40 *****************************************************************************/
41 static char ixj_h_rcsid
[] = "$Id: ixj.h,v 4.1 2001/08/04 14:49:27 craigs Exp $";
43 #define IXJ_VERSION 3031
45 #include <linux/version.h>
46 #include <linux/types.h>
48 #include <linux/ixjuser.h>
49 #include <linux/phonedev.h>
63 /******************************************************************************
65 * This structure when unioned with the structures below makes simple byte
66 * access to the registers easier.
68 ******************************************************************************/
95 /******************************************************************************
97 * This structure represents the Hardware Control Register of the CT8020/8021
98 * The CT8020 is used in the Internet PhoneJACK, and the 8021 in the
101 ******************************************************************************/
103 unsigned int rxrdy
:1;
104 unsigned int txrdy
:1;
105 unsigned int status
:1;
106 unsigned int auxstatus
:1;
107 unsigned int rxdma
:1;
108 unsigned int txdma
:1;
109 unsigned int rxburst
:1;
110 unsigned int txburst
:1;
111 unsigned int dmadir
:1;
122 /******************************************************************************
124 * This structure represents the Hardware Status Register of the CT8020/8021
125 * The CT8020 is used in the Internet PhoneJACK, and the 8021 in the
128 ******************************************************************************/
130 unsigned int controlrdy
:1;
131 unsigned int auxctlrdy
:1;
132 unsigned int statusrdy
:1;
133 unsigned int auxstatusrdy
:1;
134 unsigned int rxrdy
:1;
135 unsigned int txrdy
:1;
136 unsigned int restart
:1;
138 unsigned int rxdma
:1;
139 unsigned int txdma
:1;
140 unsigned int cohostshutdown
:1;
149 /******************************************************************************
151 * This structure represents the General Purpose IO Register of the CT8020/8021
152 * The CT8020 is used in the Internet PhoneJACK, and the 8021 in the
155 ******************************************************************************/
158 unsigned int gpio1
:1;
159 unsigned int gpio2
:1;
160 unsigned int gpio3
:1;
161 unsigned int gpio4
:1;
162 unsigned int gpio5
:1;
163 unsigned int gpio6
:1;
164 unsigned int gpio7
:1;
165 unsigned int xread
:1;
166 unsigned int gpio1read
:1;
167 unsigned int gpio2read
:1;
168 unsigned int gpio3read
:1;
169 unsigned int gpio4read
:1;
170 unsigned int gpio5read
:1;
171 unsigned int gpio6read
:1;
172 unsigned int gpio7read
:1;
181 /******************************************************************************
183 * This structure represents the Line Monitor status response
185 ******************************************************************************/
187 unsigned int digit
:4;
188 unsigned int cpf_valid
:1;
189 unsigned int dtmf_valid
:1;
196 unsigned int frame
:4;
206 unsigned int dtmf_en
:1;
219 /******************************************************************************
221 * This structure represents the Status Control Register on the Internet
224 ******************************************************************************/
228 unsigned int stereo
:1;
229 unsigned int daafsyncen
:1;
234 } PSCRWI
; /* Internet LineJACK and Internet PhoneJACK Lite */
240 } PSCRWP
; /* Internet PhoneJACK PCI */
253 unsigned int mixerbusy
:1;
255 unsigned int dspflag
:1;
256 unsigned int daaflag
:1;
263 unsigned int dspflag
:1;
273 /******************************************************************************
275 * These structures represents the SLIC Control Register on the
278 ******************************************************************************/
284 unsigned int spken
:1;
291 unsigned int state
:3;
293 unsigned int spken
:1;
295 unsigned int potspstn
:1;
323 /******************************************************************************
325 * These structures represents the Clock Control Register on the
328 ******************************************************************************/
334 unsigned int slic_e1
:1;
345 /******************************************************************************
347 * These structures deal with the mixer on the Internet LineJACK
349 ******************************************************************************/
352 unsigned short vol
[10];
355 unsigned short micpreamp
;
358 /******************************************************************************
360 * These structures deal with the control logic on the Internet PhoneCARD
362 ******************************************************************************/
364 unsigned int x0
:4; /* unused bits */
366 unsigned int ed
:1; /* Event Detect */
368 unsigned int drf
:1; /* SmartCABLE Removal Flag 1=no cable */
370 unsigned int dspf
:1; /* DSP Flag 1=DSP Ready */
372 unsigned int crr
:1; /* Control Register Ready */
382 unsigned int x0
:4; /* unused bits */
384 unsigned int rstc
:1; /* SmartCABLE Reset */
386 unsigned int pwr
:1; /* SmartCABLE Power */
388 unsigned int x1
:2; /* unused bits */
398 unsigned int addr
:5; /* R/W SmartCABLE Register Address */
400 unsigned int rw
:1; /* Read / Write flag */
402 unsigned int dev
:2; /* 2 bit SmartCABLE Device Address */
416 unsigned int ring1
:1;
417 unsigned int ring0
:1;
419 unsigned int powerdown
:1;
423 PCMCIA_SLIC_REG bits
;
428 unsigned int cpd
:1; /* Chip Power Down */
430 unsigned int mpd
:1; /* MIC Bias Power Down */
432 unsigned int hpd
:1; /* Handset Drive Power Down */
434 unsigned int lpd
:1; /* Line Drive Power Down */
436 unsigned int spd
:1; /* Speaker Drive Power Down */
438 unsigned int x
:2; /* unused bits */
440 unsigned int sr
:1; /* Software Reset */
450 unsigned int al
:1; /* Analog Loopback DAC analog -> ADC analog */
452 unsigned int dl2
:1; /* Digital Loopback DAC -> ADC one bit */
454 unsigned int dl1
:1; /* Digital Loopback ADC -> DAC one bit */
456 unsigned int pll
:1; /* 1 = div 10, 0 = div 5 */
458 unsigned int hpd
:1; /* HPF disable */
460 unsigned int x
:3; /* unused bits */
470 unsigned int iir
:1; /* 1 enables IIR, 0 enables FIR */
472 unsigned int him
:1; /* Handset Input Mute */
474 unsigned int mcm
:1; /* MIC In Mute */
476 unsigned int mcg
:2; /* MIC In Gain */
478 unsigned int lim
:1; /* Line In Mute */
480 unsigned int lig
:2; /* Line In Gain */
490 unsigned int hom
:1; /* Handset Out Mute */
492 unsigned int lom
:1; /* Line Out Mute */
494 unsigned int rxg
:5; /* RX PGA Gain */
496 unsigned int x
:1; /* unused bit */
506 unsigned int srm
:1; /* Speaker Right Mute */
508 unsigned int slm
:1; /* Speaker Left Mute */
510 unsigned int txg
:5; /* TX PGA Gain */
512 unsigned int x
:1; /* unused bit */
522 unsigned int x
:5; /* unused bit */
524 unsigned int losc
:1; /* Line Out Short Circuit */
526 unsigned int srsc
:1; /* Speaker Right Short Circuit */
528 unsigned int slsc
:1; /* Speaker Left Short Circuit */
533 Si3STATUSREPORT bits
;
538 unsigned int sot
:2; /* Speaker Out Attenuation */
540 unsigned int lot
:2; /* Line Out Attenuation */
542 unsigned int x
:4; /* unused bits */
551 /******************************************************************************
553 * These structures deal with the DAA on the Internet LineJACK
555 ******************************************************************************/
557 typedef struct _DAA_REGS
{
558 /*----------------------------------------------- */
565 union /* SOP - CR0 Register */
568 struct _CR0_BITREGS
{
569 BYTE CLK_EXT
:1; /* cr0[0:0] */
571 BYTE RIP
:1; /* cr0[1:1] */
573 BYTE AR
:1; /* cr0[2:2] */
575 BYTE AX
:1; /* cr0[3:3] */
577 BYTE FRR
:1; /* cr0[4:4] */
579 BYTE FRX
:1; /* cr0[5:5] */
581 BYTE IM
:1; /* cr0[6:6] */
583 BYTE TH
:1; /* cr0[7:7] */
588 union /* SOP - CR1 Register */
592 BYTE RM
:1; /* cr1[0:0] */
594 BYTE RMR
:1; /* cr1[1:1] */
596 BYTE No_auto
:1; /* cr1[2:2] */
598 BYTE Pulse
:1; /* cr1[3:3] */
600 BYTE P_Tone1
:1; /* cr1[4:4] */
602 BYTE P_Tone2
:1; /* cr1[5:5] */
604 BYTE E_Tone1
:1; /* cr1[6:6] */
606 BYTE E_Tone2
:1; /* cr1[7:7] */
611 union /* SOP - CR2 Register */
615 BYTE Call_II
:1; /* CR2[0:0] */
617 BYTE Call_I
:1; /* CR2[1:1] */
619 BYTE Call_en
:1; /* CR2[2:2] */
621 BYTE Call_pon
:1; /* CR2[3:3] */
623 BYTE IDR
:1; /* CR2[4:4] */
625 BYTE COT_R
:3; /* CR2[5:7] */
630 union /* SOP - CR3 Register */
634 BYTE DHP_X
:1; /* CR3[0:0] */
636 BYTE DHP_R
:1; /* CR3[1:1] */
638 BYTE Cal_pctl
:1; /* CR3[2:2] */
640 BYTE SEL
:1; /* CR3[3:3] */
642 BYTE TestLoops
:4; /* CR3[4:7] */
647 union /* SOP - CR4 Register */
651 BYTE Fsc_en
:1; /* CR4[0:0] */
653 BYTE Int_en
:1; /* CR4[1:1] */
655 BYTE AGX
:2; /* CR4[2:3] */
657 BYTE AGR_R
:2; /* CR4[4:5] */
659 BYTE AGR_Z
:2; /* CR4[6:7] */
664 union /* SOP - CR5 Register */
668 BYTE V_0
:1; /* CR5[0:0] */
670 BYTE V_1
:1; /* CR5[1:1] */
672 BYTE V_2
:1; /* CR5[2:2] */
674 BYTE V_3
:1; /* CR5[3:3] */
676 BYTE V_4
:1; /* CR5[4:4] */
678 BYTE V_5
:1; /* CR5[5:5] */
680 BYTE V_6
:1; /* CR5[6:6] */
682 BYTE V_7
:1; /* CR5[7:7] */
687 union /* SOP - CR6 Register */
691 BYTE reserved
:8; /* CR6[0:7] */
696 union /* SOP - CR7 Register */
700 BYTE reserved
:8; /* CR7[0:7] */
706 BYTE ByteRegs
[sizeof(struct _SOP
)];
710 /* DAA_REGS.SOP_REGS.SOP.CR5.reg */
711 /* DAA_REGS.SOP_REGS.SOP.CR5.bitreg */
712 /* DAA_REGS.SOP_REGS.SOP.CR5.bitreg.V_2 */
713 /* DAA_REGS.SOP_REGS.ByteRegs[5] */
715 /*----------------------------------------------- */
722 union XOPXR0
/* XOP - XR0 Register - Read values */
725 struct _XR0_BITREGS
{
726 BYTE SI_0
:1; /* XR0[0:0] - Read */
728 BYTE SI_1
:1; /* XR0[1:1] - Read */
730 BYTE VDD_OK
:1; /* XR0[2:2] - Read */
732 BYTE Caller_ID
:1; /* XR0[3:3] - Read */
734 BYTE RING
:1; /* XR0[4:4] - Read */
736 BYTE Cadence
:1; /* XR0[5:5] - Read */
738 BYTE Wake_up
:1; /* XR0[6:6] - Read */
740 BYTE RMR
:1; /* XR0[7:7] - Read */
745 union /* XOP - XR1 Register */
748 struct _XR1_BITREGS
{
749 BYTE M_SI_0
:1; /* XR1[0:0] */
751 BYTE M_SI_1
:1; /* XR1[1:1] */
753 BYTE M_VDD_OK
:1; /* XR1[2:2] */
755 BYTE M_Caller_ID
:1; /* XR1[3:3] */
757 BYTE M_RING
:1; /* XR1[4:4] */
759 BYTE M_Cadence
:1; /* XR1[5:5] */
761 BYTE M_Wake_up
:1; /* XR1[6:6] */
763 BYTE unused
:1; /* XR1[7:7] */
768 union /* XOP - XR2 Register */
771 struct _XR2_BITREGS
{
772 BYTE CTO0
:1; /* XR2[0:0] */
774 BYTE CTO1
:1; /* XR2[1:1] */
776 BYTE CTO2
:1; /* XR2[2:2] */
778 BYTE CTO3
:1; /* XR2[3:3] */
780 BYTE CTO4
:1; /* XR2[4:4] */
782 BYTE CTO5
:1; /* XR2[5:5] */
784 BYTE CTO6
:1; /* XR2[6:6] */
786 BYTE CTO7
:1; /* XR2[7:7] */
791 union /* XOP - XR3 Register */
794 struct _XR3_BITREGS
{
795 BYTE DCR0
:1; /* XR3[0:0] */
797 BYTE DCR1
:1; /* XR3[1:1] */
799 BYTE DCI
:1; /* XR3[2:2] */
801 BYTE DCU0
:1; /* XR3[3:3] */
803 BYTE DCU1
:1; /* XR3[4:4] */
805 BYTE B_off
:1; /* XR3[5:5] */
807 BYTE AGB0
:1; /* XR3[6:6] */
809 BYTE AGB1
:1; /* XR3[7:7] */
814 union /* XOP - XR4 Register */
817 struct _XR4_BITREGS
{
818 BYTE C_0
:1; /* XR4[0:0] */
820 BYTE C_1
:1; /* XR4[1:1] */
822 BYTE C_2
:1; /* XR4[2:2] */
824 BYTE C_3
:1; /* XR4[3:3] */
826 BYTE C_4
:1; /* XR4[4:4] */
828 BYTE C_5
:1; /* XR4[5:5] */
830 BYTE C_6
:1; /* XR4[6:6] */
832 BYTE C_7
:1; /* XR4[7:7] */
837 union /* XOP - XR5 Register */
840 struct _XR5_BITREGS
{
841 BYTE T_0
:1; /* XR5[0:0] */
843 BYTE T_1
:1; /* XR5[1:1] */
845 BYTE T_2
:1; /* XR5[2:2] */
847 BYTE T_3
:1; /* XR5[3:3] */
849 BYTE T_4
:1; /* XR5[4:4] */
851 BYTE T_5
:1; /* XR5[5:5] */
853 BYTE T_6
:1; /* XR5[6:6] */
855 BYTE T_7
:1; /* XR5[7:7] */
860 union /* XOP - XR6 Register - Read Values */
863 struct _XR6_BITREGS
{
864 BYTE CPS0
:1; /* XR6[0:0] */
866 BYTE CPS1
:1; /* XR6[1:1] */
868 BYTE unused1
:2; /* XR6[2:3] */
870 BYTE CLK_OFF
:1; /* XR6[4:4] */
872 BYTE unused2
:3; /* XR6[5:7] */
877 union /* XOP - XR7 Register */
880 struct _XR7_BITREGS
{
881 BYTE unused1
:1; /* XR7[0:0] */
883 BYTE Vdd0
:1; /* XR7[1:1] */
885 BYTE Vdd1
:1; /* XR7[2:2] */
887 BYTE unused2
:5; /* XR7[3:7] */
893 BYTE ByteRegs
[sizeof(struct _XOP
)];
897 /* DAA_REGS.XOP_REGS.XOP.XR7.reg */
898 /* DAA_REGS.XOP_REGS.XOP.XR7.bitreg */
899 /* DAA_REGS.XOP_REGS.XOP.XR7.bitreg.Vdd0 */
900 /* DAA_REGS.XOP_REGS.ByteRegs[7] */
902 /*----------------------------------------------- */
909 BYTE THFilterCoeff_1
[8]; /* COP - TH Filter Coefficients, CODE=0, Part 1 */
911 BYTE THFilterCoeff_2
[8]; /* COP - TH Filter Coefficients, CODE=1, Part 2 */
913 BYTE THFilterCoeff_3
[8]; /* COP - TH Filter Coefficients, CODE=2, Part 3 */
915 BYTE RingerImpendance_1
[8]; /* COP - Ringer Impendance Coefficients, CODE=3, Part 1 */
917 BYTE IMFilterCoeff_1
[8]; /* COP - IM Filter Coefficients, CODE=4, Part 1 */
919 BYTE IMFilterCoeff_2
[8]; /* COP - IM Filter Coefficients, CODE=5, Part 2 */
921 BYTE RingerImpendance_2
[8]; /* COP - Ringer Impendance Coefficients, CODE=6, Part 2 */
923 BYTE FRRFilterCoeff
[8]; /* COP - FRR Filter Coefficients, CODE=7 */
925 BYTE FRXFilterCoeff
[8]; /* COP - FRX Filter Coefficients, CODE=8 */
927 BYTE ARFilterCoeff
[4]; /* COP - AR Filter Coefficients, CODE=9 */
929 BYTE AXFilterCoeff
[4]; /* COP - AX Filter Coefficients, CODE=10 */
931 BYTE Tone1Coeff
[4]; /* COP - Tone1 Coefficients, CODE=11 */
933 BYTE Tone2Coeff
[4]; /* COP - Tone2 Coefficients, CODE=12 */
935 BYTE LevelmeteringRinging
[4]; /* COP - Levelmetering Ringing, CODE=13 */
937 BYTE CallerID1stTone
[8]; /* COP - Caller ID 1st Tone, CODE=14 */
939 BYTE CallerID2ndTone
[8]; /* COP - Caller ID 2nd Tone, CODE=15 */
943 BYTE ByteRegs
[sizeof(struct _COP
)];
947 /* DAA_REGS.COP_REGS.COP.XR7.Tone1Coeff[3] */
948 /* DAA_REGS.COP_REGS.COP.XR7.bitreg */
949 /* DAA_REGS.COP_REGS.COP.XR7.bitreg.Vdd0 */
950 /* DAA_REGS.COP_REGS.ByteRegs[57] */
952 /*----------------------------------------------- */
959 BYTE CallerID
[512]; /* CAO - Caller ID Bytes */
963 BYTE ByteRegs
[sizeof(struct _CAO
)];
966 union /* XOP - XR0 Register - Write values */
969 struct _XR0_BITREGSW
{
970 BYTE SO_0
:1; /* XR1[0:0] - Write */
972 BYTE SO_1
:1; /* XR1[1:1] - Write */
974 BYTE SO_2
:1; /* XR1[2:2] - Write */
976 BYTE unused
:5; /* XR1[3:7] - Write */
981 union /* XOP - XR6 Register - Write values */
984 struct _XR6_BITREGSW
{
985 BYTE unused1
:4; /* XR6[0:3] */
987 BYTE CLK_OFF
:1; /* XR6[4:4] */
989 BYTE unused2
:3; /* XR6[5:7] */
996 #define ALISDAA_ID_BYTE 0x81
997 #define ALISDAA_CALLERID_SIZE 512
999 /*------------------------------ */
1001 /* Misc definitions */
1004 /* Power Up Operation */
1005 #define SOP_PU_SLEEP 0
1006 #define SOP_PU_RINGING 1
1007 #define SOP_PU_CONVERSATION 2
1008 #define SOP_PU_PULSEDIALING 3
1009 #define SOP_PU_RESET 4
1011 #define ALISDAA_CALLERID_SIZE 512
1013 #define PLAYBACK_MODE_COMPRESSED 0 /* Selects: Compressed modes, TrueSpeech 8.5-4.1, G.723.1, G.722, G.728, G.729 */
1014 #define PLAYBACK_MODE_TRUESPEECH_V40 0 /* Selects: TrueSpeech 8.5, 6.3, 5.3, 4.8 or 4.1 Kbps */
1015 #define PLAYBACK_MODE_TRUESPEECH 8 /* Selects: TrueSpeech 8.5, 6.3, 5.3, 4.8 or 4.1 Kbps Version 5.1 */
1016 #define PLAYBACK_MODE_ULAW 2 /* Selects: 64 Kbit/sec MuA-law PCM */
1017 #define PLAYBACK_MODE_ALAW 10 /* Selects: 64 Kbit/sec A-law PCM */
1018 #define PLAYBACK_MODE_16LINEAR 6 /* Selects: 128 Kbit/sec 16-bit linear */
1019 #define PLAYBACK_MODE_8LINEAR 4 /* Selects: 64 Kbit/sec 8-bit signed linear */
1020 #define PLAYBACK_MODE_8LINEAR_WSS 5 /* Selects: 64 Kbit/sec WSS 8-bit unsigned linear */
1022 #define RECORD_MODE_COMPRESSED 0 /* Selects: Compressed modes, TrueSpeech 8.5-4.1, G.723.1, G.722, G.728, G.729 */
1023 #define RECORD_MODE_TRUESPEECH 0 /* Selects: TrueSpeech 8.5, 6.3, 5.3, 4.8 or 4.1 Kbps */
1024 #define RECORD_MODE_ULAW 4 /* Selects: 64 Kbit/sec Mu-law PCM */
1025 #define RECORD_MODE_ALAW 12 /* Selects: 64 Kbit/sec A-law PCM */
1026 #define RECORD_MODE_16LINEAR 5 /* Selects: 128 Kbit/sec 16-bit linear */
1027 #define RECORD_MODE_8LINEAR 6 /* Selects: 64 Kbit/sec 8-bit signed linear */
1028 #define RECORD_MODE_8LINEAR_WSS 7 /* Selects: 64 Kbit/sec WSS 8-bit unsigned linear */
1031 PLD_SLIC_STATE_OC
= 0,
1032 PLD_SLIC_STATE_RINGING
,
1033 PLD_SLIC_STATE_ACTIVE
,
1035 PLD_SLIC_STATE_TIPOPEN
,
1036 PLD_SLIC_STATE_STANDBY
,
1038 PLD_SLIC_STATE_OHTPR
1052 V3_TO_V4
, V4_TO_V3
, V4_TO_V5
, V5_TO_V4
1055 typedef struct Proc_Info_Tag
{
1056 enum Mode convert_mode
;
1057 enum Dir convert_dir
;
1058 int Prev_Frame_Type
;
1059 int Current_Frame_Type
;
1069 enum IXJ_EXTENSIONS
{
1083 unsigned int filter
;
1084 unsigned int state
; /* State 0 when cadence has not started. */
1086 unsigned int on1
; /* State 1 */
1088 unsigned long on1min
; /* State 1 - 10% + jiffies */
1089 unsigned long on1dot
; /* State 1 + jiffies */
1091 unsigned long on1max
; /* State 1 + 10% + jiffies */
1093 unsigned int off1
; /* State 2 */
1095 unsigned long off1min
;
1096 unsigned long off1dot
; /* State 2 + jiffies */
1097 unsigned long off1max
;
1098 unsigned int on2
; /* State 3 */
1100 unsigned long on2min
;
1101 unsigned long on2dot
;
1102 unsigned long on2max
;
1103 unsigned int off2
; /* State 4 */
1105 unsigned long off2min
;
1106 unsigned long off2dot
; /* State 4 + jiffies */
1107 unsigned long off2max
;
1108 unsigned int on3
; /* State 5 */
1110 unsigned long on3min
;
1111 unsigned long on3dot
;
1112 unsigned long on3max
;
1113 unsigned int off3
; /* State 6 */
1115 unsigned long off3min
;
1116 unsigned long off3dot
; /* State 6 + jiffies */
1117 unsigned long off3max
;
1121 unsigned int busytone
:1;
1122 unsigned int dialtone
:1;
1123 unsigned int ringback
:1;
1124 unsigned int ringing
:1;
1125 unsigned int playing
:1;
1126 unsigned int recording
:1;
1127 unsigned int cringing
:1;
1128 unsigned int play_first_frame
:1;
1129 unsigned int pstn_present
:1;
1130 unsigned int pstn_ringing
:1;
1131 unsigned int pots_correct
:1;
1132 unsigned int pots_pstn
:1;
1133 unsigned int g729_loaded
:1;
1134 unsigned int ts85_loaded
:1;
1135 unsigned int dtmf_oob
:1; /* DTMF Out-Of-Band */
1137 unsigned int pcmciascp
:1; /* SmartCABLE Present */
1139 unsigned int pcmciasct
:2; /* SmartCABLE Type */
1141 unsigned int pcmciastate
:3; /* SmartCABLE Init State */
1143 unsigned int inwrite
:1; /* Currently writing */
1145 unsigned int inread
:1; /* Currently reading */
1147 unsigned int incheck
:1; /* Currently checking the SmartCABLE */
1149 unsigned int cidplay
:1; /* Currently playing Caller ID */
1151 unsigned int cidring
:1; /* This is the ring for Caller ID */
1153 unsigned int cidsent
:1; /* Caller ID has been sent */
1155 unsigned int cidcw_ack
:1; /* Caller ID CW ACK (from CPE) */
1156 unsigned int firstring
:1; /* First ring cadence is complete */
1157 unsigned int pstncheck
:1; /* Currently checking the PSTN Line */
1158 unsigned int pstn_rmr
:1;
1159 unsigned int x
:3; /* unsed bits */
1163 /******************************************************************************
1165 * This structure holds the state of all of the Quicknet cards
1167 ******************************************************************************/
1171 IXJ_CADENCE_TERM termination
;
1172 IXJ_CADENCE_ELEMENT
*ce
;
1176 struct phone_device p
;
1177 struct timer_list timer
;
1179 unsigned int DSPbase
;
1180 unsigned int XILINXbase
;
1181 unsigned int serial
;
1183 struct phone_capability caplist
[30];
1185 struct pnp_dev
*dev
;
1186 unsigned int cardtype
;
1187 unsigned int rec_codec
;
1188 unsigned int cid_rec_codec
;
1189 unsigned int cid_rec_volume
;
1190 unsigned char cid_rec_flag
;
1191 signed char rec_mode
;
1192 unsigned int play_codec
;
1193 unsigned int cid_play_codec
;
1194 unsigned int cid_play_volume
;
1195 unsigned char cid_play_flag
;
1196 signed char play_mode
;
1198 unsigned long busyflags
;
1199 unsigned int rec_frame_size
;
1200 unsigned int play_frame_size
;
1201 unsigned int cid_play_frame_size
;
1202 unsigned int cid_base_frame_size
;
1203 unsigned long cidcw_wait
;
1205 int cid_play_aec_level
;
1206 int readers
, writers
;
1207 wait_queue_head_t poll_q
;
1208 wait_queue_head_t read_q
;
1209 char *read_buffer
, *read_buffer_end
;
1210 char *read_convert_buffer
;
1211 size_t read_buffer_size
;
1212 unsigned int read_buffer_ready
;
1213 wait_queue_head_t write_q
;
1214 char *write_buffer
, *write_buffer_end
;
1215 char *write_convert_buffer
;
1216 size_t write_buffer_size
;
1217 unsigned int write_buffers_empty
;
1218 unsigned long drybuffer
;
1219 char *write_buffer_rp
, *write_buffer_wp
;
1220 char dtmfbuffer
[80];
1222 int dtmf_wp
, dtmf_rp
, dtmf_state
, dtmf_proc
;
1223 int tone_off_time
, tone_on_time
;
1224 struct fasync_struct
*async_queue
;
1225 unsigned long tone_start_jif
;
1229 ixj_cadence
*cadence_t
;
1230 ixj_cadence
*cadence_r
;
1231 int tone_cadence_state
;
1232 IXJ_CADENCE_F cadence_f
[6];
1244 PLD_SLICW pld_slicw
;
1245 PLD_SLICR pld_slicr
;
1246 PLD_CLOCK pld_clock
;
1260 unsigned short ring_cadence
;
1262 unsigned long ring_cadence_jif
;
1263 unsigned long checkwait
;
1271 unsigned char fskphase
;
1272 unsigned char fskcnt
;
1273 unsigned int cidsize
;
1274 unsigned int cidcnt
;
1275 unsigned long pstn_cid_received
;
1278 unsigned long pstn_ring_int
;
1279 unsigned long pstn_ring_start
;
1280 unsigned long pstn_ring_stop
;
1281 unsigned long pstn_winkstart
;
1282 unsigned long pstn_last_rmr
;
1283 unsigned long pstn_prev_rmr
;
1284 unsigned long pots_winkstart
;
1285 unsigned int winktime
;
1286 unsigned long flash_end
;
1289 union telephony_exception ex
;
1290 union telephony_exception ex_sig
;
1291 int ixj_signals
[35];
1295 unsigned long pstn_sleeptil
;
1296 DAA_REGS m_DAAShadowRegs
;
1297 Proc_Info_Type Info_read
;
1298 Proc_Info_Type Info_write
;
1299 unsigned short frame_count
;
1300 unsigned int filter_hist
[4];
1301 unsigned char filter_en
[4];
1302 unsigned short proc_load
;
1303 unsigned long framesread
;
1304 unsigned long frameswritten
;
1305 unsigned long read_wait
;
1306 unsigned long write_wait
;
1307 unsigned long timerchecks
;
1308 unsigned long txreadycheck
;
1309 unsigned long rxreadycheck
;
1310 unsigned long statuswait
;
1311 unsigned long statuswaitfail
;
1312 unsigned long pcontrolwait
;
1313 unsigned long pcontrolwaitfail
;
1314 unsigned long iscontrolready
;
1315 unsigned long iscontrolreadyfail
;
1316 unsigned long pstnstatecheck
;
1317 #ifdef IXJ_DYN_ALLOC
1320 short fskdata
[8000];
1326 typedef int (*IXJ_REGFUNC
) (IXJ
* j
, unsigned long arg
);
1328 extern IXJ
*ixj_pcmcia_probe(unsigned long, unsigned long);