Fix ni_load_channelgain_list() for 611x.
authorDavid Schleef <ds@schleef.org>
Wed, 20 Mar 2002 21:28:22 +0000 (21:28 +0000)
committerDavid Schleef <ds@schleef.org>
Wed, 20 Mar 2002 21:28:22 +0000 (21:28 +0000)
comedi/drivers/ni_mio_common.c

index fe53315c3e7f3ef264f8147563e09595c3b139d7..8f1d9c3a809b0de7240cac34a60937c8215102d5 100644 (file)
@@ -1064,12 +1064,21 @@ static void ni_load_channelgain_list(comedi_device *dev,unsigned int n_chan,
        /* prime the channel/gain list */
 
        win_out(1,AI_Command_1_Register);
-       for(i=0;i<1000;i++){
-               if(!(win_in(AI_Status_1_Register)&AI_FIFO_Empty_St)){
-                       win_out(1,ADC_FIFO_Clear);
-                       return;
+       if(boardtype.reg_611x){
+               /* The 611x has screwy 32-bit FIFOs. */
+               for(i=0;i<NI_TIMEOUT;i++){
+                       if(ni_readb(Status_611x)&0x80){
+                               ni_readl(ADC_FIFO_Data_611x)&0xffff;
+                               return;
+                       }
+               }
+       }else{
+               for(i=0;i<NI_TIMEOUT;i++){
+                       if(!(win_in(AI_Status_1_Register)&AI_FIFO_Empty_St)){
+                               win_out(1,ADC_FIFO_Clear);
+                               return;
+                       }
                }
-               //udelay(25);
        }
        rt_printk("ni_E: timeout 1\n");
 }