fixed a bunch of insn_bits functions
authorFrank Mori Hess <fmhess@speakeasy.net>
Thu, 25 Oct 2001 22:11:19 +0000 (22:11 +0000)
committerFrank Mori Hess <fmhess@speakeasy.net>
Thu, 25 Oct 2001 22:11:19 +0000 (22:11 +0000)
comedi/drivers/adl_pci9118.c
comedi/drivers/adv_pci1710.c
comedi/drivers/das1800.c
comedi/drivers/dt2811.c
comedi/drivers/multiq3.c
comedi/drivers/pcl726.c
comedi/drivers/pcl818.c
comedi/drivers/rti800.c
comedi/drivers/skel.c

index cf644ab3233a9ca49a74fbd491067cbf4c3acb64..e5e7dce5f102c7f1f78f6358103d70539613ec90 100644 (file)
@@ -773,7 +773,7 @@ int pci9118_insn_bits_do(comedi_device *dev,comedi_subdevice *s, comedi_insn *in
                s->state |= (data[0]&data[1]);
                outl(s->state & 0x0f, dev->iobase + PCI9118_DO);
        }
-       data[1] = inl(dev->iobase + PCI9118_DI) & 0x0f;
+       data[1] = s->state;
 
        return 2;
 }
index e6e92a5f4e5b6ba1f50b492f825c25fe4bb83e2e..de8170f10f4f7359151356930fceaaabe1da35aa 100644 (file)
@@ -431,7 +431,7 @@ int pci171x_insn_bits_do(comedi_device *dev,comedi_subdevice *s, comedi_insn *in
                s->state |= (data[0]&data[1]);
                outw(s->state, dev->iobase + PCI171x_DO);
        }
-       data[1] = inw(dev->iobase + PCI171x_DI);
+       data[1] = s->state;
 
        return 2;
 }
index a3ac1e192234eaaf9b05d608438d7ff4a4080f1a..a19f897edbe657bd919050c39c73d6fa7e1bf9e3 100644 (file)
@@ -1236,13 +1236,6 @@ static int das1800_ai_do_cmdtest(comedi_device *dev,comedi_subdevice *s,comedi_c
 
        switch(cmd->stop_src)
        {
-               case TRIG_EXT:
-                       if(cmd->stop_arg)
-                       {
-                               cmd->stop_arg = 0;
-                               err++;
-                       }
-                       break;
                case TRIG_COUNT:
                        if(!cmd->stop_arg)
                        {
index ff40026da48c778a27d2dadaaa676b3dcdb59735..e5b9138f7fec5e716a76057826189402036055d6 100644 (file)
@@ -560,9 +560,11 @@ static int dt2811_do_insn_bits(comedi_device *dev,comedi_subdevice *s,
        if(insn->n!=2)return -EINVAL;
 
        s->state &= ~data[0];
-       s->state |= data[1];
+       s->state |= data[0] & data[1];
        outb(s->state, dev->iobase + DT2811_DIO);
 
+       data[1] = s->state;
+
        return 2;
 }
 
index 366f43b5c2dd2fea86107c41d936d1f1a1fa5c0e..48dff42b56195da1c00e3b33abda926259e9d82b 100644 (file)
@@ -191,6 +191,8 @@ static int multiq3_do_insn_bits(comedi_device *dev, comedi_subdevice *s,
   s->state |= (data[0]&data[1]);
   outw(s->state, dev->iobase + MULTIQ3_DIGOUT_PORT);
 
+  data[1] = s->state;
+
   return 2;
 }
 
index 09b4fd243381b7e3376b9c598f276ad797cb2766..5fb0a054cba875949c04fa8bf117b6d12400cd46 100644 (file)
@@ -243,7 +243,9 @@ static int pcl726_do_insn_bits(comedi_device *dev,comedi_subdevice *s,
                outb(s->state&0xff,dev->iobase+this_board->do_lo);
        if(data[1]&0xff00)
                outb((s->state>>8),dev->iobase+this_board->do_hi);
-       
+
+       data[1] = s->state;
+               
        return 2;
 }
 
index 164b2920f9ce0a63e6e2d9183125643f0f8001bd..6a0f31c01f02222fcd530427a47e0c9baa29d4c3 100644 (file)
@@ -476,10 +476,12 @@ static int pcl818_do_insn_bits(comedi_device *dev, comedi_subdevice *s,
        outb(s->state & 0xff, dev->iobase + PCL818_DO_LO);
         outb((s->state >> 8), dev->iobase + PCL818_DO_HI);
 
+       data[1] = s->state;
+       
        return 2;
 }
 
-/* 
+/*
 ==============================================================================
    analog input interrupt mode 1 & 3, 818 cards
    one sample per interrupt version   
index 159c7bda0291f3de1c840bb354d24a9707e207f0..38f681d79e15b1f2636c1f38567a83af8ea1ca97 100644 (file)
@@ -276,6 +276,8 @@ static int rti800_do_insn_bits(comedi_device *dev,comedi_subdevice *s,
                outb(s->state ^ 0xff, dev->iobase + RTI800_DO);
        }
 
+       data[1] = s->state;
+
        return 2;
 }
 
index 24ce509f849598a56c3e97b4f03721f12a7c1568..2751470a1cd41bac253caf1300ae18e6cf592363 100644 (file)
@@ -513,9 +513,13 @@ static int skel_dio_insn_bits(comedi_device *dev,comedi_subdevice *s,
                /* Write out the new digital output lines */
                //outw(s->state,dev->iobase + SKEL_DIO);
        }
+
        /* on return, data[1] contains the value of the digital
-        * input lines. */
+        * input and output lines. */
        //data[1]=inw(dev->iobase + SKEL_DIO);
+       /* or we could just return the software copy of the output values if
+        * it was a purely digital output subdevice */
+       //data[1]=s->state;
 
        return 2;
 }
@@ -529,9 +533,9 @@ static int skel_dio_insn_config(comedi_device *dev,comedi_subdevice *s,
 
        /* The input or output configuration of each digital line is
         * configured by a special insn_config instruction.  chanspec
-        * contains the channel to be changed, and data[0] contains the 
+        * contains the channel to be changed, and data[0] contains the
         * value COMEDI_INPUT or COMEDI_OUTPUT. */
-       
+
        if(data[0]==COMEDI_OUTPUT){
                s->io_bits |= 1<<chan;
        }else{