extractedLnx/linux-2.6.38/drivers/staging/comedi/drivers/addi-data/APCI1710_Pwm.c_i_APCI1710_SetNewPWMTiming.c
int i_APCI1710_SetNewPWMTiming(struct comedi_device *dev,
unsigned char b_ModulNbr,
unsigned char b_PWM, unsigned char b_TimingUnit, unsigned int ul_LowTiming, unsigned int ul_HighTiming)
{
unsigned char b_ClockSelection;
int i_ReturnValue = 0;
unsigned int ul_LowTimerValue = 0;
unsigned int ul_HighTimerValue = 0;
unsigned int ul_RealLowTiming = 0;
unsigned int ul_RealHighTiming = 0;
unsigned int dw_Status;
unsigned int dw_Command;
double d_RealLowTiming = 0;
double d_RealHighTiming = 0;
/**************************/
/* Test the module number */
/**************************/
if (b_ModulNbr < 4) {
/***************/
/* Test if PWM */
/***************/
if ((devpriv->s_BoardInfos.
dw_MolduleConfiguration[b_ModulNbr] &
0xFFFF0000UL) == APCI1710_PWM) {
/**************************/
/* Test the PWM selection */
/**************************/
if (b_PWM <= 1) {
/***************************/
/* Test if PWM initialised */
/***************************/
dw_Status = inl(devpriv->s_BoardInfos.
ui_Address + 12 + (20 * b_PWM) +
(64 * b_ModulNbr));
if (dw_Status & 0x10) {
b_ClockSelection = devpriv->
s_ModuleInfo[b_ModulNbr].
s_PWMModuleInfo.
b_ClockSelection;
/************************/
/* Test the timing unit */
/************************/
if (b_TimingUnit <= 4) {
/*********************************/
/* Test the low timing selection */
/*********************************/
if (((b_ClockSelection ==
APCI1710_30MHZ)
&& (b_TimingUnit
== 0)
&& (ul_LowTiming
>= 266)
&& (ul_LowTiming
<=
0xFFFFFFFFUL))
|| ((b_ClockSelection ==
APCI1710_30MHZ)
&& (b_TimingUnit
== 1)
&& (ul_LowTiming
>= 1)
&& (ul_LowTiming
<=
571230650UL))
|| ((b_ClockSelection ==
APCI1710_30MHZ)
&& (b_TimingUnit
== 2)
&& (ul_LowTiming
>= 1)
&& (ul_LowTiming
<=
571230UL))
|| ((b_ClockSelection ==
APCI1710_30MHZ)
&& (b_TimingUnit
== 3)
&& (ul_LowTiming
>= 1)
&& (ul_LowTiming
<=
571UL))
|| ((b_ClockSelection ==
APCI1710_30MHZ)
&& (b_TimingUnit
== 4)
&& (ul_LowTiming
>= 1)
&& (ul_LowTiming
<= 9UL))
|| ((b_ClockSelection ==
APCI1710_33MHZ)
&& (b_TimingUnit
== 0)
&& (ul_LowTiming
>= 242)
&& (ul_LowTiming
<=
0xFFFFFFFFUL))
|| ((b_ClockSelection ==
APCI1710_33MHZ)
&& (b_TimingUnit
== 1)
&& (ul_LowTiming
>= 1)
&& (ul_LowTiming
<=
519691043UL))
|| ((b_ClockSelection ==
APCI1710_33MHZ)
&& (b_TimingUnit
== 2)
&& (ul_LowTiming
>= 1)
&& (ul_LowTiming
<=
519691UL))
|| ((b_ClockSelection ==
APCI1710_33MHZ)
&& (b_TimingUnit
== 3)
&& (ul_LowTiming
>= 1)
&& (ul_LowTiming
<=
520UL))
|| ((b_ClockSelection ==
APCI1710_33MHZ)
&& (b_TimingUnit
== 4)
&& (ul_LowTiming
>= 1)
&& (ul_LowTiming
<= 8UL))
|| ((b_ClockSelection ==
APCI1710_40MHZ)
&& (b_TimingUnit
== 0)
&& (ul_LowTiming
>= 200)
&& (ul_LowTiming
<=
0xFFFFFFFFUL))
|| ((b_ClockSelection ==
APCI1710_40MHZ)
&& (b_TimingUnit
== 1)
&& (ul_LowTiming
>= 1)
&& (ul_LowTiming
<=
429496729UL))
|| ((b_ClockSelection ==
APCI1710_40MHZ)
&& (b_TimingUnit
== 2)
&& (ul_LowTiming
>= 1)
&& (ul_LowTiming
<=
429496UL))
|| ((b_ClockSelection ==
APCI1710_40MHZ)
&& (b_TimingUnit
== 3)
&& (ul_LowTiming
>= 1)
&& (ul_LowTiming
<=
429UL))
|| ((b_ClockSelection ==
APCI1710_40MHZ)
&& (b_TimingUnit
== 4)
&& (ul_LowTiming
>= 1)
&& (ul_LowTiming
<=
7UL))) {
/**********************************/
/* Test the High timing selection */
/**********************************/
if (((b_ClockSelection == APCI1710_30MHZ) && (b_TimingUnit == 0) && (ul_HighTiming >= 266) && (ul_HighTiming <= 0xFFFFFFFFUL)) || ((b_ClockSelection == APCI1710_30MHZ) && (b_TimingUnit == 1) && (ul_HighTiming >= 1) && (ul_HighTiming <= 571230650UL)) || ((b_ClockSelection == APCI1710_30MHZ) && (b_TimingUnit == 2) && (ul_HighTiming >= 1) && (ul_HighTiming <= 571230UL)) || ((b_ClockSelection == APCI1710_30MHZ) && (b_TimingUnit == 3) && (ul_HighTiming >= 1) && (ul_HighTiming <= 571UL)) || ((b_ClockSelection == APCI1710_30MHZ) && (b_TimingUnit == 4) && (ul_HighTiming >= 1) && (ul_HighTiming <= 9UL)) || ((b_ClockSelection == APCI1710_33MHZ) && (b_TimingUnit == 0) && (ul_HighTiming >= 242) && (ul_HighTiming <= 0xFFFFFFFFUL)) || ((b_ClockSelection == APCI1710_33MHZ) && (b_TimingUnit == 1) && (ul_HighTiming >= 1) && (ul_HighTiming <= 519691043UL)) || ((b_ClockSelection == APCI1710_33MHZ) && (b_TimingUnit == 2) && (ul_HighTiming >= 1) && (ul_HighTiming <= 519691UL)) || ((b_ClockSelection == APCI1710_33MHZ) && (b_TimingUnit == 3) && (ul_HighTiming >= 1) && (ul_HighTiming <= 520UL)) || ((b_ClockSelection == APCI1710_33MHZ) && (b_TimingUnit == 4) && (ul_HighTiming >= 1) && (ul_HighTiming <= 8UL)) || ((b_ClockSelection == APCI1710_40MHZ) && (b_TimingUnit == 0) && (ul_HighTiming >= 200) && (ul_HighTiming <= 0xFFFFFFFFUL)) || ((b_ClockSelection == APCI1710_40MHZ) && (b_TimingUnit == 1) && (ul_HighTiming >= 1) && (ul_HighTiming <= 429496729UL)) || ((b_ClockSelection == APCI1710_40MHZ) && (b_TimingUnit == 2) && (ul_HighTiming >= 1) && (ul_HighTiming <= 429496UL)) || ((b_ClockSelection == APCI1710_40MHZ) && (b_TimingUnit == 3) && (ul_HighTiming >= 1) && (ul_HighTiming <= 429UL)) || ((b_ClockSelection == APCI1710_40MHZ) && (b_TimingUnit == 4) && (ul_HighTiming >= 1) && (ul_HighTiming <= 7UL))) {
/************************************/
/* Calculate the low division fator */
/************************************/
fpu_begin();
switch (b_TimingUnit) {
/******/
/* ns */
/******/
case 0:
/******************/
/* Timer 0 factor */
/******************/
ul_LowTimerValue
=
(unsigned int)
(ul_LowTiming
*
(0.00025 * b_ClockSelection));
/*******************/
/* Round the value */
/*******************/
if ((double)((double)ul_LowTiming * (0.00025 * (double)b_ClockSelection)) >= ((double)((double)ul_LowTimerValue + 0.5))) {
ul_LowTimerValue
=
ul_LowTimerValue
+
1;
}
/*****************************/
/* Calculate the real timing */
/*****************************/
ul_RealLowTiming
=
(unsigned int)
(ul_LowTimerValue
/
(0.00025 * (double)b_ClockSelection));
d_RealLowTiming
=
(double)
ul_LowTimerValue
/
(0.00025
*
(double)
b_ClockSelection);
if ((double)((double)ul_LowTimerValue / (0.00025 * (double)b_ClockSelection)) >= (double)((double)ul_RealLowTiming + 0.5)) {
ul_RealLowTiming
=
ul_RealLowTiming
+
1;
}
ul_LowTiming
=
ul_LowTiming
-
1;
ul_LowTimerValue
=
ul_LowTimerValue
-
2;
if (b_ClockSelection != APCI1710_40MHZ) {
ul_LowTimerValue
=
(unsigned int)
(
(double)
(ul_LowTimerValue)
*
1.007752288);
}
break;
/******/
/* æs */
/******/
case 1:
/******************/
/* Timer 0 factor */
/******************/
ul_LowTimerValue
=
(unsigned int)
(ul_LowTiming
*
(0.25 * b_ClockSelection));
/*******************/
/* Round the value */
/*******************/
if ((double)((double)ul_LowTiming * (0.25 * (double)b_ClockSelection)) >= ((double)((double)ul_LowTimerValue + 0.5))) {
ul_LowTimerValue
=
ul_LowTimerValue
+
1;
}
/*****************************/
/* Calculate the real timing */
/*****************************/
ul_RealLowTiming
=
(unsigned int)
(ul_LowTimerValue
/
(0.25 * (double)b_ClockSelection));
d_RealLowTiming
=
(double)
ul_LowTimerValue
/
(
(double)
0.25
*
(double)
b_ClockSelection);
if ((double)((double)ul_LowTimerValue / (0.25 * (double)b_ClockSelection)) >= (double)((double)ul_RealLowTiming + 0.5)) {
ul_RealLowTiming
=
ul_RealLowTiming
+
1;
}
ul_LowTiming
=
ul_LowTiming
-
1;
ul_LowTimerValue
=
ul_LowTimerValue
-
2;
if (b_ClockSelection != APCI1710_40MHZ) {
ul_LowTimerValue
=
(unsigned int)
(
(double)
(ul_LowTimerValue)
*
1.007752288);
}
break;
/******/
/* ms */
/******/
case 2:
/******************/
/* Timer 0 factor */
/******************/
ul_LowTimerValue
=
ul_LowTiming
*
(250.0
*
b_ClockSelection);
/*******************/
/* Round the value */
/*******************/
if ((double)((double)ul_LowTiming * (250.0 * (double)b_ClockSelection)) >= ((double)((double)ul_LowTimerValue + 0.5))) {
ul_LowTimerValue
=
ul_LowTimerValue
+
1;
}
/*****************************/
/* Calculate the real timing */
/*****************************/
ul_RealLowTiming
=
(unsigned int)
(ul_LowTimerValue
/
(250.0 * (double)b_ClockSelection));
d_RealLowTiming
=
(double)
ul_LowTimerValue
/
(250.0
*
(double)
b_ClockSelection);
if ((double)((double)ul_LowTimerValue / (250.0 * (double)b_ClockSelection)) >= (double)((double)ul_RealLowTiming + 0.5)) {
ul_RealLowTiming
=
ul_RealLowTiming
+
1;
}
ul_LowTiming
=
ul_LowTiming
-
1;
ul_LowTimerValue
=
ul_LowTimerValue
-
2;
if (b_ClockSelection != APCI1710_40MHZ) {
ul_LowTimerValue
=
(unsigned int)
(
(double)
(ul_LowTimerValue)
*
1.007752288);
}
break;
/*****/
/* s */
/*****/
case 3:
/******************/
/* Timer 0 factor */
/******************/
ul_LowTimerValue
=
(unsigned int)
(ul_LowTiming
*
(250000.0
*
b_ClockSelection));
/*******************/
/* Round the value */
/*******************/
if ((double)((double)ul_LowTiming * (250000.0 * (double)b_ClockSelection)) >= ((double)((double)ul_LowTimerValue + 0.5))) {
ul_LowTimerValue
=
ul_LowTimerValue
+
1;
}
/*****************************/
/* Calculate the real timing */
/*****************************/
ul_RealLowTiming
=
(unsigned int)
(ul_LowTimerValue
/
(250000.0
*
(double)
b_ClockSelection));
d_RealLowTiming
=
(double)
ul_LowTimerValue
/
(250000.0
*
(double)
b_ClockSelection);
if ((double)((double)ul_LowTimerValue / (250000.0 * (double)b_ClockSelection)) >= (double)((double)ul_RealLowTiming + 0.5)) {
ul_RealLowTiming
=
ul_RealLowTiming
+
1;
}
ul_LowTiming
=
ul_LowTiming
-
1;
ul_LowTimerValue
=
ul_LowTimerValue
-
2;
if (b_ClockSelection != APCI1710_40MHZ) {
ul_LowTimerValue
=
(unsigned int)
(
(double)
(ul_LowTimerValue)
*
1.007752288);
}
break;
/******/
/* mn */
/******/
case 4:
/******************/
/* Timer 0 factor */
/******************/
ul_LowTimerValue
=
(unsigned int)
(
(ul_LowTiming
*
60)
*
(250000.0
*
b_ClockSelection));
/*******************/
/* Round the value */
/*******************/
if ((double)((double)(ul_LowTiming * 60.0) * (250000.0 * (double)b_ClockSelection)) >= ((double)((double)ul_LowTimerValue + 0.5))) {
ul_LowTimerValue
=
ul_LowTimerValue
+
1;
}
/*****************************/
/* Calculate the real timing */
/*****************************/
ul_RealLowTiming
=
(unsigned int)
(ul_LowTimerValue
/
(250000.0
*
(double)
b_ClockSelection))
/
60;
d_RealLowTiming
=
(
(double)
ul_LowTimerValue
/
(250000.0
*
(double)
b_ClockSelection))
/
60.0;
if ((double)(((double)ul_LowTimerValue / (250000.0 * (double)b_ClockSelection)) / 60.0) >= (double)((double)ul_RealLowTiming + 0.5)) {
ul_RealLowTiming
=
ul_RealLowTiming
+
1;
}
ul_LowTiming
=
ul_LowTiming
-
1;
ul_LowTimerValue
=
ul_LowTimerValue
-
2;
if (b_ClockSelection != APCI1710_40MHZ) {
ul_LowTimerValue
=
(unsigned int)
(
(double)
(ul_LowTimerValue)
*
1.007752288);
}
break;
}
/*************************************/
/* Calculate the high division fator */
/*************************************/
switch (b_TimingUnit) {
/******/
/* ns */
/******/
case 0:
/******************/
/* Timer 0 factor */
/******************/
ul_HighTimerValue
=
(unsigned int)
(ul_HighTiming
*
(0.00025 * b_ClockSelection));
/*******************/
/* Round the value */
/*******************/
if ((double)((double)ul_HighTiming * (0.00025 * (double)b_ClockSelection)) >= ((double)((double)ul_HighTimerValue + 0.5))) {
ul_HighTimerValue
=
ul_HighTimerValue
+
1;
}
/*****************************/
/* Calculate the real timing */
/*****************************/
ul_RealHighTiming
=
(unsigned int)
(ul_HighTimerValue
/
(0.00025 * (double)b_ClockSelection));
d_RealHighTiming
=
(double)
ul_HighTimerValue
/
(0.00025
*
(double)
b_ClockSelection);
if ((double)((double)ul_HighTimerValue / (0.00025 * (double)b_ClockSelection)) >= (double)((double)ul_RealHighTiming + 0.5)) {
ul_RealHighTiming
=
ul_RealHighTiming
+
1;
}
ul_HighTiming
=
ul_HighTiming
-
1;
ul_HighTimerValue
=
ul_HighTimerValue
-
2;
if (b_ClockSelection != APCI1710_40MHZ) {
ul_HighTimerValue
=
(unsigned int)
(
(double)
(ul_HighTimerValue)
*
1.007752288);
}
break;
/******/
/* æs */
/******/
case 1:
/******************/
/* Timer 0 factor */
/******************/
ul_HighTimerValue
=
(unsigned int)
(ul_HighTiming
*
(0.25 * b_ClockSelection));
/*******************/
/* Round the value */
/*******************/
if ((double)((double)ul_HighTiming * (0.25 * (double)b_ClockSelection)) >= ((double)((double)ul_HighTimerValue + 0.5))) {
ul_HighTimerValue
=
ul_HighTimerValue
+
1;
}
/*****************************/
/* Calculate the real timing */
/*****************************/
ul_RealHighTiming
=
(unsigned int)
(ul_HighTimerValue
/
(0.25 * (double)b_ClockSelection));
d_RealHighTiming
=
(double)
ul_HighTimerValue
/
(
(double)
0.25
*
(double)
b_ClockSelection);
if ((double)((double)ul_HighTimerValue / (0.25 * (double)b_ClockSelection)) >= (double)((double)ul_RealHighTiming + 0.5)) {
ul_RealHighTiming
=
ul_RealHighTiming
+
1;
}
ul_HighTiming
=
ul_HighTiming
-
1;
ul_HighTimerValue
=
ul_HighTimerValue
-
2;
if (b_ClockSelection != APCI1710_40MHZ) {
ul_HighTimerValue
=
(unsigned int)
(
(double)
(ul_HighTimerValue)
*
1.007752288);
}
break;
/******/
/* ms */
/******/
case 2:
/******************/
/* Timer 0 factor */
/******************/
ul_HighTimerValue
=
ul_HighTiming
*
(250.0
*
b_ClockSelection);
/*******************/
/* Round the value */
/*******************/
if ((double)((double)ul_HighTiming * (250.0 * (double)b_ClockSelection)) >= ((double)((double)ul_HighTimerValue + 0.5))) {
ul_HighTimerValue
=
ul_HighTimerValue
+
1;
}
/*****************************/
/* Calculate the real timing */
/*****************************/
ul_RealHighTiming
=
(unsigned int)
(ul_HighTimerValue
/
(250.0 * (double)b_ClockSelection));
d_RealHighTiming
=
(double)
ul_HighTimerValue
/
(250.0
*
(double)
b_ClockSelection);
if ((double)((double)ul_HighTimerValue / (250.0 * (double)b_ClockSelection)) >= (double)((double)ul_RealHighTiming + 0.5)) {
ul_RealHighTiming
=
ul_RealHighTiming
+
1;
}
ul_HighTiming
=
ul_HighTiming
-
1;
ul_HighTimerValue
=
ul_HighTimerValue
-
2;
if (b_ClockSelection != APCI1710_40MHZ) {
ul_HighTimerValue
=
(unsigned int)
(
(double)
(ul_HighTimerValue)
*
1.007752288);
}
break;
/*****/
/* s */
/*****/
case 3:
/******************/
/* Timer 0 factor */
/******************/
ul_HighTimerValue
=
(unsigned int)
(ul_HighTiming
*
(250000.0
*
b_ClockSelection));
/*******************/
/* Round the value */
/*******************/
if ((double)((double)ul_HighTiming * (250000.0 * (double)b_ClockSelection)) >= ((double)((double)ul_HighTimerValue + 0.5))) {
ul_HighTimerValue
=
ul_HighTimerValue
+
1;
}
/*****************************/
/* Calculate the real timing */
/*****************************/
ul_RealHighTiming
=
(unsigned int)
(ul_HighTimerValue
/
(250000.0
*
(double)
b_ClockSelection));
d_RealHighTiming
=
(double)
ul_HighTimerValue
/
(250000.0
*
(double)
b_ClockSelection);
if ((double)((double)ul_HighTimerValue / (250000.0 * (double)b_ClockSelection)) >= (double)((double)ul_RealHighTiming + 0.5)) {
ul_RealHighTiming
=
ul_RealHighTiming
+
1;
}
ul_HighTiming
=
ul_HighTiming
-
1;
ul_HighTimerValue
=
ul_HighTimerValue
-
2;
if (b_ClockSelection != APCI1710_40MHZ) {
ul_HighTimerValue
=
(unsigned int)
(
(double)
(ul_HighTimerValue)
*
1.007752288);
}
break;
/******/
/* mn */
/******/
case 4:
/******************/
/* Timer 0 factor */
/******************/
ul_HighTimerValue
=
(unsigned int)
(
(ul_HighTiming
*
60)
*
(250000.0
*
b_ClockSelection));
/*******************/
/* Round the value */
/*******************/
if ((double)((double)(ul_HighTiming * 60.0) * (250000.0 * (double)b_ClockSelection)) >= ((double)((double)ul_HighTimerValue + 0.5))) {
ul_HighTimerValue
=
ul_HighTimerValue
+
1;
}
/*****************************/
/* Calculate the real timing */
/*****************************/
ul_RealHighTiming
=
(unsigned int)
(ul_HighTimerValue
/
(250000.0
*
(double)
b_ClockSelection))
/
60;
d_RealHighTiming
=
(
(double)
ul_HighTimerValue
/
(250000.0
*
(double)
b_ClockSelection))
/
60.0;
if ((double)(((double)ul_HighTimerValue / (250000.0 * (double)b_ClockSelection)) / 60.0) >= (double)((double)ul_RealHighTiming + 0.5)) {
ul_RealHighTiming
=
ul_RealHighTiming
+
1;
}
ul_HighTiming
=
ul_HighTiming
-
1;
ul_HighTimerValue
=
ul_HighTimerValue
-
2;
if (b_ClockSelection != APCI1710_40MHZ) {
ul_HighTimerValue
=
(unsigned int)
(
(double)
(ul_HighTimerValue)
*
1.007752288);
}
break;
}
fpu_end();
/************************/
/* Save the timing unit */
/************************/
devpriv->
s_ModuleInfo
[b_ModulNbr].
s_PWMModuleInfo.
s_PWMInfo
[b_PWM].
b_TimingUnit
=
b_TimingUnit;
/****************************/
/* Save the low base timing */
/****************************/
devpriv->
s_ModuleInfo
[b_ModulNbr].
s_PWMModuleInfo.
s_PWMInfo
[b_PWM].
d_LowTiming
=
d_RealLowTiming;
devpriv->
s_ModuleInfo
[b_ModulNbr].
s_PWMModuleInfo.
s_PWMInfo
[b_PWM].
ul_RealLowTiming
=
ul_RealLowTiming;
/****************************/
/* Save the high base timing */
/****************************/
devpriv->
s_ModuleInfo
[b_ModulNbr].
s_PWMModuleInfo.
s_PWMInfo
[b_PWM].
d_HighTiming
=
d_RealHighTiming;
devpriv->
s_ModuleInfo
[b_ModulNbr].
s_PWMModuleInfo.
s_PWMInfo
[b_PWM].
ul_RealHighTiming
=
ul_RealHighTiming;
/************************/
/* Write the low timing */
/************************/
outl(ul_LowTimerValue, devpriv->s_BoardInfos.ui_Address + 0 + (20 * b_PWM) + (64 * b_ModulNbr));
/*************************/
/* Write the high timing */
/*************************/
outl(ul_HighTimerValue, devpriv->s_BoardInfos.ui_Address + 4 + (20 * b_PWM) + (64 * b_ModulNbr));
/***************************/
/* Set the clock selection */
/***************************/
dw_Command =
inl
(devpriv->
s_BoardInfos.
ui_Address
+ 8 +
(20 * b_PWM) + (64 * b_ModulNbr));
dw_Command =
dw_Command
& 0x7F;
if (b_ClockSelection == APCI1710_40MHZ) {
dw_Command
=
dw_Command
|
0x80;
}
/***************************/
/* Set the clock selection */
/***************************/
outl(dw_Command,
devpriv->
s_BoardInfos.
ui_Address
+ 8 +
(20 * b_PWM) + (64 * b_ModulNbr));
} else {
/***************************************/
/* High base timing selection is wrong */
/***************************************/
DPRINTK("High base timing selection is wrong\n");
i_ReturnValue =
-8;
}
} else {
/**************************************/
/* Low base timing selection is wrong */
/**************************************/
DPRINTK("Low base timing selection is wrong\n");
i_ReturnValue = -7;
}
} /* if ((b_TimingUnit >= 0) && (b_TimingUnit <= 4)) */
else {
/**********************************/
/* Timing unit selection is wrong */
/**********************************/
DPRINTK("Timing unit selection is wrong\n");
i_ReturnValue = -6;
} /* if ((b_TimingUnit >= 0) && (b_TimingUnit <= 4)) */
} /* if (dw_Status & 0x10) */
else {
/***********************/
/* PWM not initialised */
/***********************/
DPRINTK("PWM not initialised\n");
i_ReturnValue = -5;
} /* if (dw_Status & 0x10) */
} /* if (b_PWM >= 0 && b_PWM <= 1) */
else {
/******************************/
/* Tor PWM selection is wrong */
/******************************/
DPRINTK("Tor PWM selection is wrong\n");
i_ReturnValue = -4;
} /* if (b_PWM >= 0 && b_PWM <= 1) */
} else {
/**********************************/
/* The module is not a PWM module */
/**********************************/
DPRINTK("The module is not a PWM module\n");
i_ReturnValue = -3;
}
} else {
/***********************/
/* Module number error */
/***********************/
DPRINTK("Module number error\n");
i_ReturnValue = -2;
}
return i_ReturnValue;
}
Generated by GNU enscript 1.6.4.