- /* we use EOS, so adapt DMA buffer to one scan */
- if (devpriv->ai_eos) {
- desc0->size = comedi_bytes_per_scan(s);
- desc1->size = comedi_bytes_per_scan(s);
- devpriv->dma_runs_to_end = 1;
- } else {
- desc0->size = desc0->maxsize;
- desc1->size = desc1->maxsize;
- if (s->async->prealloc_bufsz < desc0->maxsize)
- desc0->size = s->async->prealloc_bufsz;
- if (s->async->prealloc_bufsz < desc1->maxsize)
- desc1->size = s->async->prealloc_bufsz;
- if (cmd->stop_src == TRIG_NONE) {
- devpriv->dma_runs_to_end = 1;
- } else {
- /* how many samples we must transfer? */
- bytes = cmd->stop_arg * comedi_bytes_per_scan(s);
-
- /* how many DMA pages we must fill */
- devpriv->dma_runs_to_end = bytes / desc0->size;
-
- /* on last dma transfer must be moved */
- devpriv->last_dma_run = bytes % desc0->size;
- if (devpriv->dma_runs_to_end == 0)
- desc0->size = devpriv->last_dma_run;
- devpriv->dma_runs_to_end--;
- }
- }
- if (desc0->size > desc0->maxsize) {
- desc0->size = desc0->maxsize;
- devpriv->ai_eos = 0;
- }
- if (desc1->size > desc1->maxsize) {
- desc1->size = desc1->maxsize;
- devpriv->ai_eos = 0;
- }