aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/staging/comedi/drivers/addi_apci_3501.c
diff options
context:
space:
mode:
authorH Hartley Sweeten <hsweeten@visionengravers.com>2013-01-23 12:46:22 -0700
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2013-01-25 12:00:31 -0800
commit9798df7269a44fb148d1815542abb844b0dac435 (patch)
tree54220fa2b9306433955be816444c2df17b9a4e7e /drivers/staging/comedi/drivers/addi_apci_3501.c
parentstaging: comedi: addi_apci_3501: change the MODULE_DESCRIPTION (diff)
downloadlinux-dev-9798df7269a44fb148d1815542abb844b0dac435.tar.xz
linux-dev-9798df7269a44fb148d1815542abb844b0dac435.zip
staging: comedi: addi_apci_3501: define the timer i/o registers
Create, and use, defines for the i/o registers used with the timer subdevice. Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com> Cc: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/staging/comedi/drivers/addi_apci_3501.c')
-rw-r--r--drivers/staging/comedi/drivers/addi_apci_3501.c29
1 files changed, 14 insertions, 15 deletions
diff --git a/drivers/staging/comedi/drivers/addi_apci_3501.c b/drivers/staging/comedi/drivers/addi_apci_3501.c
index 72292ab13e34..0fdcbe2d5b69 100644
--- a/drivers/staging/comedi/drivers/addi_apci_3501.c
+++ b/drivers/staging/comedi/drivers/addi_apci_3501.c
@@ -44,6 +44,14 @@
#define APCI3501_AO_DATA_VAL(x) ((x) << 8)
#define APCI3501_AO_DATA_BIPOLAR (1 << 31)
#define APCI3501_AO_TRIG_SCS_REG 0x08
+#define APCI3501_TIMER_SYNC_REG 0x20
+#define APCI3501_TIMER_RELOAD_REG 0x24
+#define APCI3501_TIMER_TIMEBASE_REG 0x28
+#define APCI3501_TIMER_CTRL_REG 0x2c
+#define APCI3501_TIMER_STATUS_REG 0x30
+#define APCI3501_TIMER_IRQ_REG 0x34
+#define APCI3501_TIMER_WARN_RELOAD_REG 0x38
+#define APCI3501_TIMER_WARN_TIMEBASE_REG 0x3c
#define APCI3501_DO_REG 0x40
#define APCI3501_DI_REG 0x50
@@ -268,17 +276,11 @@ static irqreturn_t apci3501_interrupt(int irq, void *d)
int i_temp;
/* Disable Interrupt */
- ul_Command1 =
- inl(dev->iobase + APCI3501_WATCHDOG + APCI3501_TCW_PROG);
-
+ ul_Command1 = inl(dev->iobase + APCI3501_TIMER_CTRL_REG);
ul_Command1 = (ul_Command1 & 0xFFFFF9FDul);
- outl(ul_Command1,
- dev->iobase + APCI3501_WATCHDOG + APCI3501_TCW_PROG);
-
- ui_Timer_AOWatchdog =
- inl(dev->iobase + APCI3501_WATCHDOG +
- APCI3501_TCW_IRQ) & 0x1;
+ outl(ul_Command1, dev->iobase + APCI3501_TIMER_CTRL_REG);
+ ui_Timer_AOWatchdog = inl(dev->iobase + APCI3501_TIMER_IRQ_REG) & 0x1;
if ((!ui_Timer_AOWatchdog)) {
comedi_error(dev, "IRQ from unknown source");
return IRQ_NONE;
@@ -286,13 +288,10 @@ static irqreturn_t apci3501_interrupt(int irq, void *d)
/* Enable Interrupt Send a signal to from kernel to user space */
send_sig(SIGIO, devpriv->tsk_Current, 0);
- ul_Command1 =
- inl(dev->iobase + APCI3501_WATCHDOG + APCI3501_TCW_PROG);
+ ul_Command1 = inl(dev->iobase + APCI3501_TIMER_CTRL_REG);
ul_Command1 = ((ul_Command1 & 0xFFFFF9FDul) | 1 << 1);
- outl(ul_Command1,
- dev->iobase + APCI3501_WATCHDOG + APCI3501_TCW_PROG);
- i_temp = inl(dev->iobase + APCI3501_WATCHDOG +
- APCI3501_TCW_TRIG_STATUS) & 0x1;
+ outl(ul_Command1, dev->iobase + APCI3501_TIMER_CTRL_REG);
+ i_temp = inl(dev->iobase + APCI3501_TIMER_STATUS_REG) & 0x1;
return IRQ_HANDLED;
}