}
 EXPORT_SYMBOL_GPL(comedi_buf_put);
 
-int comedi_buf_get(struct comedi_async *async, unsigned short *x)
+int comedi_buf_get(struct comedi_subdevice *s, unsigned short *x)
 {
+       struct comedi_async *async = s->async;
        unsigned int n = comedi_buf_read_n_available(async);
 
        if (n < sizeof(short))
 
 unsigned int comedi_buf_read_free(struct comedi_async *, unsigned int);
 
 int comedi_buf_put(struct comedi_subdevice *s, unsigned short x);
-int comedi_buf_get(struct comedi_async *, unsigned short *);
+int comedi_buf_get(struct comedi_subdevice *s, unsigned short *x);
 
 void comedi_buf_memcpy_to(struct comedi_async *async, unsigned int offset,
                          const void *source, unsigned int num_bytes);
 
                return;
        for (i = 0; i < cmd->chanlist_len; i++) {
                /* Read sample from Comedi's circular buffer. */
-               ret = comedi_buf_get(s->async, &data);
+               ret = comedi_buf_get(s, &data);
                if (ret == 0) {
                        s->async->events |= COMEDI_CB_OVERFLOW;
                        pci230_ao_stop(dev, s);
                        for (i = 0; i < cmd->chanlist_len; i++) {
                                unsigned short datum;
 
-                               comedi_buf_get(async, &datum);
+                               comedi_buf_get(s, &datum);
                                pci230_ao_write_fifo(dev, datum,
                                                     CR_CHAN(cmd->chanlist[i]));
                        }
 
 
        chan = async->cur_chan;
        for (i = 0; i < n; i++) {
-               err &= comedi_buf_get(async, &d);
+               err &= comedi_buf_get(s, &d);
                if (err == 0)
                        break;
 
                        packed_data = d & 0xffff;
                        /* 6711 only has 16 bit wide ao fifo */
                        if (board->reg_type != ni_reg_6711) {
-                               err &= comedi_buf_get(async, &d);
+                               err &= comedi_buf_get(s, &d);
                                if (err == 0)
                                        break;
                                chan++;
 
                        unsigned int chan = devpriv->ao_chanlist[i];
                        unsigned short val;
 
-                       ret = comedi_buf_get(s->async, &val);
+                       ret = comedi_buf_get(s, &val);
                        if (ret < 0) {
                                dev_err(dev->class_dev, "buffer underflow\n");
                                s->async->events |= (COMEDI_CB_EOA |
 
                        unsigned int chan = devpriv->ao_chanlist[i];
                        unsigned short val;
 
-                       ret = comedi_buf_get(s->async, &val);
+                       ret = comedi_buf_get(s, &val);
                        if (ret < 0) {
                                dev_err(dev->class_dev, "buffer underflow\n");
                                s->async->events |= (COMEDI_CB_EOA |