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 1.1.1.1 2005/04/11 02:50:40 jack Exp $";
43 #define IXJ_VERSION 3031
45 #include <linux/types.h>
47 #include <linux/ixjuser.h>
48 #include <linux/phonedev.h>
63 #define min(a,b) (((a)<(b))?(a):(b))
66 #define max(a,b) (((a)>(b))?(a):(b))
69 /******************************************************************************
71 * This structure when unioned with the structures below makes simple byte
72 * access to the registers easier.
74 ******************************************************************************/
101 /******************************************************************************
103 * This structure represents the Hardware Control Register of the CT8020/8021
104 * The CT8020 is used in the Internet PhoneJACK, and the 8021 in the
107 ******************************************************************************/
109 unsigned int rxrdy:1;
110 unsigned int txrdy:1;
111 unsigned int status:1;
112 unsigned int auxstatus:1;
113 unsigned int rxdma:1;
114 unsigned int txdma:1;
115 unsigned int rxburst:1;
116 unsigned int txburst:1;
117 unsigned int dmadir:1;
128 /******************************************************************************
130 * This structure represents the Hardware Status Register of the CT8020/8021
131 * The CT8020 is used in the Internet PhoneJACK, and the 8021 in the
134 ******************************************************************************/
136 unsigned int controlrdy:1;
137 unsigned int auxctlrdy:1;
138 unsigned int statusrdy:1;
139 unsigned int auxstatusrdy:1;
140 unsigned int rxrdy:1;
141 unsigned int txrdy:1;
142 unsigned int restart:1;
144 unsigned int rxdma:1;
145 unsigned int txdma:1;
146 unsigned int cohostshutdown:1;
155 /******************************************************************************
157 * This structure represents the General Purpose IO Register of the CT8020/8021
158 * The CT8020 is used in the Internet PhoneJACK, and the 8021 in the
161 ******************************************************************************/
164 unsigned int gpio1:1;
165 unsigned int gpio2:1;
166 unsigned int gpio3:1;
167 unsigned int gpio4:1;
168 unsigned int gpio5:1;
169 unsigned int gpio6:1;
170 unsigned int gpio7:1;
171 unsigned int xread:1;
172 unsigned int gpio1read:1;
173 unsigned int gpio2read:1;
174 unsigned int gpio3read:1;
175 unsigned int gpio4read:1;
176 unsigned int gpio5read:1;
177 unsigned int gpio6read:1;
178 unsigned int gpio7read:1;
187 /******************************************************************************
189 * This structure represents the Line Monitor status response
191 ******************************************************************************/
193 unsigned int digit:4;
194 unsigned int cpf_valid:1;
195 unsigned int dtmf_valid:1;
202 unsigned int frame:4;
212 unsigned int dtmf_en:1;
225 /******************************************************************************
227 * This structure represents the Status Control Register on the Internet
230 ******************************************************************************/
234 unsigned int stereo:1;
235 unsigned int daafsyncen:1;
240 } PSCRWI; /* Internet LineJACK and Internet PhoneJACK Lite */
246 } PSCRWP; /* Internet PhoneJACK PCI */
259 unsigned int mixerbusy:1;
261 unsigned int dspflag:1;
262 unsigned int daaflag:1;
269 unsigned int dspflag:1;
279 /******************************************************************************
281 * These structures represents the SLIC Control Register on the
284 ******************************************************************************/
290 unsigned int spken:1;
297 unsigned int state:3;
299 unsigned int spken:1;
301 unsigned int potspstn:1;
329 /******************************************************************************
331 * These structures represents the Clock Control Register on the
334 ******************************************************************************/
340 unsigned int slic_e1:1;
351 /******************************************************************************
353 * These structures deal with the mixer on the Internet LineJACK
355 ******************************************************************************/
358 unsigned short vol[10];
361 unsigned short micpreamp;
364 /******************************************************************************
366 * These structures deal with the control logic on the Internet PhoneCARD
368 ******************************************************************************/
370 unsigned int x0:4; /* unused bits */
372 unsigned int ed:1; /* Event Detect */
374 unsigned int drf:1; /* SmartCABLE Removal Flag 1=no cable */
376 unsigned int dspf:1; /* DSP Flag 1=DSP Ready */
378 unsigned int crr:1; /* Control Register Ready */
388 unsigned int x0:4; /* unused bits */
390 unsigned int rstc:1; /* SmartCABLE Reset */
392 unsigned int pwr:1; /* SmartCABLE Power */
394 unsigned int x1:2; /* unused bits */
404 unsigned int addr:5; /* R/W SmartCABLE Register Address */
406 unsigned int rw:1; /* Read / Write flag */
408 unsigned int dev:2; /* 2 bit SmartCABLE Device Address */
422 unsigned int ring1:1;
423 unsigned int ring0:1;
425 unsigned int powerdown:1;
429 PCMCIA_SLIC_REG bits;
434 unsigned int cpd:1; /* Chip Power Down */
436 unsigned int mpd:1; /* MIC Bias Power Down */
438 unsigned int hpd:1; /* Handset Drive Power Down */
440 unsigned int lpd:1; /* Line Drive Power Down */
442 unsigned int spd:1; /* Speaker Drive Power Down */
444 unsigned int x:2; /* unused bits */
446 unsigned int sr:1; /* Software Reset */
456 unsigned int al:1; /* Analog Loopback DAC analog -> ADC analog */
458 unsigned int dl2:1; /* Digital Loopback DAC -> ADC one bit */
460 unsigned int dl1:1; /* Digital Loopback ADC -> DAC one bit */
462 unsigned int pll:1; /* 1 = div 10, 0 = div 5 */
464 unsigned int hpd:1; /* HPF disable */
466 unsigned int x:3; /* unused bits */
476 unsigned int iir:1; /* 1 enables IIR, 0 enables FIR */
478 unsigned int him:1; /* Handset Input Mute */
480 unsigned int mcm:1; /* MIC In Mute */
482 unsigned int mcg:2; /* MIC In Gain */
484 unsigned int lim:1; /* Line In Mute */
486 unsigned int lig:2; /* Line In Gain */
496 unsigned int hom:1; /* Handset Out Mute */
498 unsigned int lom:1; /* Line Out Mute */
500 unsigned int rxg:5; /* RX PGA Gain */
502 unsigned int x:1; /* unused bit */
512 unsigned int srm:1; /* Speaker Right Mute */
514 unsigned int slm:1; /* Speaker Left Mute */
516 unsigned int txg:5; /* TX PGA Gain */
518 unsigned int x:1; /* unused bit */
528 unsigned int x:5; /* unused bit */
530 unsigned int losc:1; /* Line Out Short Circuit */
532 unsigned int srsc:1; /* Speaker Right Short Circuit */
534 unsigned int slsc:1; /* Speaker Left Short Circuit */
539 Si3STATUSREPORT bits;
544 unsigned int sot:2; /* Speaker Out Attenuation */
546 unsigned int lot:2; /* Line Out Attenuation */
548 unsigned int x:4; /* unused bits */
557 /******************************************************************************
559 * These structures deal with the DAA on the Internet LineJACK
561 ******************************************************************************/
563 typedef struct _DAA_REGS {
564 /*----------------------------------------------- */
571 union /* SOP - CR0 Register */
574 struct _CR0_BITREGS {
575 BYTE CLK_EXT:1; /* cr0[0:0] */
577 BYTE RIP:1; /* cr0[1:1] */
579 BYTE AR:1; /* cr0[2:2] */
581 BYTE AX:1; /* cr0[3:3] */
583 BYTE FRR:1; /* cr0[4:4] */
585 BYTE FRX:1; /* cr0[5:5] */
587 BYTE IM:1; /* cr0[6:6] */
589 BYTE TH:1; /* cr0[7:7] */
594 union /* SOP - CR1 Register */
598 BYTE RM:1; /* cr1[0:0] */
600 BYTE RMR:1; /* cr1[1:1] */
602 BYTE No_auto:1; /* cr1[2:2] */
604 BYTE Pulse:1; /* cr1[3:3] */
606 BYTE P_Tone1:1; /* cr1[4:4] */
608 BYTE P_Tone2:1; /* cr1[5:5] */
610 BYTE E_Tone1:1; /* cr1[6:6] */
612 BYTE E_Tone2:1; /* cr1[7:7] */
617 union /* SOP - CR2 Register */
621 BYTE Call_II:1; /* CR2[0:0] */
623 BYTE Call_I:1; /* CR2[1:1] */
625 BYTE Call_en:1; /* CR2[2:2] */
627 BYTE Call_pon:1; /* CR2[3:3] */
629 BYTE IDR:1; /* CR2[4:4] */
631 BYTE COT_R:3; /* CR2[5:7] */
636 union /* SOP - CR3 Register */
640 BYTE DHP_X:1; /* CR3[0:0] */
642 BYTE DHP_R:1; /* CR3[1:1] */
644 BYTE Cal_pctl:1; /* CR3[2:2] */
646 BYTE SEL:1; /* CR3[3:3] */
648 BYTE TestLoops:4; /* CR3[4:7] */
653 union /* SOP - CR4 Register */
657 BYTE Fsc_en:1; /* CR4[0:0] */
659 BYTE Int_en:1; /* CR4[1:1] */
661 BYTE AGX:2; /* CR4[2:3] */
663 BYTE AGR_R:2; /* CR4[4:5] */
665 BYTE AGR_Z:2; /* CR4[6:7] */
670 union /* SOP - CR5 Register */
674 BYTE V_0:1; /* CR5[0:0] */
676 BYTE V_1:1; /* CR5[1:1] */
678 BYTE V_2:1; /* CR5[2:2] */
680 BYTE V_3:1; /* CR5[3:3] */
682 BYTE V_4:1; /* CR5[4:4] */
684 BYTE V_5:1; /* CR5[5:5] */
686 BYTE V_6:1; /* CR5[6:6] */
688 BYTE V_7:1; /* CR5[7:7] */
693 union /* SOP - CR6 Register */
697 BYTE reserved:8; /* CR6[0:7] */
702 union /* SOP - CR7 Register */
706 BYTE reserved:8; /* CR7[0:7] */
712 BYTE ByteRegs[sizeof(struct _SOP)];
716 /* DAA_REGS.SOP_REGS.SOP.CR5.reg */
717 /* DAA_REGS.SOP_REGS.SOP.CR5.bitreg */
718 /* DAA_REGS.SOP_REGS.SOP.CR5.bitreg.V_2 */
719 /* DAA_REGS.SOP_REGS.ByteRegs[5] */
721 /*----------------------------------------------- */
728 union XOPXR0/* XOP - XR0 Register - Read values */
731 struct _XR0_BITREGS {
732 BYTE SI_0:1; /* XR0[0:0] - Read */
734 BYTE SI_1:1; /* XR0[1:1] - Read */
736 BYTE VDD_OK:1; /* XR0[2:2] - Read */
738 BYTE Caller_ID:1; /* XR0[3:3] - Read */
740 BYTE RING:1; /* XR0[4:4] - Read */
742 BYTE Cadence:1; /* XR0[5:5] - Read */
744 BYTE Wake_up:1; /* XR0[6:6] - Read */
746 BYTE RMR:1; /* XR0[7:7] - Read */
751 union /* XOP - XR1 Register */
754 struct _XR1_BITREGS {
755 BYTE M_SI_0:1; /* XR1[0:0] */
757 BYTE M_SI_1:1; /* XR1[1:1] */
759 BYTE M_VDD_OK:1; /* XR1[2:2] */
761 BYTE M_Caller_ID:1; /* XR1[3:3] */
763 BYTE M_RING:1; /* XR1[4:4] */
765 BYTE M_Cadence:1; /* XR1[5:5] */
767 BYTE M_Wake_up:1; /* XR1[6:6] */
769 BYTE unused:1; /* XR1[7:7] */
774 union /* XOP - XR2 Register */
777 struct _XR2_BITREGS {
778 BYTE CTO0:1; /* XR2[0:0] */
780 BYTE CTO1:1; /* XR2[1:1] */
782 BYTE CTO2:1; /* XR2[2:2] */
784 BYTE CTO3:1; /* XR2[3:3] */
786 BYTE CTO4:1; /* XR2[4:4] */
788 BYTE CTO5:1; /* XR2[5:5] */
790 BYTE CTO6:1; /* XR2[6:6] */
792 BYTE CTO7:1; /* XR2[7:7] */
797 union /* XOP - XR3 Register */
800 struct _XR3_BITREGS {
801 BYTE DCR0:1; /* XR3[0:0] */
803 BYTE DCR1:1; /* XR3[1:1] */
805 BYTE DCI:1; /* XR3[2:2] */
807 BYTE DCU0:1; /* XR3[3:3] */
809 BYTE DCU1:1; /* XR3[4:4] */
811 BYTE B_off:1; /* XR3[5:5] */
813 BYTE AGB0:1; /* XR3[6:6] */
815 BYTE AGB1:1; /* XR3[7:7] */
820 union /* XOP - XR4 Register */
823 struct _XR4_BITREGS {
824 BYTE C_0:1; /* XR4[0:0] */
826 BYTE C_1:1; /* XR4[1:1] */
828 BYTE C_2:1; /* XR4[2:2] */
830 BYTE C_3:1; /* XR4[3:3] */
832 BYTE C_4:1; /* XR4[4:4] */
834 BYTE C_5:1; /* XR4[5:5] */
836 BYTE C_6:1; /* XR4[6:6] */
838 BYTE C_7:1; /* XR4[7:7] */
843 union /* XOP - XR5 Register */
846 struct _XR5_BITREGS {
847 BYTE T_0:1; /* XR5[0:0] */
849 BYTE T_1:1; /* XR5[1:1] */
851 BYTE T_2:1; /* XR5[2:2] */
853 BYTE T_3:1; /* XR5[3:3] */
855 BYTE T_4:1; /* XR5[4:4] */
857 BYTE T_5:1; /* XR5[5:5] */
859 BYTE T_6:1; /* XR5[6:6] */
861 BYTE T_7:1; /* XR5[7:7] */
866 union /* XOP - XR6 Register - Read Values */
869 struct _XR6_BITREGS {
870 BYTE CPS0:1; /* XR6[0:0] */
872 BYTE CPS1:1; /* XR6[1:1] */
874 BYTE unused1:2; /* XR6[2:3] */
876 BYTE CLK_OFF:1; /* XR6[4:4] */
878 BYTE unused2:3; /* XR6[5:7] */
883 union /* XOP - XR7 Register */
886 struct _XR7_BITREGS {
887 BYTE unused1:1; /* XR7[0:0] */
889 BYTE Vdd0:1; /* XR7[1:1] */
891 BYTE Vdd1:1; /* XR7[2:2] */
893 BYTE unused2:5; /* XR7[3:7] */
899 BYTE ByteRegs[sizeof(struct _XOP)];
903 /* DAA_REGS.XOP_REGS.XOP.XR7.reg */
904 /* DAA_REGS.XOP_REGS.XOP.XR7.bitreg */
905 /* DAA_REGS.XOP_REGS.XOP.XR7.bitreg.Vdd0 */
906 /* DAA_REGS.XOP_REGS.ByteRegs[7] */
908 /*----------------------------------------------- */
915 BYTE THFilterCoeff_1[8]; /* COP - TH Filter Coefficients, CODE=0, Part 1 */
917 BYTE THFilterCoeff_2[8]; /* COP - TH Filter Coefficients, CODE=1, Part 2 */
919 BYTE THFilterCoeff_3[8]; /* COP - TH Filter Coefficients, CODE=2, Part 3 */
921 BYTE RingerImpendance_1[8]; /* COP - Ringer Impendance Coefficients, CODE=3, Part 1 */
923 BYTE IMFilterCoeff_1[8]; /* COP - IM Filter Coefficients, CODE=4, Part 1 */
925 BYTE IMFilterCoeff_2[8]; /* COP - IM Filter Coefficients, CODE=5, Part 2 */
927 BYTE RingerImpendance_2[8]; /* COP - Ringer Impendance Coefficients, CODE=6, Part 2 */
929 BYTE FRRFilterCoeff[8]; /* COP - FRR Filter Coefficients, CODE=7 */
931 BYTE FRXFilterCoeff[8]; /* COP - FRX Filter Coefficients, CODE=8 */
933 BYTE ARFilterCoeff[4]; /* COP - AR Filter Coefficients, CODE=9 */
935 BYTE AXFilterCoeff[4]; /* COP - AX Filter Coefficients, CODE=10 */
937 BYTE Tone1Coeff[4]; /* COP - Tone1 Coefficients, CODE=11 */
939 BYTE Tone2Coeff[4]; /* COP - Tone2 Coefficients, CODE=12 */
941 BYTE LevelmeteringRinging[4]; /* COP - Levelmetering Ringing, CODE=13 */
943 BYTE CallerID1stTone[8]; /* COP - Caller ID 1st Tone, CODE=14 */
945 BYTE CallerID2ndTone[8]; /* COP - Caller ID 2nd Tone, CODE=15 */
949 BYTE ByteRegs[sizeof(struct _COP)];
953 /* DAA_REGS.COP_REGS.COP.XR7.Tone1Coeff[3] */
954 /* DAA_REGS.COP_REGS.COP.XR7.bitreg */
955 /* DAA_REGS.COP_REGS.COP.XR7.bitreg.Vdd0 */
956 /* DAA_REGS.COP_REGS.ByteRegs[57] */
958 /*----------------------------------------------- */
965 BYTE CallerID[512]; /* CAO - Caller ID Bytes */
969 BYTE ByteRegs[sizeof(struct _CAO)];
972 union /* XOP - XR0 Register - Write values */
975 struct _XR0_BITREGSW {
976 BYTE SO_0:1; /* XR1[0:0] - Write */
978 BYTE SO_1:1; /* XR1[1:1] - Write */
980 BYTE SO_2:1; /* XR1[2:2] - Write */
982 BYTE unused:5; /* XR1[3:7] - Write */
987 union /* XOP - XR6 Register - Write values */
990 struct _XR6_BITREGSW {
991 BYTE unused1:4; /* XR6[0:3] */
993 BYTE CLK_OFF:1; /* XR6[4:4] */
995 BYTE unused2:3; /* XR6[5:7] */
1002 #define ALISDAA_ID_BYTE 0x81
1003 #define ALISDAA_CALLERID_SIZE 512
1005 /*------------------------------ */
1007 /* Misc definitions */
1010 /* Power Up Operation */
1011 #define SOP_PU_SLEEP 0
1012 #define SOP_PU_RINGING 1
1013 #define SOP_PU_CONVERSATION 2
1014 #define SOP_PU_PULSEDIALING 3
1015 #define SOP_PU_RESET 4
1017 #define ALISDAA_CALLERID_SIZE 512
1019 #define PLAYBACK_MODE_COMPRESSED 0 /* Selects: Compressed modes, TrueSpeech 8.5-4.1, G.723.1, G.722, G.728, G.729 */
1020 #define PLAYBACK_MODE_TRUESPEECH_V40 0 /* Selects: TrueSpeech 8.5, 6.3, 5.3, 4.8 or 4.1 Kbps */
1021 #define PLAYBACK_MODE_TRUESPEECH 8 /* Selects: TrueSpeech 8.5, 6.3, 5.3, 4.8 or 4.1 Kbps Version 5.1 */
1022 #define PLAYBACK_MODE_ULAW 2 /* Selects: 64 Kbit/sec MuA-law PCM */
1023 #define PLAYBACK_MODE_ALAW 10 /* Selects: 64 Kbit/sec A-law PCM */
1024 #define PLAYBACK_MODE_16LINEAR 6 /* Selects: 128 Kbit/sec 16-bit linear */
1025 #define PLAYBACK_MODE_8LINEAR 4 /* Selects: 64 Kbit/sec 8-bit signed linear */
1026 #define PLAYBACK_MODE_8LINEAR_WSS 5 /* Selects: 64 Kbit/sec WSS 8-bit unsigned linear */
1028 #define RECORD_MODE_COMPRESSED 0 /* Selects: Compressed modes, TrueSpeech 8.5-4.1, G.723.1, G.722, G.728, G.729 */
1029 #define RECORD_MODE_TRUESPEECH 0 /* Selects: TrueSpeech 8.5, 6.3, 5.3, 4.8 or 4.1 Kbps */
1030 #define RECORD_MODE_ULAW 4 /* Selects: 64 Kbit/sec Mu-law PCM */
1031 #define RECORD_MODE_ALAW 12 /* Selects: 64 Kbit/sec A-law PCM */
1032 #define RECORD_MODE_16LINEAR 5 /* Selects: 128 Kbit/sec 16-bit linear */
1033 #define RECORD_MODE_8LINEAR 6 /* Selects: 64 Kbit/sec 8-bit signed linear */
1034 #define RECORD_MODE_8LINEAR_WSS 7 /* Selects: 64 Kbit/sec WSS 8-bit unsigned linear */
1037 PLD_SLIC_STATE_OC = 0,
1038 PLD_SLIC_STATE_RINGING,
1039 PLD_SLIC_STATE_ACTIVE,
1041 PLD_SLIC_STATE_TIPOPEN,
1042 PLD_SLIC_STATE_STANDBY,
1044 PLD_SLIC_STATE_OHTPR
1058 V3_TO_V4, V4_TO_V3, V4_TO_V5, V5_TO_V4
1061 typedef struct Proc_Info_Tag {
1062 enum Mode convert_mode;
1063 enum Dir convert_dir;
1064 int Prev_Frame_Type;
1065 int Current_Frame_Type;
1075 enum IXJ_EXTENSIONS {
1089 unsigned int filter;
1090 unsigned int state; /* State 0 when cadence has not started. */
1092 unsigned int on1; /* State 1 */
1094 unsigned long on1min; /* State 1 - 10% + jiffies */
1095 unsigned long on1dot; /* State 1 + jiffies */
1097 unsigned long on1max; /* State 1 + 10% + jiffies */
1099 unsigned int off1; /* State 2 */
1101 unsigned long off1min;
1102 unsigned long off1dot; /* State 2 + jiffies */
1103 unsigned long off1max;
1104 unsigned int on2; /* State 3 */
1106 unsigned long on2min;
1107 unsigned long on2dot;
1108 unsigned long on2max;
1109 unsigned int off2; /* State 4 */
1111 unsigned long off2min;
1112 unsigned long off2dot; /* State 4 + jiffies */
1113 unsigned long off2max;
1114 unsigned int on3; /* State 5 */
1116 unsigned long on3min;
1117 unsigned long on3dot;
1118 unsigned long on3max;
1119 unsigned int off3; /* State 6 */
1121 unsigned long off3min;
1122 unsigned long off3dot; /* State 6 + jiffies */
1123 unsigned long off3max;
1127 unsigned int busytone:1;
1128 unsigned int dialtone:1;
1129 unsigned int ringback:1;
1130 unsigned int ringing:1;
1131 unsigned int playing:1;
1132 unsigned int recording:1;
1133 unsigned int cringing:1;
1134 unsigned int play_first_frame:1;
1135 unsigned int pstn_present:1;
1136 unsigned int pstn_ringing:1;
1137 unsigned int pots_correct:1;
1138 unsigned int pots_pstn:1;
1139 unsigned int g729_loaded:1;
1140 unsigned int ts85_loaded:1;
1141 unsigned int dtmf_oob:1; /* DTMF Out-Of-Band */
1143 unsigned int pcmciascp:1; /* SmartCABLE Present */
1145 unsigned int pcmciasct:2; /* SmartCABLE Type */
1147 unsigned int pcmciastate:3; /* SmartCABLE Init State */
1149 unsigned int inwrite:1; /* Currently writing */
1151 unsigned int inread:1; /* Currently reading */
1153 unsigned int incheck:1; /* Currently checking the SmartCABLE */
1155 unsigned int cidplay:1; /* Currently playing Caller ID */
1157 unsigned int cidring:1; /* This is the ring for Caller ID */
1159 unsigned int cidsent:1; /* Caller ID has been sent */
1161 unsigned int cidcw_ack:1; /* Caller ID CW ACK (from CPE) */
1162 unsigned int firstring:1; /* First ring cadence is complete */
1163 unsigned int pstncheck:1; /* Currently checking the PSTN Line */
1164 unsigned int pstn_rmr:1;
1165 unsigned int x:3; /* unsed bits */
1169 /******************************************************************************
1171 * This structure holds the state of all of the Quicknet cards
1173 ******************************************************************************/
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 #if LINUX_VERSION_CODE < 0x020400
1186 struct pnp_dev *dev;
1188 struct pci_dev *dev;
1190 unsigned int cardtype;
1191 unsigned int rec_codec;
1192 unsigned int cid_rec_codec;
1193 unsigned int cid_rec_volume;
1194 unsigned char cid_rec_flag;
1196 unsigned int play_codec;
1197 unsigned int cid_play_codec;
1198 unsigned int cid_play_volume;
1199 unsigned char cid_play_flag;
1202 unsigned int busyflags;
1203 unsigned int rec_frame_size;
1204 unsigned int play_frame_size;
1205 unsigned int cid_play_frame_size;
1206 unsigned int cid_base_frame_size;
1207 unsigned long cidcw_wait;
1209 int cid_play_aec_level;
1210 int readers, writers;
1211 #if LINUX_VERSION_CODE < 0x020400
1212 struct wait_queue *poll_q;
1213 struct wait_queue *read_q;
1215 wait_queue_head_t poll_q;
1216 wait_queue_head_t read_q;
1218 char *read_buffer, *read_buffer_end;
1219 char *read_convert_buffer;
1220 unsigned int read_buffer_size;
1221 unsigned int read_buffer_ready;
1222 #if LINUX_VERSION_CODE < 0x020400
1223 struct wait_queue *write_q;
1225 wait_queue_head_t write_q;
1227 char *write_buffer, *write_buffer_end;
1228 char *write_convert_buffer;
1229 unsigned int write_buffer_size;
1230 unsigned int write_buffers_empty;
1231 unsigned long drybuffer;
1232 char *write_buffer_rp, *write_buffer_wp;
1233 char dtmfbuffer[80];
1235 int dtmf_wp, dtmf_rp, dtmf_state, dtmf_proc;
1236 int tone_off_time, tone_on_time;
1237 struct fasync_struct *async_queue;
1238 unsigned long tone_start_jif;
1242 IXJ_CADENCE *cadence_t;
1243 IXJ_CADENCE *cadence_r;
1244 int tone_cadence_state;
1245 IXJ_CADENCE_F cadence_f[6];
1257 PLD_SLICW pld_slicw;
1258 PLD_SLICR pld_slicr;
1259 PLD_CLOCK pld_clock;
1273 unsigned short ring_cadence;
1275 unsigned long ring_cadence_jif;
1276 unsigned long checkwait;
1284 unsigned char fskphase;
1285 unsigned char fskcnt;
1286 unsigned int cidsize;
1287 unsigned int cidcnt;
1288 unsigned pstn_cid_received;
1291 unsigned long pstn_ring_int;
1292 unsigned long pstn_ring_start;
1293 unsigned long pstn_ring_stop;
1294 unsigned long pstn_winkstart;
1295 unsigned long pstn_last_rmr;
1296 unsigned long pstn_prev_rmr;
1297 unsigned long pots_winkstart;
1298 unsigned int winktime;
1299 unsigned long flash_end;
1302 union telephony_exception ex;
1303 union telephony_exception ex_sig;
1304 int ixj_signals[35];
1308 unsigned long pstn_sleeptil;
1309 DAA_REGS m_DAAShadowRegs;
1310 Proc_Info_Type Info_read;
1311 Proc_Info_Type Info_write;
1312 unsigned short frame_count;
1313 unsigned int filter_hist[4];
1314 unsigned char filter_en[4];
1315 unsigned short proc_load;
1316 unsigned long framesread;
1317 unsigned long frameswritten;
1318 unsigned long read_wait;
1319 unsigned long write_wait;
1320 unsigned long timerchecks;
1321 unsigned long txreadycheck;
1322 unsigned long rxreadycheck;
1323 unsigned long statuswait;
1324 unsigned long statuswaitfail;
1325 unsigned long pcontrolwait;
1326 unsigned long pcontrolwaitfail;
1327 unsigned long iscontrolready;
1328 unsigned long iscontrolreadyfail;
1329 unsigned long pstnstatecheck;
1330 #ifdef IXJ_DYN_ALLOC
1333 short fskdata[8000];
1339 typedef int (*IXJ_REGFUNC) (IXJ * j, unsigned long arg);
1341 extern IXJ *ixj_pcmcia_probe(unsigned long, unsigned long);