aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/staging/comedi
diff options
context:
space:
mode:
authorIan Abbott <abbotti@mev.co.uk>2009-04-14 10:33:42 -0400
committerGreg Kroah-Hartman <gregkh@suse.de>2009-06-19 14:00:30 -0400
commita71f18d2a1ca1b3a0e1e46f3c7259829d4d33f47 (patch)
tree650b79e0facfbefca6674680105ac91921839235 /drivers/staging/comedi
parent6a2436e48485cd8c11263f6ebdad356a147cc068 (diff)
Staging: comedi: pcl818: Fix option handling for FIFO mode (hopefully!).
Signed-off-by: Frank Mori Hess <fmhess@users.sourceforge.net> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/staging/comedi')
-rw-r--r--drivers/staging/comedi/drivers/pcl818.c47
1 files changed, 27 insertions, 20 deletions
diff --git a/drivers/staging/comedi/drivers/pcl818.c b/drivers/staging/comedi/drivers/pcl818.c
index 4ab4154242e..29cc5a5151a 100644
--- a/drivers/staging/comedi/drivers/pcl818.c
+++ b/drivers/staging/comedi/drivers/pcl818.c
@@ -1025,26 +1025,32 @@ static int pcl818_ai_cmd_mode(int mode, struct comedi_device * dev,
1025 } 1025 }
1026#endif 1026#endif
1027 break; 1027 break;
1028 case 0: /* IRQ */ 1028 case 0:
1029 /* rt_printk("IRQ\n"); */ 1029 if (!devpriv->usefifo) {
1030 if (mode == 1) { 1030 /* IRQ */
1031 devpriv->ai_mode = INT_TYPE_AI1_INT; 1031 /* rt_printk("IRQ\n"); */
1032 outb(0x83 | (dev->irq << 4), dev->iobase + PCL818_CONTROL); /* Pacer+IRQ */ 1032 if (mode == 1) {
1033 } else { 1033 devpriv->ai_mode = INT_TYPE_AI1_INT;
1034 devpriv->ai_mode = INT_TYPE_AI3_INT; 1034 /* Pacer+IRQ */
1035 outb(0x82 | (dev->irq << 4), dev->iobase + PCL818_CONTROL); /* Ext trig+IRQ */ 1035 outb(0x83 | (dev->irq << 4), dev->iobase + PCL818_CONTROL);
1036 }; 1036 } else {
1037 break; 1037 devpriv->ai_mode = INT_TYPE_AI3_INT;
1038 case -1: /* FIFO */ 1038 /* Ext trig+IRQ */
1039 outb(1, dev->iobase + PCL818_FI_ENABLE); /* enable FIFO */ 1039 outb(0x82 | (dev->irq << 4), dev->iobase + PCL818_CONTROL);
1040 if (mode == 1) { 1040 }
1041 devpriv->ai_mode = INT_TYPE_AI1_FIFO;
1042 outb(0x03, dev->iobase + PCL818_CONTROL); /* Pacer */
1043 } else { 1041 } else {
1044 devpriv->ai_mode = INT_TYPE_AI3_FIFO; 1042 /* FIFO */
1045 outb(0x02, dev->iobase + PCL818_CONTROL); 1043 /* enable FIFO */
1046 }; /* Ext trig */ 1044 outb(1, dev->iobase + PCL818_FI_ENABLE);
1047 break; 1045 if (mode == 1) {
1046 devpriv->ai_mode = INT_TYPE_AI1_FIFO;
1047 /* Pacer */
1048 outb(0x03, dev->iobase + PCL818_CONTROL);
1049 } else {
1050 devpriv->ai_mode = INT_TYPE_AI3_FIFO;
1051 outb(0x02, dev->iobase + PCL818_CONTROL);
1052 }
1053 }
1048 } 1054 }
1049 1055
1050 start_pacer(dev, mode, divisor1, divisor2); 1056 start_pacer(dev, mode, divisor1, divisor2);
@@ -1687,7 +1693,8 @@ static int pcl818_attach(struct comedi_device * dev, struct comedi_devconfig * i
1687{ 1693{
1688 int ret; 1694 int ret;
1689 unsigned long iobase; 1695 unsigned long iobase;
1690 unsigned int irq, dma; 1696 unsigned int irq;
1697 int dma;
1691 unsigned long pages; 1698 unsigned long pages;
1692 struct comedi_subdevice *s; 1699 struct comedi_subdevice *s;
1693 1700