int next_dma_buf;       /*  which DMA buffer will be used next round */
        long dma_runs_to_end;   /*  how many we must permorm DMA transfer to end of record */
        unsigned long last_dma_run;     /*  how many bytes we must transfer on last DMA page */
-       unsigned char ai_neverending;   /*  if=1, then we do neverending record (you must use cancel()) */
-       int irq_blocked;        /*  1=IRQ now uses any subdev */
-       int irq_was_now_closed; /*  when IRQ finish, there's stored int816_mode for last interrupt */
        int int816_mode;        /*  who now uses IRQ - 1=AI1 int, 2=AI1 dma, 3=AI3 int, 4AI3 dma */
        int ai_act_scan;        /*  how many scans we finished */
        unsigned int ai_act_chanlist[16];       /*  MUX setting for actual AI operations */
        unsigned int ai_poll_ptr;       /*  how many sampes transfer poll */
        unsigned int divisor1;
        unsigned int divisor2;
+       unsigned int irq_blocked:1;
+       unsigned int irq_was_now_closed:1;
+       unsigned int ai_neverending:1;
 };
 
 /*
 {
        struct pcl816_private *devpriv = dev->private;
 
-       if (devpriv->irq_blocked > 0) {
+       if (devpriv->irq_blocked) {
                switch (devpriv->int816_mode) {
                case INT_TYPE_AI1_DMA:
                case INT_TYPE_AI3_DMA:
                        /* Stop A/D */
                        outb(0, dev->iobase + PCL816_CONTROL);
                        devpriv->irq_blocked = 0;
-                       devpriv->irq_was_now_closed = devpriv->int816_mode;
+                       devpriv->irq_was_now_closed = 1;
                        devpriv->int816_mode = 0;
 /* s->busy = 0; */
                        break;