|
@@ -55,65 +55,6 @@ You should also find the complete GPL in the COPYING file accompanying this sour
|
|
|
|
|
|
#include "APCI1710_Pwm.h"
|
|
|
|
|
|
-/*
|
|
|
-+----------------------------------------------------------------------------+
|
|
|
-| Function Name :INT i_APCI1710_InsnConfigPWM(struct comedi_device *dev,
|
|
|
-struct comedi_subdevice *s,struct comedi_insn *insn,unsigned int *data) |
|
|
|
-+----------------------------------------------------------------------------+
|
|
|
-| Task : Pwm Init and Get Pwm Initialisation |
|
|
|
-+----------------------------------------------------------------------------+
|
|
|
-| Input Parameters :
|
|
|
-+----------------------------------------------------------------------------+
|
|
|
-| Output Parameters : - |
|
|
|
-+----------------------------------------------------------------------------+
|
|
|
-| Return Value :
|
|
|
-+----------------------------------------------------------------------------+
|
|
|
-*/
|
|
|
-
|
|
|
-int i_APCI1710_InsnConfigPWM(struct comedi_device *dev, struct comedi_subdevice *s,
|
|
|
- struct comedi_insn *insn, unsigned int *data)
|
|
|
-{
|
|
|
- unsigned char b_ConfigType;
|
|
|
- int i_ReturnValue = 0;
|
|
|
- b_ConfigType = CR_CHAN(insn->chanspec);
|
|
|
-
|
|
|
- switch (b_ConfigType) {
|
|
|
- case APCI1710_PWM_INIT:
|
|
|
- i_ReturnValue = i_APCI1710_InitPWM(dev, (unsigned char) CR_AREF(insn->chanspec), /* b_ModulNbr */
|
|
|
- (unsigned char) data[0], /* b_PWM */
|
|
|
- (unsigned char) data[1], /* b_ClockSelection */
|
|
|
- (unsigned char) data[2], /* b_TimingUnit */
|
|
|
- (unsigned int) data[3], /* ul_LowTiming */
|
|
|
- (unsigned int) data[4], /* ul_HighTiming */
|
|
|
- (unsigned int *) &data[0], /* pul_RealLowTiming */
|
|
|
- (unsigned int *) &data[1] /* pul_RealHighTiming */
|
|
|
- );
|
|
|
- break;
|
|
|
-
|
|
|
- case APCI1710_PWM_GETINITDATA:
|
|
|
- i_ReturnValue = i_APCI1710_GetPWMInitialisation(dev, (unsigned char) CR_AREF(insn->chanspec), /* b_ModulNbr */
|
|
|
- (unsigned char) data[0], /* b_PWM */
|
|
|
- (unsigned char *) &data[0], /* pb_TimingUnit */
|
|
|
- (unsigned int *) &data[1], /* pul_LowTiming */
|
|
|
- (unsigned int *) &data[2], /* pul_HighTiming */
|
|
|
- (unsigned char *) &data[3], /* pb_StartLevel */
|
|
|
- (unsigned char *) &data[4], /* pb_StopMode */
|
|
|
- (unsigned char *) &data[5], /* pb_StopLevel */
|
|
|
- (unsigned char *) &data[6], /* pb_ExternGate */
|
|
|
- (unsigned char *) &data[7], /* pb_InterruptEnable */
|
|
|
- (unsigned char *) &data[8] /* pb_Enable */
|
|
|
- );
|
|
|
- break;
|
|
|
-
|
|
|
- default:
|
|
|
- printk(" Config Parameter Wrong\n");
|
|
|
- }
|
|
|
-
|
|
|
- if (i_ReturnValue >= 0)
|
|
|
- i_ReturnValue = insn->n;
|
|
|
- return i_ReturnValue;
|
|
|
-}
|
|
|
-
|
|
|
/*
|
|
|
+----------------------------------------------------------------------------+
|
|
|
| Function Name : _INT_ i_APCI1710_InitPWM |
|
|
@@ -178,15 +119,15 @@ int i_APCI1710_InsnConfigPWM(struct comedi_device *dev, struct comedi_subdevice
|
|
|
| this board |
|
|
|
+----------------------------------------------------------------------------+
|
|
|
*/
|
|
|
-
|
|
|
-int i_APCI1710_InitPWM(struct comedi_device *dev,
|
|
|
- unsigned char b_ModulNbr,
|
|
|
- unsigned char b_PWM,
|
|
|
- unsigned char b_ClockSelection,
|
|
|
- unsigned char b_TimingUnit,
|
|
|
- unsigned int ul_LowTiming,
|
|
|
- unsigned int ul_HighTiming,
|
|
|
- unsigned int *pul_RealLowTiming, unsigned int *pul_RealHighTiming)
|
|
|
+static int i_APCI1710_InitPWM(struct comedi_device *dev,
|
|
|
+ unsigned char b_ModulNbr,
|
|
|
+ unsigned char b_PWM,
|
|
|
+ unsigned char b_ClockSelection,
|
|
|
+ unsigned char b_TimingUnit,
|
|
|
+ unsigned int ul_LowTiming,
|
|
|
+ unsigned int ul_HighTiming,
|
|
|
+ unsigned int *pul_RealLowTiming,
|
|
|
+ unsigned int *pul_RealHighTiming)
|
|
|
{
|
|
|
struct addi_private *devpriv = dev->private;
|
|
|
int i_ReturnValue = 0;
|
|
@@ -1534,17 +1475,18 @@ int i_APCI1710_InitPWM(struct comedi_device *dev,
|
|
|
| "i_APCI1710_InitPWM" |
|
|
|
+----------------------------------------------------------------------------+
|
|
|
*/
|
|
|
-
|
|
|
-int i_APCI1710_GetPWMInitialisation(struct comedi_device *dev,
|
|
|
- unsigned char b_ModulNbr,
|
|
|
- unsigned char b_PWM,
|
|
|
- unsigned char *pb_TimingUnit,
|
|
|
- unsigned int *pul_LowTiming,
|
|
|
- unsigned int *pul_HighTiming,
|
|
|
- unsigned char *pb_StartLevel,
|
|
|
- unsigned char *pb_StopMode,
|
|
|
- unsigned char *pb_StopLevel,
|
|
|
- unsigned char *pb_ExternGate, unsigned char *pb_InterruptEnable, unsigned char *pb_Enable)
|
|
|
+static int i_APCI1710_GetPWMInitialisation(struct comedi_device *dev,
|
|
|
+ unsigned char b_ModulNbr,
|
|
|
+ unsigned char b_PWM,
|
|
|
+ unsigned char *pb_TimingUnit,
|
|
|
+ unsigned int *pul_LowTiming,
|
|
|
+ unsigned int *pul_HighTiming,
|
|
|
+ unsigned char *pb_StartLevel,
|
|
|
+ unsigned char *pb_StopMode,
|
|
|
+ unsigned char *pb_StopLevel,
|
|
|
+ unsigned char *pb_ExternGate,
|
|
|
+ unsigned char *pb_InterruptEnable,
|
|
|
+ unsigned char *pb_Enable)
|
|
|
{
|
|
|
struct addi_private *devpriv = dev->private;
|
|
|
int i_ReturnValue = 0;
|
|
@@ -1671,51 +1613,47 @@ int i_APCI1710_GetPWMInitialisation(struct comedi_device *dev,
|
|
|
}
|
|
|
|
|
|
/*
|
|
|
-+----------------------------------------------------------------------------+
|
|
|
-| Function Name :INT i_APCI1710_InsnWritePWM(struct comedi_device *dev,
|
|
|
-struct comedi_subdevice *s,struct comedi_insn *insn,unsigned int *data) |
|
|
|
-+----------------------------------------------------------------------------+
|
|
|
-| Task : Pwm Enable Disable and Set New Timing |
|
|
|
-+----------------------------------------------------------------------------+
|
|
|
-| Input Parameters :
|
|
|
-+----------------------------------------------------------------------------+
|
|
|
-| Output Parameters : - |
|
|
|
-+----------------------------------------------------------------------------+
|
|
|
-| Return Value :
|
|
|
-+----------------------------------------------------------------------------+
|
|
|
-*/
|
|
|
-
|
|
|
-int i_APCI1710_InsnWritePWM(struct comedi_device *dev, struct comedi_subdevice *s,
|
|
|
- struct comedi_insn *insn, unsigned int *data)
|
|
|
+ * Pwm Init and Get Pwm Initialisation
|
|
|
+ */
|
|
|
+static int i_APCI1710_InsnConfigPWM(struct comedi_device *dev,
|
|
|
+ struct comedi_subdevice *s,
|
|
|
+ struct comedi_insn *insn,
|
|
|
+ unsigned int *data)
|
|
|
{
|
|
|
- unsigned char b_WriteType;
|
|
|
+ unsigned char b_ConfigType;
|
|
|
int i_ReturnValue = 0;
|
|
|
- b_WriteType = CR_CHAN(insn->chanspec);
|
|
|
-
|
|
|
- switch (b_WriteType) {
|
|
|
- case APCI1710_PWM_ENABLE:
|
|
|
- i_ReturnValue = i_APCI1710_EnablePWM(dev,
|
|
|
- (unsigned char) CR_AREF(insn->chanspec),
|
|
|
- (unsigned char) data[0],
|
|
|
- (unsigned char) data[1],
|
|
|
- (unsigned char) data[2],
|
|
|
- (unsigned char) data[3], (unsigned char) data[4], (unsigned char) data[5]);
|
|
|
- break;
|
|
|
+ b_ConfigType = CR_CHAN(insn->chanspec);
|
|
|
|
|
|
- case APCI1710_PWM_DISABLE:
|
|
|
- i_ReturnValue = i_APCI1710_DisablePWM(dev,
|
|
|
- (unsigned char) CR_AREF(insn->chanspec), (unsigned char) data[0]);
|
|
|
+ switch (b_ConfigType) {
|
|
|
+ case APCI1710_PWM_INIT:
|
|
|
+ i_ReturnValue = i_APCI1710_InitPWM(dev, (unsigned char) CR_AREF(insn->chanspec), /* b_ModulNbr */
|
|
|
+ (unsigned char) data[0], /* b_PWM */
|
|
|
+ (unsigned char) data[1], /* b_ClockSelection */
|
|
|
+ (unsigned char) data[2], /* b_TimingUnit */
|
|
|
+ (unsigned int) data[3], /* ul_LowTiming */
|
|
|
+ (unsigned int) data[4], /* ul_HighTiming */
|
|
|
+ (unsigned int *) &data[0], /* pul_RealLowTiming */
|
|
|
+ (unsigned int *) &data[1] /* pul_RealHighTiming */
|
|
|
+ );
|
|
|
break;
|
|
|
|
|
|
- case APCI1710_PWM_NEWTIMING:
|
|
|
- i_ReturnValue = i_APCI1710_SetNewPWMTiming(dev,
|
|
|
- (unsigned char) CR_AREF(insn->chanspec),
|
|
|
- (unsigned char) data[0],
|
|
|
- (unsigned char) data[1], (unsigned int) data[2], (unsigned int) data[3]);
|
|
|
+ case APCI1710_PWM_GETINITDATA:
|
|
|
+ i_ReturnValue = i_APCI1710_GetPWMInitialisation(dev, (unsigned char) CR_AREF(insn->chanspec), /* b_ModulNbr */
|
|
|
+ (unsigned char) data[0], /* b_PWM */
|
|
|
+ (unsigned char *) &data[0], /* pb_TimingUnit */
|
|
|
+ (unsigned int *) &data[1], /* pul_LowTiming */
|
|
|
+ (unsigned int *) &data[2], /* pul_HighTiming */
|
|
|
+ (unsigned char *) &data[3], /* pb_StartLevel */
|
|
|
+ (unsigned char *) &data[4], /* pb_StopMode */
|
|
|
+ (unsigned char *) &data[5], /* pb_StopLevel */
|
|
|
+ (unsigned char *) &data[6], /* pb_ExternGate */
|
|
|
+ (unsigned char *) &data[7], /* pb_InterruptEnable */
|
|
|
+ (unsigned char *) &data[8] /* pb_Enable */
|
|
|
+ );
|
|
|
break;
|
|
|
|
|
|
default:
|
|
|
- printk("Write Config Parameter Wrong\n");
|
|
|
+ printk(" Config Parameter Wrong\n");
|
|
|
}
|
|
|
|
|
|
if (i_ReturnValue >= 0)
|
|
@@ -1807,13 +1745,14 @@ int i_APCI1710_InsnWritePWM(struct comedi_device *dev, struct comedi_subdevice *
|
|
|
| See function "i_APCI1710_SetBoardIntRoutineX" |
|
|
|
+----------------------------------------------------------------------------+
|
|
|
*/
|
|
|
-
|
|
|
-int i_APCI1710_EnablePWM(struct comedi_device *dev,
|
|
|
- unsigned char b_ModulNbr,
|
|
|
- unsigned char b_PWM,
|
|
|
- unsigned char b_StartLevel,
|
|
|
- unsigned char b_StopMode,
|
|
|
- unsigned char b_StopLevel, unsigned char b_ExternGate, unsigned char b_InterruptEnable)
|
|
|
+static int i_APCI1710_EnablePWM(struct comedi_device *dev,
|
|
|
+ unsigned char b_ModulNbr,
|
|
|
+ unsigned char b_PWM,
|
|
|
+ unsigned char b_StartLevel,
|
|
|
+ unsigned char b_StopMode,
|
|
|
+ unsigned char b_StopLevel,
|
|
|
+ unsigned char b_ExternGate,
|
|
|
+ unsigned char b_InterruptEnable)
|
|
|
{
|
|
|
struct addi_private *devpriv = dev->private;
|
|
|
int i_ReturnValue = 0;
|
|
@@ -2064,8 +2003,9 @@ int i_APCI1710_EnablePWM(struct comedi_device *dev,
|
|
|
| "i_APCI1710_EnablePWM" |
|
|
|
+----------------------------------------------------------------------------+
|
|
|
*/
|
|
|
-
|
|
|
-int i_APCI1710_DisablePWM(struct comedi_device *dev, unsigned char b_ModulNbr, unsigned char b_PWM)
|
|
|
+static int i_APCI1710_DisablePWM(struct comedi_device *dev,
|
|
|
+ unsigned char b_ModulNbr,
|
|
|
+ unsigned char b_PWM)
|
|
|
{
|
|
|
struct addi_private *devpriv = dev->private;
|
|
|
int i_ReturnValue = 0;
|
|
@@ -2192,10 +2132,12 @@ int i_APCI1710_DisablePWM(struct comedi_device *dev, unsigned char b_ModulNbr, u
|
|
|
| -8: High base timing selection is wrong |
|
|
|
+----------------------------------------------------------------------------+
|
|
|
*/
|
|
|
-
|
|
|
-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)
|
|
|
+static 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)
|
|
|
{
|
|
|
struct addi_private *devpriv = dev->private;
|
|
|
unsigned char b_ClockSelection;
|
|
@@ -3419,6 +3361,49 @@ int i_APCI1710_SetNewPWMTiming(struct comedi_device *dev,
|
|
|
return i_ReturnValue;
|
|
|
}
|
|
|
|
|
|
+/*
|
|
|
+ * Pwm Enable Disable and Set New Timing
|
|
|
+ */
|
|
|
+static int i_APCI1710_InsnWritePWM(struct comedi_device *dev,
|
|
|
+ struct comedi_subdevice *s,
|
|
|
+ struct comedi_insn *insn,
|
|
|
+ unsigned int *data)
|
|
|
+{
|
|
|
+ unsigned char b_WriteType;
|
|
|
+ int i_ReturnValue = 0;
|
|
|
+ b_WriteType = CR_CHAN(insn->chanspec);
|
|
|
+
|
|
|
+ switch (b_WriteType) {
|
|
|
+ case APCI1710_PWM_ENABLE:
|
|
|
+ i_ReturnValue = i_APCI1710_EnablePWM(dev,
|
|
|
+ (unsigned char) CR_AREF(insn->chanspec),
|
|
|
+ (unsigned char) data[0],
|
|
|
+ (unsigned char) data[1],
|
|
|
+ (unsigned char) data[2],
|
|
|
+ (unsigned char) data[3], (unsigned char) data[4], (unsigned char) data[5]);
|
|
|
+ break;
|
|
|
+
|
|
|
+ case APCI1710_PWM_DISABLE:
|
|
|
+ i_ReturnValue = i_APCI1710_DisablePWM(dev,
|
|
|
+ (unsigned char) CR_AREF(insn->chanspec), (unsigned char) data[0]);
|
|
|
+ break;
|
|
|
+
|
|
|
+ case APCI1710_PWM_NEWTIMING:
|
|
|
+ i_ReturnValue = i_APCI1710_SetNewPWMTiming(dev,
|
|
|
+ (unsigned char) CR_AREF(insn->chanspec),
|
|
|
+ (unsigned char) data[0],
|
|
|
+ (unsigned char) data[1], (unsigned int) data[2], (unsigned int) data[3]);
|
|
|
+ break;
|
|
|
+
|
|
|
+ default:
|
|
|
+ printk("Write Config Parameter Wrong\n");
|
|
|
+ }
|
|
|
+
|
|
|
+ if (i_ReturnValue >= 0)
|
|
|
+ i_ReturnValue = insn->n;
|
|
|
+ return i_ReturnValue;
|
|
|
+}
|
|
|
+
|
|
|
/*
|
|
|
+----------------------------------------------------------------------------+
|
|
|
| Function Name : _INT_ i_APCI1710_GetPWMStatus |
|
|
@@ -3464,9 +3449,10 @@ int i_APCI1710_SetNewPWMTiming(struct comedi_device *dev,
|
|
|
| -6: PWM not enabled see function "i_APCI1710_EnablePWM"|
|
|
|
+----------------------------------------------------------------------------+
|
|
|
*/
|
|
|
-
|
|
|
-int i_APCI1710_InsnReadGetPWMStatus(struct comedi_device *dev, struct comedi_subdevice *s,
|
|
|
- struct comedi_insn *insn, unsigned int *data)
|
|
|
+static int i_APCI1710_InsnReadGetPWMStatus(struct comedi_device *dev,
|
|
|
+ struct comedi_subdevice *s,
|
|
|
+ struct comedi_insn *insn,
|
|
|
+ unsigned int *data)
|
|
|
{
|
|
|
struct addi_private *devpriv = dev->private;
|
|
|
int i_ReturnValue = 0;
|
|
@@ -3566,8 +3552,10 @@ int i_APCI1710_InsnReadGetPWMStatus(struct comedi_device *dev, struct comedi_sub
|
|
|
return i_ReturnValue;
|
|
|
}
|
|
|
|
|
|
-int i_APCI1710_InsnBitsReadPWMInterrupt(struct comedi_device *dev,
|
|
|
- struct comedi_subdevice *s, struct comedi_insn *insn, unsigned int *data)
|
|
|
+static int i_APCI1710_InsnBitsReadPWMInterrupt(struct comedi_device *dev,
|
|
|
+ struct comedi_subdevice *s,
|
|
|
+ struct comedi_insn *insn,
|
|
|
+ unsigned int *data)
|
|
|
{
|
|
|
struct addi_private *devpriv = dev->private;
|
|
|
|