summaryrefslogtreecommitdiffstats
path: root/drivers/pps/generators/pps_gen_parport.c
diff options
context:
space:
mode:
authorAlexander Gordeev2011-01-13 02:01:00 +0100
committerLinus Torvalds2011-01-13 17:03:21 +0100
commit563558b2c7350371551bf08348ac61be62200505 (patch)
treee7f767bf68efd16a8784c8875d885ba6ea9ecf6d /drivers/pps/generators/pps_gen_parport.c
parentpps: add parallel port PPS signal generator (diff)
downloadkernel-qcow2-linux-563558b2c7350371551bf08348ac61be62200505.tar.gz
kernel-qcow2-linux-563558b2c7350371551bf08348ac61be62200505.tar.xz
kernel-qcow2-linux-563558b2c7350371551bf08348ac61be62200505.zip
pps: add parallel port PPS signal generator
Add PPS signal generator which utilizes STROBE pin of a parallel port to send PPS signals. It uses parport abstraction layer and hrtimers to precisely control the signal. Signed-off-by: Alexander Gordeev <lasaine@lvk.cs.msu.su> Cc: Rodolfo Giometti <giometti@linux.it> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers/pps/generators/pps_gen_parport.c')
-rw-r--r--drivers/pps/generators/pps_gen_parport.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/drivers/pps/generators/pps_gen_parport.c b/drivers/pps/generators/pps_gen_parport.c
index a15fe25efd55..5c32f8dacf56 100644
--- a/drivers/pps/generators/pps_gen_parport.c
+++ b/drivers/pps/generators/pps_gen_parport.c
@@ -76,8 +76,15 @@ static enum hrtimer_restart hrtimer_event(struct hrtimer *timer)
long lim, delta;
unsigned long flags;
- /* NB: approx time with blocked interrupts =
- send_delay + 3 * SAFETY_INTERVAL */
+ /* We have to disable interrupts here. The idea is to prevent
+ * other interrupts on the same processor to introduce random
+ * lags while polling the clock. getnstimeofday() takes <1us on
+ * most machines while other interrupt handlers can take much
+ * more potentially.
+ *
+ * NB: approx time with blocked interrupts =
+ * send_delay + 3 * SAFETY_INTERVAL
+ */
local_irq_save(flags);
/* first of all we get the time stamp... */