aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorAlexander Gordeev <lasaine@lvk.cs.msu.su>2011-01-12 20:01:00 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2011-01-13 11:03:21 -0500
commit563558b2c7350371551bf08348ac61be62200505 (patch)
treee7f767bf68efd16a8784c8875d885ba6ea9ecf6d /drivers
parent46b402a0e5e4b4d81b11c32dfb2312bf5828ecb5 (diff)
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')
-rw-r--r--drivers/pps/generators/Kconfig6
-rw-r--r--drivers/pps/generators/pps_gen_parport.c11
2 files changed, 10 insertions, 7 deletions
diff --git a/drivers/pps/generators/Kconfig b/drivers/pps/generators/Kconfig
index 5fbd6148c804..f3a73dd77660 100644
--- a/drivers/pps/generators/Kconfig
+++ b/drivers/pps/generators/Kconfig
@@ -2,16 +2,12 @@
2# PPS generators configuration 2# PPS generators configuration
3# 3#
4 4
5if PPS
6
7comment "PPS generators support" 5comment "PPS generators support"
8 6
9config PPS_GENERATOR_PARPORT 7config PPS_GENERATOR_PARPORT
10 tristate "Parallel port PPS signal generator" 8 tristate "Parallel port PPS signal generator"
11 depends on PARPORT != n && GENERIC_TIME 9 depends on PARPORT
12 help 10 help
13 If you say yes here you get support for a PPS signal generator which 11 If you say yes here you get support for a PPS signal generator which
14 utilizes STROBE pin of a parallel port to send PPS signals. It uses 12 utilizes STROBE pin of a parallel port to send PPS signals. It uses
15 parport abstraction layer and hrtimers to precisely control the signal. 13 parport abstraction layer and hrtimers to precisely control the signal.
16
17endif
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)
76 long lim, delta; 76 long lim, delta;
77 unsigned long flags; 77 unsigned long flags;
78 78
79 /* NB: approx time with blocked interrupts = 79 /* We have to disable interrupts here. The idea is to prevent
80 send_delay + 3 * SAFETY_INTERVAL */ 80 * other interrupts on the same processor to introduce random
81 * lags while polling the clock. getnstimeofday() takes <1us on
82 * most machines while other interrupt handlers can take much
83 * more potentially.
84 *
85 * NB: approx time with blocked interrupts =
86 * send_delay + 3 * SAFETY_INTERVAL
87 */
81 local_irq_save(flags); 88 local_irq_save(flags);
82 89
83 /* first of all we get the time stamp... */ 90 /* first of all we get the time stamp... */