1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41static char ixj_h_rcsid[] = "$Id: ixj.h,v 4.1 2001/08/04 14:49:27 craigs Exp $";
42
43#define IXJ_VERSION 3031
44
45#include <linux/types.h>
46
47#include <linux/ixjuser.h>
48#include <linux/phonedev.h>
49
50typedef __u16 WORD;
51typedef __u32 DWORD;
52typedef __u8 BYTE;
53typedef __u8 BOOL;
54
55#ifndef IXJMAX
56#define IXJMAX 16
57#endif
58
59#define TRUE 1
60#define FALSE 0
61
62#ifndef min
63#define min(a,b) (((a)<(b))?(a):(b))
64#endif
65#ifndef max
66#define max(a,b) (((a)>(b))?(a):(b))
67#endif
68
69
70
71
72
73
74
75typedef struct {
76 unsigned char low;
77 unsigned char high;
78} BYTES;
79
80typedef union {
81 BYTES bytes;
82 short word;
83} IXJ_WORD;
84
85typedef struct{
86 unsigned int b0:1;
87 unsigned int b1:1;
88 unsigned int b2:1;
89 unsigned int b3:1;
90 unsigned int b4:1;
91 unsigned int b5:1;
92 unsigned int b6:1;
93 unsigned int b7:1;
94} IXJ_CBITS;
95
96typedef union{
97 IXJ_CBITS cbits;
98 char cbyte;
99} IXJ_CBYTE;
100
101
102
103
104
105
106
107
108typedef struct {
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;
118 unsigned int cont:1;
119 unsigned int irqn:1;
120 unsigned int t:5;
121} HCRBIT;
122
123typedef union {
124 HCRBIT bits;
125 BYTES bytes;
126} HCR;
127
128
129
130
131
132
133
134
135typedef struct {
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;
143 unsigned int irqn:1;
144 unsigned int rxdma:1;
145 unsigned int txdma:1;
146 unsigned int cohostshutdown:1;
147 unsigned int t:5;
148} HSRBIT;
149
150typedef union {
151 HSRBIT bits;
152 BYTES bytes;
153} HSR;
154
155
156
157
158
159
160
161
162typedef struct {
163 unsigned int x:1;
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;
179} GPIOBIT;
180
181typedef union {
182 GPIOBIT bits;
183 BYTES bytes;
184 unsigned short word;
185} GPIO;
186
187
188
189
190
191
192typedef struct {
193 unsigned int digit:4;
194 unsigned int cpf_valid:1;
195 unsigned int dtmf_valid:1;
196 unsigned int peak:1;
197 unsigned int z:1;
198 unsigned int f0:1;
199 unsigned int f1:1;
200 unsigned int f2:1;
201 unsigned int f3:1;
202 unsigned int frame:4;
203} LMON;
204
205typedef union {
206 LMON bits;
207 BYTES bytes;
208} DTMF;
209
210typedef struct {
211 unsigned int z:7;
212 unsigned int dtmf_en:1;
213 unsigned int y:4;
214 unsigned int F3:1;
215 unsigned int F2:1;
216 unsigned int F1:1;
217 unsigned int F0:1;
218} CP;
219
220typedef union {
221 CP bits;
222 BYTES bytes;
223} CPTF;
224
225
226
227
228
229
230
231typedef struct {
232 unsigned int c0:1;
233 unsigned int c1:1;
234 unsigned int stereo:1;
235 unsigned int daafsyncen:1;
236 unsigned int led1:1;
237 unsigned int led2:1;
238 unsigned int led3:1;
239 unsigned int led4:1;
240} PSCRWI;
241
242typedef struct {
243 unsigned int eidp:1;
244 unsigned int eisd:1;
245 unsigned int x:6;
246} PSCRWP;
247
248typedef union {
249 PSCRWI bits;
250 PSCRWP pcib;
251 char byte;
252} PLD_SCRW;
253
254typedef struct {
255 unsigned int c0:1;
256 unsigned int c1:1;
257 unsigned int x:1;
258 unsigned int d0ee:1;
259 unsigned int mixerbusy:1;
260 unsigned int sci:1;
261 unsigned int dspflag:1;
262 unsigned int daaflag:1;
263} PSCRRI;
264
265typedef struct {
266 unsigned int eidp:1;
267 unsigned int eisd:1;
268 unsigned int x:4;
269 unsigned int dspflag:1;
270 unsigned int det:1;
271} PSCRRP;
272
273typedef union {
274 PSCRRI bits;
275 PSCRRP pcib;
276 char byte;
277} PLD_SCRR;
278
279
280
281
282
283
284
285typedef struct {
286 unsigned int c1:1;
287 unsigned int c2:1;
288 unsigned int c3:1;
289 unsigned int b2en:1;
290 unsigned int spken:1;
291 unsigned int rly1:1;
292 unsigned int rly2:1;
293 unsigned int rly3:1;
294} PSLICWRITE;
295
296typedef struct {
297 unsigned int state:3;
298 unsigned int b2en:1;
299 unsigned int spken:1;
300 unsigned int c3:1;
301 unsigned int potspstn:1;
302 unsigned int det:1;
303} PSLICREAD;
304
305typedef struct {
306 unsigned int c1:1;
307 unsigned int c2:1;
308 unsigned int c3:1;
309 unsigned int b2en:1;
310 unsigned int e1:1;
311 unsigned int mic:1;
312 unsigned int spk:1;
313 unsigned int x:1;
314} PSLICPCI;
315
316typedef union {
317 PSLICPCI pcib;
318 PSLICWRITE bits;
319 PSLICREAD slic;
320 char byte;
321} PLD_SLICW;
322
323typedef union {
324 PSLICPCI pcib;
325 PSLICREAD bits;
326 char byte;
327} PLD_SLICR;
328
329
330
331
332
333
334
335typedef struct {
336 unsigned int clk0:1;
337 unsigned int clk1:1;
338 unsigned int clk2:1;
339 unsigned int x0:1;
340 unsigned int slic_e1:1;
341 unsigned int x1:1;
342 unsigned int x2:1;
343 unsigned int x3:1;
344} PCLOCK;
345
346typedef union {
347 PCLOCK bits;
348 char byte;
349} PLD_CLOCK;
350
351
352
353
354
355
356
357typedef struct {
358 unsigned short vol[10];
359 unsigned int recsrc;
360 unsigned int modcnt;
361 unsigned short micpreamp;
362} MIX;
363
364
365
366
367
368
369typedef struct {
370 unsigned int x0:4;
371
372 unsigned int ed:1;
373
374 unsigned int drf:1;
375
376 unsigned int dspf:1;
377
378 unsigned int crr:1;
379
380} COMMAND_REG1;
381
382typedef union {
383 COMMAND_REG1 bits;
384 unsigned char byte;
385} PCMCIA_CR1;
386
387typedef struct {
388 unsigned int x0:4;
389
390 unsigned int rstc:1;
391
392 unsigned int pwr:1;
393
394 unsigned int x1:2;
395
396} COMMAND_REG2;
397
398typedef union {
399 COMMAND_REG2 bits;
400 unsigned char byte;
401} PCMCIA_CR2;
402
403typedef struct {
404 unsigned int addr:5;
405
406 unsigned int rw:1;
407
408 unsigned int dev:2;
409
410} CONTROL_REG;
411
412typedef union {
413 CONTROL_REG bits;
414 unsigned char byte;
415} PCMCIA_SCCR;
416
417typedef struct {
418 unsigned int hsw:1;
419 unsigned int det:1;
420 unsigned int led2:1;
421 unsigned int led1:1;
422 unsigned int ring1:1;
423 unsigned int ring0:1;
424 unsigned int x:1;
425 unsigned int powerdown:1;
426} PCMCIA_SLIC_REG;
427
428typedef union {
429 PCMCIA_SLIC_REG bits;
430 unsigned char byte;
431} PCMCIA_SLIC;
432
433typedef struct {
434 unsigned int cpd:1;
435
436 unsigned int mpd:1;
437
438 unsigned int hpd:1;
439
440 unsigned int lpd:1;
441
442 unsigned int spd:1;
443
444 unsigned int x:2;
445
446 unsigned int sr:1;
447
448} Si3CONTROL1;
449
450typedef union {
451 Si3CONTROL1 bits;
452 unsigned char byte;
453} Si3C1;
454
455typedef struct {
456 unsigned int al:1;
457
458 unsigned int dl2:1;
459
460 unsigned int dl1:1;
461
462 unsigned int pll:1;
463
464 unsigned int hpd:1;
465
466 unsigned int x:3;
467
468} Si3CONTROL2;
469
470typedef union {
471 Si3CONTROL2 bits;
472 unsigned char byte;
473} Si3C2;
474
475typedef struct {
476 unsigned int iir:1;
477
478 unsigned int him:1;
479
480 unsigned int mcm:1;
481
482 unsigned int mcg:2;
483
484 unsigned int lim:1;
485
486 unsigned int lig:2;
487
488} Si3RXGAIN;
489
490typedef union {
491 Si3RXGAIN bits;
492 unsigned char byte;
493} Si3RXG;
494
495typedef struct {
496 unsigned int hom:1;
497
498 unsigned int lom:1;
499
500 unsigned int rxg:5;
501
502 unsigned int x:1;
503
504} Si3ADCVOLUME;
505
506typedef union {
507 Si3ADCVOLUME bits;
508 unsigned char byte;
509} Si3ADC;
510
511typedef struct {
512 unsigned int srm:1;
513
514 unsigned int slm:1;
515
516 unsigned int txg:5;
517
518 unsigned int x:1;
519
520} Si3DACVOLUME;
521
522typedef union {
523 Si3DACVOLUME bits;
524 unsigned char byte;
525} Si3DAC;
526
527typedef struct {
528 unsigned int x:5;
529
530 unsigned int losc:1;
531
532 unsigned int srsc:1;
533
534 unsigned int slsc:1;
535
536} Si3STATUSREPORT;
537
538typedef union {
539 Si3STATUSREPORT bits;
540 unsigned char byte;
541} Si3STAT;
542
543typedef struct {
544 unsigned int sot:2;
545
546 unsigned int lot:2;
547
548 unsigned int x:4;
549
550} Si3ANALOGATTN;
551
552typedef union {
553 Si3ANALOGATTN bits;
554 unsigned char byte;
555} Si3AATT;
556
557
558
559
560
561
562
563typedef struct _DAA_REGS {
564
565
566
567 BYTE bySOP;
568
569 union _SOP_REGS {
570 struct _SOP {
571 union
572 {
573 BYTE reg;
574 struct _CR0_BITREGS {
575 BYTE CLK_EXT:1;
576
577 BYTE RIP:1;
578
579 BYTE AR:1;
580
581 BYTE AX:1;
582
583 BYTE FRR:1;
584
585 BYTE FRX:1;
586
587 BYTE IM:1;
588
589 BYTE TH:1;
590
591 } bitreg;
592 } cr0;
593
594 union
595 {
596 BYTE reg;
597 struct _CR1_REGS {
598 BYTE RM:1;
599
600 BYTE RMR:1;
601
602 BYTE No_auto:1;
603
604 BYTE Pulse:1;
605
606 BYTE P_Tone1:1;
607
608 BYTE P_Tone2:1;
609
610 BYTE E_Tone1:1;
611
612 BYTE E_Tone2:1;
613
614 } bitreg;
615 } cr1;
616
617 union
618 {
619 BYTE reg;
620 struct _CR2_REGS {
621 BYTE Call_II:1;
622
623 BYTE Call_I:1;
624
625 BYTE Call_en:1;
626
627 BYTE Call_pon:1;
628
629 BYTE IDR:1;
630
631 BYTE COT_R:3;
632
633 } bitreg;
634 } cr2;
635
636 union
637 {
638 BYTE reg;
639 struct _CR3_REGS {
640 BYTE DHP_X:1;
641
642 BYTE DHP_R:1;
643
644 BYTE Cal_pctl:1;
645
646 BYTE SEL:1;
647
648 BYTE TestLoops:4;
649
650 } bitreg;
651 } cr3;
652
653 union
654 {
655 BYTE reg;
656 struct _CR4_REGS {
657 BYTE Fsc_en:1;
658
659 BYTE Int_en:1;
660
661 BYTE AGX:2;
662
663 BYTE AGR_R:2;
664
665 BYTE AGR_Z:2;
666
667 } bitreg;
668 } cr4;
669
670 union
671 {
672 BYTE reg;
673 struct _CR5_REGS {
674 BYTE V_0:1;
675
676 BYTE V_1:1;
677
678 BYTE V_2:1;
679
680 BYTE V_3:1;
681
682 BYTE V_4:1;
683
684 BYTE V_5:1;
685
686 BYTE V_6:1;
687
688 BYTE V_7:1;
689
690 } bitreg;
691 } cr5;
692
693 union
694 {
695 BYTE reg;
696 struct _CR6_REGS {
697 BYTE reserved:8;
698
699 } bitreg;
700 } cr6;
701
702 union
703 {
704 BYTE reg;
705 struct _CR7_REGS {
706 BYTE reserved:8;
707
708 } bitreg;
709 } cr7;
710 } SOP;
711
712 BYTE ByteRegs[sizeof(struct _SOP)];
713
714 } SOP_REGS;
715
716
717
718
719
720
721
722
723
724 BYTE byXOP;
725
726 union _XOP_REGS {
727 struct _XOP {
728 union XOPXR0
729 {
730 BYTE reg;
731 struct _XR0_BITREGS {
732 BYTE SI_0:1;
733
734 BYTE SI_1:1;
735
736 BYTE VDD_OK:1;
737
738 BYTE Caller_ID:1;
739
740 BYTE RING:1;
741
742 BYTE Cadence:1;
743
744 BYTE Wake_up:1;
745
746 BYTE RMR:1;
747
748 } bitreg;
749 } xr0;
750
751 union
752 {
753 BYTE reg;
754 struct _XR1_BITREGS {
755 BYTE M_SI_0:1;
756
757 BYTE M_SI_1:1;
758
759 BYTE M_VDD_OK:1;
760
761 BYTE M_Caller_ID:1;
762
763 BYTE M_RING:1;
764
765 BYTE M_Cadence:1;
766
767 BYTE M_Wake_up:1;
768
769 BYTE unused:1;
770
771 } bitreg;
772 } xr1;
773
774 union
775 {
776 BYTE reg;
777 struct _XR2_BITREGS {
778 BYTE CTO0:1;
779
780 BYTE CTO1:1;
781
782 BYTE CTO2:1;
783
784 BYTE CTO3:1;
785
786 BYTE CTO4:1;
787
788 BYTE CTO5:1;
789
790 BYTE CTO6:1;
791
792 BYTE CTO7:1;
793
794 } bitreg;
795 } xr2;
796
797 union
798 {
799 BYTE reg;
800 struct _XR3_BITREGS {
801 BYTE DCR0:1;
802
803 BYTE DCR1:1;
804
805 BYTE DCI:1;
806
807 BYTE DCU0:1;
808
809 BYTE DCU1:1;
810
811 BYTE B_off:1;
812
813 BYTE AGB0:1;
814
815 BYTE AGB1:1;
816
817 } bitreg;
818 } xr3;
819
820 union
821 {
822 BYTE reg;
823 struct _XR4_BITREGS {
824 BYTE C_0:1;
825
826 BYTE C_1:1;
827
828 BYTE C_2:1;
829
830 BYTE C_3:1;
831
832 BYTE C_4:1;
833
834 BYTE C_5:1;
835
836 BYTE C_6:1;
837
838 BYTE C_7:1;
839
840 } bitreg;
841 } xr4;
842
843 union
844 {
845 BYTE reg;
846 struct _XR5_BITREGS {
847 BYTE T_0:1;
848
849 BYTE T_1:1;
850
851 BYTE T_2:1;
852
853 BYTE T_3:1;
854
855 BYTE T_4:1;
856
857 BYTE T_5:1;
858
859 BYTE T_6:1;
860
861 BYTE T_7:1;
862
863 } bitreg;
864 } xr5;
865
866 union
867 {
868 BYTE reg;
869 struct _XR6_BITREGS {
870 BYTE CPS0:1;
871
872 BYTE CPS1:1;
873
874 BYTE unused1:2;
875
876 BYTE CLK_OFF:1;
877
878 BYTE unused2:3;
879
880 } bitreg;
881 } xr6;
882
883 union
884 {
885 BYTE reg;
886 struct _XR7_BITREGS {
887 BYTE unused1:1;
888
889 BYTE Vdd0:1;
890
891 BYTE Vdd1:1;
892
893 BYTE unused2:5;
894
895 } bitreg;
896 } xr7;
897 } XOP;
898
899 BYTE ByteRegs[sizeof(struct _XOP)];
900
901 } XOP_REGS;
902
903
904
905
906
907
908
909
910
911 BYTE byCOP;
912
913 union _COP_REGS {
914 struct _COP {
915 BYTE THFilterCoeff_1[8];
916
917 BYTE THFilterCoeff_2[8];
918
919 BYTE THFilterCoeff_3[8];
920
921 BYTE RingerImpendance_1[8];
922
923 BYTE IMFilterCoeff_1[8];
924
925 BYTE IMFilterCoeff_2[8];
926
927 BYTE RingerImpendance_2[8];
928
929 BYTE FRRFilterCoeff[8];
930
931 BYTE FRXFilterCoeff[8];
932
933 BYTE ARFilterCoeff[4];
934
935 BYTE AXFilterCoeff[4];
936
937 BYTE Tone1Coeff[4];
938
939 BYTE Tone2Coeff[4];
940
941 BYTE LevelmeteringRinging[4];
942
943 BYTE CallerID1stTone[8];
944
945 BYTE CallerID2ndTone[8];
946
947 } COP;
948
949 BYTE ByteRegs[sizeof(struct _COP)];
950
951 } COP_REGS;
952
953
954
955
956
957
958
959
960
961 BYTE byCAO;
962
963 union _CAO_REGS {
964 struct _CAO {
965 BYTE CallerID[512];
966
967 } CAO;
968
969 BYTE ByteRegs[sizeof(struct _CAO)];
970 } CAO_REGS;
971
972 union
973 {
974 BYTE reg;
975 struct _XR0_BITREGSW {
976 BYTE SO_0:1;
977
978 BYTE SO_1:1;
979
980 BYTE SO_2:1;
981
982 BYTE unused:5;
983
984 } bitreg;
985 } XOP_xr0_W;
986
987 union
988 {
989 BYTE reg;
990 struct _XR6_BITREGSW {
991 BYTE unused1:4;
992
993 BYTE CLK_OFF:1;
994
995 BYTE unused2:3;
996
997 } bitreg;
998 } XOP_xr6_W;
999
1000} DAA_REGS;
1001
1002#define ALISDAA_ID_BYTE 0x81
1003#define ALISDAA_CALLERID_SIZE 512
1004
1005
1006
1007
1008
1009
1010
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
1016
1017#define ALISDAA_CALLERID_SIZE 512
1018
1019#define PLAYBACK_MODE_COMPRESSED 0
1020#define PLAYBACK_MODE_TRUESPEECH_V40 0
1021#define PLAYBACK_MODE_TRUESPEECH 8
1022#define PLAYBACK_MODE_ULAW 2
1023#define PLAYBACK_MODE_ALAW 10
1024#define PLAYBACK_MODE_16LINEAR 6
1025#define PLAYBACK_MODE_8LINEAR 4
1026#define PLAYBACK_MODE_8LINEAR_WSS 5
1027
1028#define RECORD_MODE_COMPRESSED 0
1029#define RECORD_MODE_TRUESPEECH 0
1030#define RECORD_MODE_ULAW 4
1031#define RECORD_MODE_ALAW 12
1032#define RECORD_MODE_16LINEAR 5
1033#define RECORD_MODE_8LINEAR 6
1034#define RECORD_MODE_8LINEAR_WSS 7
1035
1036enum SLIC_STATES {
1037 PLD_SLIC_STATE_OC = 0,
1038 PLD_SLIC_STATE_RINGING,
1039 PLD_SLIC_STATE_ACTIVE,
1040 PLD_SLIC_STATE_OHT,
1041 PLD_SLIC_STATE_TIPOPEN,
1042 PLD_SLIC_STATE_STANDBY,
1043 PLD_SLIC_STATE_APR,
1044 PLD_SLIC_STATE_OHTPR
1045};
1046
1047enum SCI_CONTROL {
1048 SCI_End = 0,
1049 SCI_Enable_DAA,
1050 SCI_Enable_Mixer,
1051 SCI_Enable_EEPROM
1052};
1053
1054enum Mode {
1055 T63, T53, T48, T40
1056};
1057enum Dir {
1058 V3_TO_V4, V4_TO_V3, V4_TO_V5, V5_TO_V4
1059};
1060
1061typedef struct Proc_Info_Tag {
1062 enum Mode convert_mode;
1063 enum Dir convert_dir;
1064 int Prev_Frame_Type;
1065 int Current_Frame_Type;
1066} Proc_Info_Type;
1067
1068enum PREVAL {
1069 NORMAL = 0,
1070 NOPOST,
1071 POSTONLY,
1072 PREERROR
1073};
1074
1075enum IXJ_EXTENSIONS {
1076 G729LOADER = 0,
1077 TS85LOADER,
1078 PRE_READ,
1079 POST_READ,
1080 PRE_WRITE,
1081 POST_WRITE,
1082 PRE_IOCTL,
1083 POST_IOCTL
1084};
1085
1086typedef struct {
1087 char enable;
1088 char en_filter;
1089 unsigned int filter;
1090 unsigned int state;
1091
1092 unsigned int on1;
1093
1094 unsigned long on1min;
1095 unsigned long on1dot;
1096
1097 unsigned long on1max;
1098
1099 unsigned int off1;
1100
1101 unsigned long off1min;
1102 unsigned long off1dot;
1103 unsigned long off1max;
1104 unsigned int on2;
1105
1106 unsigned long on2min;
1107 unsigned long on2dot;
1108 unsigned long on2max;
1109 unsigned int off2;
1110
1111 unsigned long off2min;
1112 unsigned long off2dot;
1113 unsigned long off2max;
1114 unsigned int on3;
1115
1116 unsigned long on3min;
1117 unsigned long on3dot;
1118 unsigned long on3max;
1119 unsigned int off3;
1120
1121 unsigned long off3min;
1122 unsigned long off3dot;
1123 unsigned long off3max;
1124} IXJ_CADENCE_F;
1125
1126typedef struct {
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;
1142
1143 unsigned int pcmciascp:1;
1144
1145 unsigned int pcmciasct:2;
1146
1147 unsigned int pcmciastate:3;
1148
1149 unsigned int inwrite:1;
1150
1151 unsigned int inread:1;
1152
1153 unsigned int incheck:1;
1154
1155 unsigned int cidplay:1;
1156
1157 unsigned int cidring:1;
1158
1159 unsigned int cidsent:1;
1160
1161 unsigned int cidcw_ack:1;
1162 unsigned int firstring:1;
1163 unsigned int pstncheck:1;
1164 unsigned int pstn_rmr:1;
1165 unsigned int x:3;
1166
1167} IXJ_FLAGS;
1168
1169
1170
1171
1172
1173
1174
1175typedef struct {
1176 struct phone_device p;
1177 struct timer_list timer;
1178 unsigned int board;
1179 unsigned int DSPbase;
1180 unsigned int XILINXbase;
1181 unsigned int serial;
1182 atomic_t DSPWrite;
1183 struct phone_capability caplist[30];
1184 unsigned int caps;
1185#if LINUX_VERSION_CODE < 0x020400
1186 struct pnp_dev *dev;
1187#else
1188 struct pci_dev *dev;
1189#endif
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;
1195 char rec_mode;
1196 unsigned int play_codec;
1197 unsigned int cid_play_codec;
1198 unsigned int cid_play_volume;
1199 unsigned char cid_play_flag;
1200 char play_mode;
1201 IXJ_FLAGS flags;
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;
1208 int aec_level;
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;
1214#else
1215 wait_queue_head_t poll_q;
1216 wait_queue_head_t read_q;
1217#endif
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;
1224#else
1225 wait_queue_head_t write_q;
1226#endif
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];
1234 char dtmf_current;
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;
1239 char tone_index;
1240 char tone_state;
1241 char maxrings;
1242 IXJ_CADENCE *cadence_t;
1243 IXJ_CADENCE *cadence_r;
1244 int tone_cadence_state;
1245 IXJ_CADENCE_F cadence_f[6];
1246 DTMF dtmf;
1247 CPTF cptf;
1248 BYTES dsp;
1249 BYTES ver;
1250 BYTES scr;
1251 BYTES ssr;
1252 BYTES baseframe;
1253 HSR hsr;
1254 GPIO gpio;
1255 PLD_SCRR pld_scrr;
1256 PLD_SCRW pld_scrw;
1257 PLD_SLICW pld_slicw;
1258 PLD_SLICR pld_slicr;
1259 PLD_CLOCK pld_clock;
1260 PCMCIA_CR1 pccr1;
1261 PCMCIA_CR2 pccr2;
1262 PCMCIA_SCCR psccr;
1263 PCMCIA_SLIC pslic;
1264 char pscdd;
1265 Si3C1 sic1;
1266 Si3C2 sic2;
1267 Si3RXG sirxg;
1268 Si3ADC siadc;
1269 Si3DAC sidac;
1270 Si3STAT sistat;
1271 Si3AATT siaatt;
1272 MIX mix;
1273 unsigned short ring_cadence;
1274 int ring_cadence_t;
1275 unsigned long ring_cadence_jif;
1276 unsigned long checkwait;
1277 int intercom;
1278 int m_hook;
1279 int r_hook;
1280 int p_hook;
1281 char pstn_envelope;
1282 char pstn_cid_intr;
1283 unsigned char fskz;
1284 unsigned char fskphase;
1285 unsigned char fskcnt;
1286 unsigned int cidsize;
1287 unsigned int cidcnt;
1288 unsigned pstn_cid_received;
1289 PHONE_CID cid;
1290 PHONE_CID cid_send;
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;
1300 char port;
1301 char hookstate;
1302 union telephony_exception ex;
1303 union telephony_exception ex_sig;
1304 int ixj_signals[35];
1305 IXJ_SIGDEF sigdef;
1306 char daa_mode;
1307 char daa_country;
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
1331 short *fskdata;
1332#else
1333 short fskdata[8000];
1334#endif
1335 int fsksize;
1336 int fskdcnt;
1337} IXJ;
1338
1339typedef int (*IXJ_REGFUNC) (IXJ * j, unsigned long arg);
1340
1341extern IXJ *ixj_pcmcia_probe(unsigned long, unsigned long);
1342
1343