From 28e8c8984c95202cf09ee3d27becf4d1494350ee Mon Sep 17 00:00:00 2001 From: H Hartley Sweeten Date: Wed, 22 Oct 2014 15:36:34 -0700 Subject: [PATCH] staging: comedi: adl_pci9118: use comedi_buf_write_samples() Use comedi_buf_write_samples() to add the samples to the async buffer. The number of bytes to add is determined automatically based on the number of samples and the bytes_per_sample(). Change the return type of move_block_from_dma() to void and remove the unnecessary check of the return value of comedi_buf_write_samples(). The callers don't check the return and it's really not necessary. If comedi_buf_write_samples() fails to allocate enough space in the async buffer to add all the samples it sets the COMEDI_CB_OVERFLOW event. This will cause the async command to (*cancel) when the events are handled. Signed-off-by: H Hartley Sweeten Reviewed-by: Ian Abbott Signed-off-by: Greg Kroah-Hartman --- drivers/staging/comedi/drivers/adl_pci9118.c | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/drivers/staging/comedi/drivers/adl_pci9118.c b/drivers/staging/comedi/drivers/adl_pci9118.c index 7b1720f..cb2c485 100644 --- a/drivers/staging/comedi/drivers/adl_pci9118.c +++ b/drivers/staging/comedi/drivers/adl_pci9118.c @@ -472,26 +472,21 @@ static unsigned int defragment_dma_buffer(struct comedi_device *dev, return j; } -static int move_block_from_dma(struct comedi_device *dev, - struct comedi_subdevice *s, - unsigned short *dma_buffer, - unsigned int num_samples) +static void move_block_from_dma(struct comedi_device *dev, + struct comedi_subdevice *s, + unsigned short *dma_buffer, + unsigned int num_samples) { struct pci9118_private *devpriv = dev->private; struct comedi_cmd *cmd = &s->async->cmd; - unsigned int num_bytes; num_samples = defragment_dma_buffer(dev, s, dma_buffer, num_samples); devpriv->ai_act_scan += (s->async->cur_chan + num_samples) / cmd->scan_end_arg; s->async->cur_chan += num_samples; s->async->cur_chan %= cmd->scan_end_arg; - num_bytes = - cfc_write_array_to_buffer(s, dma_buffer, - num_samples * sizeof(short)); - if (num_bytes < num_samples * sizeof(short)) - return -1; - return 0; + + comedi_buf_write_samples(s, dma_buffer, num_samples); } static void pci9118_exttrg_enable(struct comedi_device *dev, bool enable) @@ -617,7 +612,7 @@ static void interrupt_pci9118_ai_onesample(struct comedi_device *dev, sampl = inl(dev->iobase + PCI9118_AI_FIFO_REG); - cfc_write_to_buffer(s, sampl); + comedi_buf_write_samples(s, &sampl, 1); s->async->cur_chan++; if (s->async->cur_chan >= cmd->scan_end_arg) { /* one scan done */ -- 2.7.4