|
@@ -387,32 +387,6 @@ static int labpc_ai_insn_read(struct comedi_device *dev,
|
|
|
return insn->n;
|
|
|
}
|
|
|
|
|
|
-#ifdef CONFIG_ISA_DMA_API
|
|
|
-/* utility function that suggests a dma transfer size in bytes */
|
|
|
-static unsigned int labpc_suggest_transfer_size(const struct comedi_cmd *cmd)
|
|
|
-{
|
|
|
- unsigned int size;
|
|
|
- unsigned int freq;
|
|
|
-
|
|
|
- if (cmd->convert_src == TRIG_TIMER)
|
|
|
- freq = 1000000000 / cmd->convert_arg;
|
|
|
- /* return some default value */
|
|
|
- else
|
|
|
- freq = 0xffffffff;
|
|
|
-
|
|
|
- /* make buffer fill in no more than 1/3 second */
|
|
|
- size = (freq / 3) * sample_size;
|
|
|
-
|
|
|
- /* set a minimum and maximum size allowed */
|
|
|
- if (size > dma_buffer_size)
|
|
|
- size = dma_buffer_size - dma_buffer_size % sample_size;
|
|
|
- else if (size < sample_size)
|
|
|
- size = sample_size;
|
|
|
-
|
|
|
- return size;
|
|
|
-}
|
|
|
-#endif
|
|
|
-
|
|
|
static bool labpc_use_continuous_mode(const struct comedi_cmd *cmd,
|
|
|
enum scan_mode mode)
|
|
|
{
|
|
@@ -883,31 +857,8 @@ static int labpc_ai_cmd(struct comedi_device *dev, struct comedi_subdevice *s)
|
|
|
|
|
|
labpc_clear_adc_fifo(dev);
|
|
|
|
|
|
-#ifdef CONFIG_ISA_DMA_API
|
|
|
- /* set up dma transfer */
|
|
|
- if (xfer == isa_dma_transfer) {
|
|
|
- unsigned long irq_flags;
|
|
|
-
|
|
|
- irq_flags = claim_dma_lock();
|
|
|
- disable_dma(devpriv->dma_chan);
|
|
|
- /* clear flip-flop to make sure 2-byte registers for
|
|
|
- * count and address get set correctly */
|
|
|
- clear_dma_ff(devpriv->dma_chan);
|
|
|
- set_dma_addr(devpriv->dma_chan, devpriv->dma_addr);
|
|
|
- /* set appropriate size of transfer */
|
|
|
- devpriv->dma_transfer_size = labpc_suggest_transfer_size(cmd);
|
|
|
- if (cmd->stop_src == TRIG_COUNT &&
|
|
|
- devpriv->count * sample_size < devpriv->dma_transfer_size) {
|
|
|
- devpriv->dma_transfer_size =
|
|
|
- devpriv->count * sample_size;
|
|
|
- }
|
|
|
- set_dma_count(devpriv->dma_chan, devpriv->dma_transfer_size);
|
|
|
- enable_dma(devpriv->dma_chan);
|
|
|
- release_dma_lock(irq_flags);
|
|
|
- /* enable board's dma */
|
|
|
- devpriv->cmd3 |= (CMD3_DMAEN | CMD3_DMATCINTEN);
|
|
|
- }
|
|
|
-#endif
|
|
|
+ if (xfer == isa_dma_transfer)
|
|
|
+ labpc_setup_dma(dev, s);
|
|
|
|
|
|
/* enable error interrupts */
|
|
|
devpriv->cmd3 |= CMD3_ERRINTEN;
|