|
@@ -52,13 +52,14 @@ zero volts).
|
|
|
|
|
|
#include "comedi_fc.h"
|
|
|
#include <linux/timer.h>
|
|
|
+#include <linux/ktime.h>
|
|
|
|
|
|
#define N_CHANS 8
|
|
|
|
|
|
/* Data unique to this driver */
|
|
|
struct waveform_private {
|
|
|
struct timer_list timer;
|
|
|
- struct timeval last; /* time last timer interrupt occurred */
|
|
|
+ ktime_t last; /* time last timer interrupt occurred */
|
|
|
unsigned int uvolt_amplitude; /* waveform amplitude in microvolts */
|
|
|
unsigned long usec_period; /* waveform period in microseconds */
|
|
|
unsigned long usec_current; /* current time (mod waveform period) */
|
|
@@ -171,14 +172,12 @@ static void waveform_ai_interrupt(unsigned long arg)
|
|
|
/* all times in microsec */
|
|
|
unsigned long elapsed_time;
|
|
|
unsigned int num_scans;
|
|
|
- struct timeval now;
|
|
|
+ ktime_t now;
|
|
|
bool stopping = false;
|
|
|
|
|
|
- do_gettimeofday(&now);
|
|
|
+ now = ktime_get();
|
|
|
|
|
|
- elapsed_time =
|
|
|
- 1000000 * (now.tv_sec - devpriv->last.tv_sec) + now.tv_usec -
|
|
|
- devpriv->last.tv_usec;
|
|
|
+ elapsed_time = ktime_to_us(ktime_sub(now, devpriv->last));
|
|
|
devpriv->last = now;
|
|
|
num_scans =
|
|
|
(devpriv->usec_remainder + elapsed_time) / devpriv->scan_period;
|
|
@@ -317,8 +316,9 @@ static int waveform_ai_cmd(struct comedi_device *dev,
|
|
|
else /* TRIG_TIMER */
|
|
|
devpriv->convert_period = cmd->convert_arg / nano_per_micro;
|
|
|
|
|
|
- do_gettimeofday(&devpriv->last);
|
|
|
- devpriv->usec_current = devpriv->last.tv_usec % devpriv->usec_period;
|
|
|
+ devpriv->last = ktime_get();
|
|
|
+ devpriv->usec_current =
|
|
|
+ ((u32)ktime_to_us(devpriv->last)) % devpriv->usec_period;
|
|
|
devpriv->usec_remainder = 0;
|
|
|
|
|
|
devpriv->timer.expires = jiffies + 1;
|