diff options
author | H Hartley Sweeten | 2014-09-09 22:05:40 +0200 |
---|---|---|
committer | Greg Kroah-Hartman | 2014-09-11 23:34:24 +0200 |
commit | f9d208d3eaffcf4e014592fa3a004e8c3f4a4a13 (patch) | |
tree | 60ccdd98c488b75ab283c027e686a73742b8d28c /drivers/staging/comedi | |
parent | staging: comedi: adl_pci9118: change type of pci9118_dmabuf 'virt' member (diff) | |
download | kernel-qcow2-linux-f9d208d3eaffcf4e014592fa3a004e8c3f4a4a13.tar.gz kernel-qcow2-linux-f9d208d3eaffcf4e014592fa3a004e8c3f4a4a13.tar.xz kernel-qcow2-linux-f9d208d3eaffcf4e014592fa3a004e8c3f4a4a13.zip |
staging: comedi: adl_pci9118: fix interrupt_pci9118_ai_mode4_switch()
This function modifies the analog input acquistion programming after the first
DMA cycle to continue a "mode4" acqusition. Part of this programs timer 0 based
on the hardware address of the next buffer. When double buffering is not used
for DMA the "next" buffer is always the first, and only, buffer.
Add a parameter to this function to indicate what the "next" buffer actually is
and fix the callers.
Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com>
Reviewed-by: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/staging/comedi')
-rw-r--r-- | drivers/staging/comedi/drivers/adl_pci9118.c | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/drivers/staging/comedi/drivers/adl_pci9118.c b/drivers/staging/comedi/drivers/adl_pci9118.c index 3e3405ccdede..7781d8786372 100644 --- a/drivers/staging/comedi/drivers/adl_pci9118.c +++ b/drivers/staging/comedi/drivers/adl_pci9118.c @@ -449,12 +449,11 @@ static int setup_channel_list(struct comedi_device *dev, return 1; /* we can serve this with scan logic */ } -static void interrupt_pci9118_ai_mode4_switch(struct comedi_device *dev) +static void interrupt_pci9118_ai_mode4_switch(struct comedi_device *dev, + unsigned int next_buf) { struct pci9118_private *devpriv = dev->private; - struct pci9118_dmabuf *dmabuf; - - dmabuf = &devpriv->dmabuf[1 - devpriv->dma_actbuf]; + struct pci9118_dmabuf *dmabuf = &devpriv->dmabuf[next_buf]; devpriv->ai_cfg = PCI9118_AI_CFG_PDTRG | PCI9118_AI_CFG_PETRG | PCI9118_AI_CFG_AM; @@ -700,7 +699,7 @@ static void interrupt_pci9118_ai_dma(struct comedi_device *dev, next_dma_buf = 1 - devpriv->dma_actbuf; pci9118_amcc_setup_dma(dev, next_dma_buf); if (devpriv->ai_do == 4) - interrupt_pci9118_ai_mode4_switch(dev); + interrupt_pci9118_ai_mode4_switch(dev, next_dma_buf); } if (samplesinbuf) { @@ -724,7 +723,7 @@ static void interrupt_pci9118_ai_dma(struct comedi_device *dev, /* restart DMA if is not used double buffering */ pci9118_amcc_setup_dma(dev, 0); if (devpriv->ai_do == 4) - interrupt_pci9118_ai_mode4_switch(dev); + interrupt_pci9118_ai_mode4_switch(dev, 0); } } |