81 unsigned int ui_ConfigType;
88 switch (ui_ConfigType) {
92 (
unsigned char) data[0],
93 (
unsigned char) data[1],
94 (
unsigned char) data[2], (
unsigned char) data[3], (
unsigned char) data[4]);
99 (
unsigned char *) &data[0]);
105 (
unsigned char) data[0],
106 (
unsigned char) data[1], (
unsigned char) data[2], (
unsigned char) data[3]);
117 (
unsigned char) data[0], (
unsigned char) data[1]);
128 (
unsigned char) data[0],
129 (
unsigned char) data[1], (
unsigned int) data[2], (
unsigned int *) &data[0]);
133 printk(
"Insn Config : Config Parameter Wrong\n");
137 if (i_ReturnValue >= 0)
138 i_ReturnValue = insn->
n;
304 unsigned char b_CounterRange,
305 unsigned char b_FirstCounterModus,
306 unsigned char b_FirstCounterOption,
307 unsigned char b_SecondCounterModus,
unsigned char b_SecondCounterOption)
316 dw_MolduleConfiguration[b_ModulNbr] & 0xFFFF0000UL) ==
337 && (b_FirstCounterOption ==
339 || b_FirstCounterOption
341 || (b_FirstCounterModus !=
343 && (b_FirstCounterOption ==
345 || b_FirstCounterOption
353 if (b_CounterRange ==
359 if ((b_FirstCounterModus !=
362 (b_SecondCounterModus
373 || (b_FirstCounterModus
393 DPRINTK(
"The selected second counter operating option is wrong\n");
402 DPRINTK(
"The selected second counter operating mode is wrong\n");
411 DPRINTK(
"The selected first counter operating option is wrong\n");
418 DPRINTK(
"The selected first counter operating mode is wrong\n");
426 DPRINTK(
"The selected counter range is wrong\n");
434 if (i_ReturnValue == 0) {
442 s_SiemensCounterInfo.
445 b_ModeRegister1 = b_CounterRange |
446 b_FirstCounterModus |
447 b_FirstCounterOption;
451 s_SiemensCounterInfo.
454 b_ModeRegister1 = b_CounterRange |
455 (b_FirstCounterModus & 0x5) |
456 (b_FirstCounterOption & 0x20) |
457 (b_SecondCounterModus & 0xA) |
458 (b_SecondCounterOption & 0x40);
467 s_SiemensCounterInfo.
472 s_SiemensCounterInfo.
485 s_SiemensCounterInfo.
487 dw_ModeRegister1_2_3_4,
489 ui_Address + 20 + (64 * b_ModulNbr));
493 s_SiemensCounterInfo.
494 s_InitFlag.b_CounterInit = 1;
501 DPRINTK(
"The module is not a counter module\n");
550 unsigned char b_ModulCpt = 0;
552 unsigned int dw_LathchValue;
561 dw_MolduleConfiguration[0] & 0xFFFF0000UL) ==
564 dw_MolduleConfiguration[1] & 0xFFFF0000UL) ==
567 dw_MolduleConfiguration[2] & 0xFFFF0000UL) ==
570 dw_MolduleConfiguration[3] & 0xFFFF0000UL) ==
572 for (b_ModulCpt = 0; b_ModulCpt < 4; b_ModulCpt++) {
578 dw_MolduleConfiguration[b_ModulCpt] &
586 ui_Address + 16 + (64 * b_ModulCpt));
593 ui_Address + (64 * b_ModulCpt));
600 ui_Address + 4 + (64 * b_ModulCpt));
602 if ((dw_LathchValue & 0xFF) !=
603 ((dw_LathchValue >> 8) & 0xFF)
604 && (dw_LathchValue & 0xFF) !=
605 ((dw_LathchValue >> 16) & 0xFF)
606 && (dw_LathchValue & 0xFF) !=
607 ((dw_LathchValue >> 24) & 0xFF)) {
609 *pb_TestStatus | (1 <<
618 ui_Address + 16 + (64 * b_ModulCpt));
626 DPRINTK(
"No counter module found\n");
713 unsigned char b_ReferenceAction,
714 unsigned char b_IndexOperation,
unsigned char b_AutoMode,
unsigned char b_InterruptEnable)
722 if (b_ModulNbr < 4) {
728 s_ModuleInfo[b_ModulNbr].
729 s_SiemensCounterInfo.s_InitFlag.b_CounterInit == 1) {
740 if (b_IndexOperation ==
742 || b_IndexOperation ==
744 || b_IndexOperation ==
746 || b_IndexOperation ==
748 || b_IndexOperation ==
750 || b_IndexOperation ==
764 if (b_InterruptEnable ==
766 || b_InterruptEnable ==
773 if (b_ReferenceAction ==
779 s_SiemensCounterInfo.
787 s_SiemensCounterInfo.
797 s_SiemensCounterInfo.
805 s_SiemensCounterInfo.
817 if (b_IndexOperation ==
835 s_SiemensCounterInfo.
843 s_SiemensCounterInfo.
857 s_SiemensCounterInfo.
865 s_SiemensCounterInfo.
877 if (b_IndexOperation ==
891 s_SiemensCounterInfo.
899 s_SiemensCounterInfo.
914 s_SiemensCounterInfo.
922 s_SiemensCounterInfo.
941 s_SiemensCounterInfo.
949 s_SiemensCounterInfo.
963 s_SiemensCounterInfo.
971 s_SiemensCounterInfo.
986 s_SiemensCounterInfo.
994 s_SiemensCounterInfo.
1004 s_SiemensCounterInfo.
1012 s_SiemensCounterInfo.
1020 if (b_InterruptEnable ==
1026 s_SiemensCounterInfo.
1034 s_SiemensCounterInfo.
1044 s_SiemensCounterInfo.
1052 s_SiemensCounterInfo.
1063 s_SiemensCounterInfo.
1071 DPRINTK(
"Interrupt parameter is wrong\n");
1079 DPRINTK(
"The auto mode parameter is wrong\n");
1087 DPRINTK(
"The index operating mode parameter is wrong\n");
1095 DPRINTK(
"The reference action parameter is wrong\n");
1104 DPRINTK(
"Counter not initialised\n");
1112 DPRINTK(
"The selected module number parameter is wrong\n");
1156 unsigned char b_ModulNbr,
unsigned char b_ReferenceLevel)
1164 if (b_ModulNbr < 4) {
1170 s_ModuleInfo[b_ModulNbr].
1171 s_SiemensCounterInfo.s_InitFlag.b_CounterInit == 1) {
1176 if (b_ReferenceLevel == 0 || b_ReferenceLevel == 1) {
1177 if (b_ReferenceLevel == 1) {
1180 s_SiemensCounterInfo.
1185 s_SiemensCounterInfo.
1193 s_SiemensCounterInfo.
1198 s_SiemensCounterInfo.
1206 s_SiemensCounterInfo.
1208 dw_ModeRegister1_2_3_4,
1209 devpriv->s_BoardInfos.ui_Address + 20 +
1214 s_SiemensCounterInfo.
1215 s_InitFlag.b_ReferenceInit = 1;
1221 DPRINTK(
"Reference level parameter is wrong\n");
1230 DPRINTK(
"Counter not initialised\n");
1238 DPRINTK(
"The selected module number parameter is wrong\n");
1281 unsigned char b_ModulNbr,
unsigned char b_ExternalStrobe,
unsigned char b_ExternalStrobeLevel)
1289 if (b_ModulNbr < 4) {
1295 s_ModuleInfo[b_ModulNbr].
1296 s_SiemensCounterInfo.s_InitFlag.b_CounterInit == 1) {
1301 if (b_ExternalStrobe == 0 || b_ExternalStrobe == 1) {
1310 dw_MolduleConfiguration
1320 s_SiemensCounterInfo.
1325 s_SiemensCounterInfo.
1328 b_ModeRegister4 & (0xFF -
1329 (0x10 << b_ExternalStrobe))) | ((b_ExternalStrobeLevel ^ 1) << (4 + b_ExternalStrobe));
1335 DPRINTK(
"External strobe level parameter is wrong\n");
1344 DPRINTK(
"External strobe selection is wrong\n");
1353 DPRINTK(
"Counter not initialised\n");
1361 DPRINTK(
"The selected module number parameter is wrong\n");
1395 unsigned char b_ModulNbr,
unsigned int ui_CompareValue)
1403 if (b_ModulNbr < 4) {
1409 s_ModuleInfo[b_ModulNbr].
1410 s_SiemensCounterInfo.s_InitFlag.b_CounterInit == 1) {
1413 ui_Address + 28 + (64 * b_ModulNbr));
1417 s_SiemensCounterInfo.
1418 s_InitFlag.b_CompareLogicInit = 1;
1425 DPRINTK(
"Counter not initialised\n");
1433 DPRINTK(
"The selected module number parameter is wrong\n");
1492 unsigned char b_PCIInputClock,
1493 unsigned char b_TimingUnity,
1494 unsigned int ul_TimingInterval,
unsigned int *pul_RealTimingInterval)
1497 unsigned int ul_TimerValue = 0;
1498 double d_RealTimingInterval;
1499 unsigned int dw_Status = 0;
1505 if (b_ModulNbr < 4) {
1511 s_ModuleInfo[b_ModulNbr].
1512 s_SiemensCounterInfo.s_InitFlag.b_CounterInit == 1) {
1524 if (b_TimingUnity <= 2) {
1530 && (b_TimingUnity == 0)
1531 && (ul_TimingInterval >=
1533 && (ul_TimingInterval <=
1535 || ((b_PCIInputClock ==
1537 && (b_TimingUnity == 1)
1538 && (ul_TimingInterval >=
1540 && (ul_TimingInterval <=
1542 || ((b_PCIInputClock ==
1544 && (b_TimingUnity == 2)
1545 && (ul_TimingInterval >=
1547 && (ul_TimingInterval <=
1549 || ((b_PCIInputClock ==
1551 && (b_TimingUnity == 0)
1552 && (ul_TimingInterval >=
1554 && (ul_TimingInterval <=
1556 || ((b_PCIInputClock ==
1558 && (b_TimingUnity == 1)
1559 && (ul_TimingInterval >=
1561 && (ul_TimingInterval <=
1563 || ((b_PCIInputClock ==
1565 && (b_TimingUnity == 2)
1566 && (ul_TimingInterval >=
1568 && (ul_TimingInterval <=
1570 || ((b_PCIInputClock ==
1572 && (b_TimingUnity == 0)
1573 && (ul_TimingInterval >=
1575 && (ul_TimingInterval <=
1577 || ((b_PCIInputClock ==
1579 && (b_TimingUnity == 1)
1580 && (ul_TimingInterval >=
1582 && (ul_TimingInterval <=
1584 || ((b_PCIInputClock ==
1586 && (b_TimingUnity == 2)
1587 && (ul_TimingInterval >=
1589 && (ul_TimingInterval <=
1595 if (b_PCIInputClock ==
1601 if ((
devpriv->s_BoardInfos.dw_MolduleConfiguration[b_ModulNbr] & 0xFFFF) >= 0x3135) {
1622 if ((dw_Status & 1) != 1) {
1627 DPRINTK(
"40MHz quartz not on board\n");
1636 DPRINTK(
"40MHz quartz not on board\n");
1646 if (i_ReturnValue == 0) {
1651 if ((
devpriv->s_BoardInfos.dw_MolduleConfiguration[b_ModulNbr] & 0xFFFF) >= 0x3131) {
1665 s_SiemensCounterInfo.
1673 s_SiemensCounterInfo.
1688 s_SiemensCounterInfo.
1696 s_SiemensCounterInfo.
1710 switch (b_TimingUnity) {
1726 (0.00025 * b_PCIInputClock));
1732 if ((
double)((double)ul_TimingInterval * (0.00025 * (
double)b_PCIInputClock)) >= ((double)((
double)ul_TimerValue + 0.5))) {
1744 *pul_RealTimingInterval
1749 (0.00025 * (
double)b_PCIInputClock));
1750 d_RealTimingInterval
1760 if ((
double)((double)ul_TimerValue / (0.00025 * (
double)b_PCIInputClock)) >= (double)((
double)*pul_RealTimingInterval + 0.5)) {
1761 *pul_RealTimingInterval
1763 *pul_RealTimingInterval
1796 (0.25 * b_PCIInputClock));
1802 if ((
double)((double)ul_TimingInterval * (0.25 * (
double)b_PCIInputClock)) >= ((double)((
double)ul_TimerValue + 0.5))) {
1814 *pul_RealTimingInterval
1819 (0.25 * (
double)b_PCIInputClock));
1820 d_RealTimingInterval
1832 if ((
double)((double)ul_TimerValue / (0.25 * (
double)b_PCIInputClock)) >= (double)((
double)*pul_RealTimingInterval + 0.5)) {
1833 *pul_RealTimingInterval
1835 *pul_RealTimingInterval
1875 if ((
double)((double)ul_TimingInterval * (250.0 * (
double)b_PCIInputClock)) >= ((double)((
double)ul_TimerValue + 0.5))) {
1887 *pul_RealTimingInterval
1892 (250.0 * (
double)b_PCIInputClock));
1893 d_RealTimingInterval
1903 if ((
double)((double)ul_TimerValue / (250.0 * (
double)b_PCIInputClock)) >= (double)((
double)*pul_RealTimingInterval + 0.5)) {
1904 *pul_RealTimingInterval
1906 *pul_RealTimingInterval
1930 outl(ul_TimerValue,
devpriv->s_BoardInfos.ui_Address + 32 + (64 * b_ModulNbr));
1939 s_SiemensCounterInfo.
1941 b_FrequencyMeasurementInit
1948 DPRINTK(
"Counter not initialised\n");
1958 DPRINTK(
"Base timing selection is wrong\n");
1966 DPRINTK(
"Timing unity selection is wrong\n");
1974 DPRINTK(
"The selected PCI input clock is wrong\n");
1983 DPRINTK(
"Counter not initialised\n");
1991 DPRINTK(
"The selected module number parameter is wrong\n");
2021 unsigned int ui_BitsType;
2026 switch (ui_BitsType) {
2039 (
unsigned char) data[0], (
unsigned char) data[1]);
2063 printk(
"Bits Config Parameter Wrong\n");
2066 if (i_ReturnValue >= 0)
2067 i_ReturnValue = insn->
n;
2102 if (b_ModulNbr < 4) {
2108 s_ModuleInfo[b_ModulNbr].
2109 s_SiemensCounterInfo.s_InitFlag.b_CounterInit == 1) {
2115 ui_Address + 16 + (64 * b_ModulNbr));
2122 DPRINTK(
"Counter not initialised\n");
2130 DPRINTK(
"The selected module number parameter is wrong\n");
2156 unsigned char b_ModulCpt = 0;
2164 dw_MolduleConfiguration[0] & 0xFFFF0000UL) ==
2167 dw_MolduleConfiguration[1] & 0xFFFF0000UL) ==
2170 dw_MolduleConfiguration[2] & 0xFFFF0000UL) ==
2173 dw_MolduleConfiguration[3] & 0xFFFF0000UL) ==
2175 for (b_ModulCpt = 0; b_ModulCpt < 4; b_ModulCpt++) {
2181 dw_MolduleConfiguration[b_ModulCpt] &
2189 ui_Address + 16 + (64 * b_ModulCpt));
2197 DPRINTK(
"No counter module found\n");
2301 unsigned char b_ModulNbr,
unsigned char b_PCIInputClock,
unsigned char b_Filter)
2304 unsigned int dw_Status = 0;
2310 if (b_ModulNbr < 4) {
2316 dw_MolduleConfiguration[b_ModulNbr] &
2323 dw_MolduleConfiguration[b_ModulNbr] &
2324 0xFFFF) >= 0x3135) {
2336 if (b_Filter < 16) {
2341 if (b_PCIInputClock ==
2358 if ((dw_Status & 1) !=
2364 DPRINTK(
"40MHz quartz not on board\n");
2374 if (i_ReturnValue == 0) {
2379 if (b_PCIInputClock ==
2389 s_SiemensCounterInfo.
2397 s_SiemensCounterInfo.
2413 s_SiemensCounterInfo.
2421 s_SiemensCounterInfo.
2437 s_SiemensCounterInfo.
2445 s_SiemensCounterInfo.
2457 s_SiemensCounterInfo.
2465 s_SiemensCounterInfo.
2481 s_SiemensCounterInfo.
2483 dw_ModeRegister1_2_3_4,
2496 DPRINTK(
"The selected filter value is wrong\n");
2505 DPRINTK(
"The selected PCI input clock is wrong\n");
2513 DPRINTK(
"The module is not a counter module\n");
2521 DPRINTK(
"The module is not a counter module\n");
2529 DPRINTK(
"The selected module number parameter is wrong\n");
2565 unsigned char b_ModulNbr,
unsigned char b_LatchReg)
2573 if (b_ModulNbr < 4) {
2579 s_ModuleInfo[b_ModulNbr].
2580 s_SiemensCounterInfo.s_InitFlag.b_CounterInit == 1) {
2585 if (b_LatchReg < 2) {
2590 outl(1 << (b_LatchReg * 4),
2591 devpriv->s_BoardInfos.ui_Address +
2598 DPRINTK(
"The selected latch register parameter is wrong\n");
2607 DPRINTK(
"Counter not initialised\n");
2615 DPRINTK(
"The selected module number parameter is wrong\n");
2662 unsigned char b_ModulNbr,
unsigned char b_SourceSelection)
2670 if (b_ModulNbr < 4) {
2676 dw_MolduleConfiguration[b_ModulNbr] &
2683 dw_MolduleConfiguration[b_ModulNbr] &
2684 0xFFFF) >= 0x3135) {
2696 if (b_SourceSelection ==
2705 s_SiemensCounterInfo.
2712 s_SiemensCounterInfo.
2725 s_SiemensCounterInfo.
2732 s_SiemensCounterInfo.
2744 DPRINTK(
"The source selection is wrong\n");
2752 DPRINTK(
"The module is not a counter module\n");
2760 DPRINTK(
"The module is not a counter module\n");
2768 DPRINTK(
"The selected module number is wrong\n");
2806 if (b_ModulNbr < 4) {
2812 s_ModuleInfo[b_ModulNbr].
2813 s_SiemensCounterInfo.s_InitFlag.b_CounterInit == 1) {
2816 s_SiemensCounterInfo.
2821 s_SiemensCounterInfo.
2823 s_ByteModeRegister.b_ModeRegister3 | 0x10;
2830 s_SiemensCounterInfo.
2832 dw_ModeRegister1_2_3_4,
devpriv->s_BoardInfos.
2833 ui_Address + 20 + (64 * b_ModulNbr));
2840 DPRINTK(
"Counter not initialised\n");
2848 DPRINTK(
"The selected module number parameter is wrong\n");
2886 if (b_ModulNbr < 4) {
2892 s_ModuleInfo[b_ModulNbr].
2893 s_SiemensCounterInfo.s_InitFlag.b_CounterInit == 1) {
2896 s_SiemensCounterInfo.
2901 s_SiemensCounterInfo.
2903 s_ByteModeRegister.b_ModeRegister3 & 0xEF;
2910 s_SiemensCounterInfo.
2912 dw_ModeRegister1_2_3_4,
devpriv->s_BoardInfos.
2913 ui_Address + 20 + (64 * b_ModulNbr));
2920 DPRINTK(
"Counter not initialised\n");
2928 DPRINTK(
"The selected module number parameter is wrong\n");
2957 unsigned int ui_WriteType;
2963 switch (ui_WriteType) {
2977 (
unsigned char) data[0], (
unsigned int) data[1]);
3016 printk(
"Write Config Parameter Wrong\n");
3019 if (i_ReturnValue >= 0)
3020 i_ReturnValue = insn->
n;
3058 if (b_ModulNbr < 4) {
3063 if (
devpriv->s_ModuleInfo[b_ModulNbr].
3064 s_SiemensCounterInfo.s_InitFlag.b_CounterInit == 1) {
3071 s_SiemensCounterInfo.
3076 s_SiemensCounterInfo.
3086 s_SiemensCounterInfo.
3088 dw_ModeRegister1_2_3_4,
devpriv->s_BoardInfos.
3089 ui_Address + 20 + (64 * b_ModulNbr));
3096 DPRINTK(
"Counter not initialised\n");
3104 DPRINTK(
"The selected module number parameter is wrong\n");
3144 if (b_ModulNbr < 4) {
3150 s_ModuleInfo[b_ModulNbr].
3151 s_SiemensCounterInfo.s_InitFlag.b_CounterInit == 1) {
3158 s_SiemensCounterInfo.
3160 dw_ModeRegister1_2_3_4 &
3162 devpriv->s_BoardInfos.ui_Address + 20 +
3173 s_SiemensCounterInfo.
3178 s_SiemensCounterInfo.
3189 DPRINTK(
"Counter not initialised\n");
3197 DPRINTK(
"The selected module number parameter is wrong\n");
3235 unsigned char b_ModulNbr,
unsigned char b_SelectedCounter,
unsigned int ui_WriteValue)
3243 if (b_ModulNbr < 4) {
3249 s_ModuleInfo[b_ModulNbr].
3250 s_SiemensCounterInfo.s_InitFlag.b_CounterInit == 1) {
3255 if (b_SelectedCounter < 2) {
3260 outl((
unsigned int) ((
unsigned int) (ui_WriteValue) << (16 *
3261 b_SelectedCounter)),
3262 devpriv->s_BoardInfos.ui_Address + 8 +
3263 (b_SelectedCounter * 4) +
3270 DPRINTK(
"The selected 16-Bit counter parameter is wrong\n");
3279 DPRINTK(
"Counter not initialised\n");
3287 DPRINTK(
"The selected module number parameter is wrong\n");
3320 unsigned char b_ModulNbr,
unsigned int ul_WriteValue)
3328 if (b_ModulNbr < 4) {
3334 s_ModuleInfo[b_ModulNbr].
3335 s_SiemensCounterInfo.s_InitFlag.b_CounterInit == 1) {
3341 ui_Address + 4 + (64 * b_ModulNbr));
3348 DPRINTK(
"Counter not initialised\n");
3356 DPRINTK(
"The selected module number parameter is wrong\n");
3389 unsigned int ul_InterruptLatchReg;
3395 if (b_ModulNbr < 4) {
3401 s_ModuleInfo[b_ModulNbr].
3402 s_SiemensCounterInfo.s_InitFlag.b_CounterInit == 1) {
3408 s_ModuleInfo[b_ModulNbr].
3409 s_SiemensCounterInfo.s_InitFlag.b_IndexInit) {
3412 s_SiemensCounterInfo.
3417 s_SiemensCounterInfo.
3422 ul_InterruptLatchReg =
3424 24 + (64 * b_ModulNbr));
3427 s_SiemensCounterInfo.
3429 dw_ModeRegister1_2_3_4,
3430 devpriv->s_BoardInfos.ui_Address + 20 +
3437 DPRINTK(
"Index not initialised \n");
3446 DPRINTK(
"Counter not initialised\n");
3454 DPRINTK(
"The selected module number parameter is wrong\n");
3492 if (b_ModulNbr < 4) {
3498 s_ModuleInfo[b_ModulNbr].
3499 s_SiemensCounterInfo.s_InitFlag.b_CounterInit == 1) {
3505 s_ModuleInfo[b_ModulNbr].
3506 s_SiemensCounterInfo.s_InitFlag.b_IndexInit) {
3509 s_SiemensCounterInfo.
3514 s_SiemensCounterInfo.
3521 s_SiemensCounterInfo.
3523 dw_ModeRegister1_2_3_4,
3524 devpriv->s_BoardInfos.ui_Address + 20 +
3531 DPRINTK(
"Index not initialised \n");
3540 DPRINTK(
"Counter not initialised\n");
3548 DPRINTK(
"The selected module number parameter is wrong\n");
3591 if (b_ModulNbr < 4) {
3597 s_ModuleInfo[b_ModulNbr].
3598 s_SiemensCounterInfo.s_InitFlag.b_CounterInit == 1) {
3604 s_ModuleInfo[b_ModulNbr].
3605 s_SiemensCounterInfo.
3606 s_InitFlag.b_CompareLogicInit == 1) {
3609 s_SiemensCounterInfo.
3614 s_SiemensCounterInfo.
3625 s_SiemensCounterInfo.
3627 dw_ModeRegister1_2_3_4,
3628 devpriv->s_BoardInfos.ui_Address + 20 +
3635 DPRINTK(
"Compare logic not initialised\n");
3644 DPRINTK(
"Counter not initialised\n");
3652 DPRINTK(
"The selected module number parameter is wrong\n");
3691 if (b_ModulNbr < 4) {
3697 s_ModuleInfo[b_ModulNbr].
3698 s_SiemensCounterInfo.s_InitFlag.b_CounterInit == 1) {
3704 s_ModuleInfo[b_ModulNbr].
3705 s_SiemensCounterInfo.
3706 s_InitFlag.b_CompareLogicInit == 1) {
3709 s_SiemensCounterInfo.
3714 s_SiemensCounterInfo.
3725 s_SiemensCounterInfo.
3727 dw_ModeRegister1_2_3_4,
3728 devpriv->s_BoardInfos.ui_Address + 20 +
3735 DPRINTK(
"Compare logic not initialised\n");
3744 DPRINTK(
"Counter not initialised\n");
3752 DPRINTK(
"The selected module number parameter is wrong\n");
3801 if (b_ModulNbr < 4) {
3807 s_ModuleInfo[b_ModulNbr].
3808 s_SiemensCounterInfo.s_InitFlag.b_CounterInit == 1) {
3814 s_ModuleInfo[b_ModulNbr].
3815 s_SiemensCounterInfo.
3816 s_InitFlag.b_FrequencyMeasurementInit == 1) {
3831 s_SiemensCounterInfo.
3836 s_SiemensCounterInfo.
3848 s_SiemensCounterInfo.
3853 s_SiemensCounterInfo.
3858 | (b_InterruptEnable << 3);
3865 s_SiemensCounterInfo.
3867 dw_ModeRegister1_2_3_4,
3874 s_SiemensCounterInfo.
3876 b_FrequencyMeasurementEnable =
3883 DPRINTK(
"Interrupt parameter is wrong\n");
3891 DPRINTK(
"Frequency measurement logic not initialised\n");
3900 DPRINTK(
"Counter not initialised\n");
3908 DPRINTK(
"The selected module number parameter is wrong\n");
3947 if (b_ModulNbr < 4) {
3953 s_ModuleInfo[b_ModulNbr].
3954 s_SiemensCounterInfo.s_InitFlag.b_CounterInit == 1) {
3960 s_ModuleInfo[b_ModulNbr].
3961 s_SiemensCounterInfo.
3962 s_InitFlag.b_FrequencyMeasurementInit == 1) {
3969 s_SiemensCounterInfo.
3974 s_SiemensCounterInfo.
3988 s_SiemensCounterInfo.
3990 dw_ModeRegister1_2_3_4,
3991 devpriv->s_BoardInfos.ui_Address + 20 +
4000 s_SiemensCounterInfo.
4002 b_FrequencyMeasurementEnable = 0;
4008 DPRINTK(
"Frequency measurement logic not initialised\n");
4017 DPRINTK(
"Counter not initialised\n");
4025 DPRINTK(
"The selected module number parameter is wrong\n");
4055 unsigned int ui_ReadType;
4061 switch (ui_ReadType) {
4072 printk(
"Latch Register Value %d\n", data[0]);
4109 (
unsigned char *) &data[0], (
unsigned char *) &data[1]);
4126 (
unsigned char *) &data[0],
4127 (
unsigned char *) &data[1], (
unsigned int *) &data[2]);
4131 data[0] =
devpriv->s_InterruptParameters.
4132 s_FIFOInterruptParameters[
devpriv->
4133 s_InterruptParameters.ui_Read].b_OldModuleMask;
4134 data[1] =
devpriv->s_InterruptParameters.
4135 s_FIFOInterruptParameters[
devpriv->
4136 s_InterruptParameters.ui_Read].ul_OldInterruptMask;
4137 data[2] =
devpriv->s_InterruptParameters.
4138 s_FIFOInterruptParameters[
devpriv->
4139 s_InterruptParameters.ui_Read].ul_OldCounterLatchValue;
4146 s_InterruptParameters.
4147 ui_Read = (
devpriv->s_InterruptParameters.
4153 printk(
"ReadType Parameter wrong\n");
4156 if (i_ReturnValue >= 0)
4157 i_ReturnValue = insn->
n;
4197 unsigned char b_ModulNbr,
unsigned char b_LatchReg,
unsigned char *pb_LatchStatus)
4200 unsigned int dw_LatchReg;
4206 if (b_ModulNbr < 4) {
4212 s_ModuleInfo[b_ModulNbr].
4213 s_SiemensCounterInfo.s_InitFlag.b_CounterInit == 1) {
4218 if (b_LatchReg < 2) {
4220 ui_Address + (64 * b_ModulNbr));
4223 (
unsigned char) ((dw_LatchReg >> (b_LatchReg *
4230 DPRINTK(
"The selected latch register parameter is wrong\n");
4239 DPRINTK(
"Counter not initialised\n");
4247 DPRINTK(
"The selected module number parameter is wrong\n");
4284 unsigned char b_ModulNbr,
unsigned char b_LatchReg,
unsigned int *pul_LatchValue)
4292 if (b_ModulNbr < 4) {
4298 s_ModuleInfo[b_ModulNbr].
4299 s_SiemensCounterInfo.s_InitFlag.b_CounterInit == 1) {
4304 if (b_LatchReg < 2) {
4306 ui_Address + ((b_LatchReg + 1) * 4) +
4314 DPRINTK(
"The selected latch register parameter is wrong\n");
4323 DPRINTK(
"Counter not initialised\n");
4331 DPRINTK(
"The selected module number parameter is wrong\n");
4368 unsigned char b_ModulNbr,
unsigned char b_SelectedCounter,
unsigned int *pui_CounterValue)
4371 unsigned int dw_LathchValue = 0;
4377 if (b_ModulNbr < 4) {
4383 s_ModuleInfo[b_ModulNbr].
4384 s_SiemensCounterInfo.s_InitFlag.b_CounterInit == 1) {
4389 if (b_SelectedCounter < 2) {
4395 ui_Address + (64 * b_ModulNbr));
4402 ui_Address + 4 + (64 * b_ModulNbr));
4405 (
unsigned int) ((dw_LathchValue >> (16 *
4406 b_SelectedCounter)) &
4413 DPRINTK(
"The selected 16-Bit counter parameter is wrong\n");
4422 DPRINTK(
"Counter not initialised\n");
4430 DPRINTK(
"The selected module number parameter is wrong\n");
4463 unsigned char b_ModulNbr,
unsigned int *pul_CounterValue)
4471 if (b_ModulNbr < 4) {
4477 s_ModuleInfo[b_ModulNbr].
4478 s_SiemensCounterInfo.s_InitFlag.b_CounterInit == 1) {
4484 ui_Address + (64 * b_ModulNbr));
4490 *pul_CounterValue =
inl(
devpriv->s_BoardInfos.
4491 ui_Address + 4 + (64 * b_ModulNbr));
4498 DPRINTK(
"Counter not initialised\n");
4506 DPRINTK(
"The selected module number parameter is wrong\n");
4539 unsigned char b_ModulNbr,
unsigned char *pb_IndexStatus)
4548 if (b_ModulNbr < 4) {
4554 s_ModuleInfo[b_ModulNbr].
4555 s_SiemensCounterInfo.s_InitFlag.b_CounterInit == 1) {
4561 s_ModuleInfo[b_ModulNbr].
4562 s_SiemensCounterInfo.s_InitFlag.b_IndexInit) {
4564 ui_Address + 12 + (64 * b_ModulNbr));
4566 *pb_IndexStatus = (
unsigned char) (dw_StatusReg & 1);
4572 DPRINTK(
"Index not initialised\n");
4581 DPRINTK(
"Counter not initialised\n");
4589 DPRINTK(
"The selected module number parameter is wrong\n");
4623 unsigned char b_ModulNbr,
unsigned char *pb_ReferenceStatus)
4632 if (b_ModulNbr < 4) {
4638 s_ModuleInfo[b_ModulNbr].
4639 s_SiemensCounterInfo.s_InitFlag.b_CounterInit == 1) {
4645 s_ModuleInfo[b_ModulNbr].
4646 s_SiemensCounterInfo.
4647 s_InitFlag.b_ReferenceInit) {
4649 ui_Address + 24 + (64 * b_ModulNbr));
4651 *pb_ReferenceStatus =
4652 (
unsigned char) (~dw_StatusReg & 1);
4658 DPRINTK(
"Reference not initialised\n");
4667 DPRINTK(
"Counter not initialised\n");
4675 DPRINTK(
"The selected module number parameter is wrong\n");
4707 unsigned char b_ModulNbr,
unsigned char *pb_UASStatus)
4716 if (b_ModulNbr < 4) {
4722 s_ModuleInfo[b_ModulNbr].
4723 s_SiemensCounterInfo.s_InitFlag.b_CounterInit == 1) {
4725 ui_Address + 24 + (64 * b_ModulNbr));
4727 *pb_UASStatus = (
unsigned char) ((dw_StatusReg >> 1) & 1);
4734 DPRINTK(
"Counter not initialised\n");
4742 DPRINTK(
"The selected module number parameter is wrong\n");
4775 unsigned char b_ModulNbr,
unsigned char *pb_CBStatus)
4784 if (b_ModulNbr < 4) {
4790 s_ModuleInfo[b_ModulNbr].
4791 s_SiemensCounterInfo.s_InitFlag.b_CounterInit == 1) {
4793 ui_Address + 16 + (64 * b_ModulNbr));
4795 *pb_CBStatus = (
unsigned char) (dw_StatusReg & 1);
4803 DPRINTK(
"Counter not initialised\n");
4811 DPRINTK(
"The selected module number parameter is wrong\n");
4857 unsigned char b_ModulNbr,
unsigned char *pb_CBStatusCounter0,
unsigned char *pb_CBStatusCounter1)
4866 if (b_ModulNbr < 4) {
4872 s_ModuleInfo[b_ModulNbr].
4873 s_SiemensCounterInfo.s_InitFlag.b_CounterInit == 1) {
4878 if ((
devpriv->s_ModuleInfo[b_ModulNbr].
4879 s_SiemensCounterInfo.
4882 b_ModeRegister1 & 0x10) == 0x10) {
4888 dw_MolduleConfiguration
4889 [b_ModulNbr] & 0xFFFF) >=
4896 *pb_CBStatusCounter1 =
4897 (
unsigned char) ((dw_StatusReg >> 0) &
4899 *pb_CBStatusCounter0 =
4900 (
unsigned char) ((dw_StatusReg >> 1) &
4917 DPRINTK(
"Counter not initialised\n");
4927 DPRINTK(
"Counter not initialised\n");
4936 DPRINTK(
"The selected module number parameter is wrong\n");
4970 unsigned char b_ModulNbr,
unsigned char *pb_UDStatus)
4979 if (b_ModulNbr < 4) {
4985 s_ModuleInfo[b_ModulNbr].
4986 s_SiemensCounterInfo.s_InitFlag.b_CounterInit == 1) {
4988 ui_Address + 24 + (64 * b_ModulNbr));
4990 *pb_UDStatus = (
unsigned char) ((dw_StatusReg >> 2) & 1);
4998 DPRINTK(
"Counter not initialised\n");
5006 DPRINTK(
"The selected module number parameter is wrong\n");
5044 unsigned char b_ModulNbr,
unsigned char *pb_UDStatus)
5053 if (b_ModulNbr < 4) {
5059 s_ModuleInfo[b_ModulNbr].
5060 s_SiemensCounterInfo.s_InitFlag.b_CounterInit == 1) {
5066 s_ModuleInfo[b_ModulNbr].
5067 s_SiemensCounterInfo.
5068 s_InitFlag.b_IndexInterruptOccur == 1) {
5071 s_SiemensCounterInfo.
5072 s_InitFlag.b_IndexInterruptOccur = 0;
5075 ui_Address + 12 + (64 * b_ModulNbr));
5077 *pb_UDStatus = (
unsigned char) ((dw_StatusReg >> 1) & 1);
5091 DPRINTK(
"Counter not initialised\n");
5099 DPRINTK(
"The selected module number parameter is wrong\n");
5150 unsigned char *pb_Status,
unsigned char *pb_UDStatus,
unsigned int *pul_ReadValue)
5153 unsigned int ui_16BitValue;
5160 if (b_ModulNbr < 4) {
5166 s_ModuleInfo[b_ModulNbr].
5167 s_SiemensCounterInfo.s_InitFlag.b_CounterInit == 1) {
5173 s_ModuleInfo[b_ModulNbr].
5174 s_SiemensCounterInfo.
5175 s_InitFlag.b_FrequencyMeasurementInit == 1) {
5181 s_ModuleInfo[b_ModulNbr].
5182 s_SiemensCounterInfo.
5184 b_FrequencyMeasurementEnable == 1) {
5198 if (dw_StatusReg & 1) {
5201 (
unsigned char) ((dw_StatusReg >>
5214 if (*pb_UDStatus == 0) {
5219 if ((
devpriv->s_ModuleInfo[b_ModulNbr].s_SiemensCounterInfo.s_ModeRegister.s_ByteModeRegister.b_ModeRegister1 &
APCI1710_16BIT_COUNTER) == APCI1710_16BIT_COUNTER) {
5224 if ((*pul_ReadValue & 0xFFFFU) != 0) {
5247 if ((*pul_ReadValue & 0xFFFF0000UL) != 0) {
5264 (0xFFFFU - ui_16BitValue) << 16);
5267 if (*pul_ReadValue != 0) {
5276 if (*pb_UDStatus == 1) {
5281 if ((*pul_ReadValue & 0xFFFF0000UL) != 0) {
5298 (0xFFFFU - ui_16BitValue) << 16);
5307 if ((*pul_ReadValue & 0xFFFFU) != 0) {
5341 DPRINTK(
"Frequency measurement logic not initialised\n");
5350 DPRINTK(
"Counter not initialised\n");
5358 DPRINTK(
"The selected module number parameter is wrong\n");