static int dma_hw_submit_block(void *data, struct iio_dma_buffer_block *block) { struct iio_dev *indio_dev = data; int direction = DMA_TO_DEVICE; if (indio_dev->direction == IIO_DEVICE_DIRECTION_IN) { direction = DMA_FROM_DEVICE; block->block.bytes_used = block->block.size; } return iio_dmaengine_buffer_submit_block(block, direction); }
static int axiadc_hw_submit_block(void *data, struct iio_dma_buffer_block *block) { struct iio_dev *indio_dev = data; struct axiadc_state *st = iio_priv(indio_dev); block->block.bytes_used = block->block.size; iio_dmaengine_buffer_submit_block(block, DMA_FROM_DEVICE); axiadc_write(st, ADI_REG_STATUS, ~0); axiadc_write(st, ADI_REG_DMA_STATUS, ~0); if (!st->has_fifo_interface) { axiadc_write(st, ADI_REG_DMA_CNTRL, 0); axiadc_write(st, ADI_REG_DMA_COUNT, block->block.bytes_used); axiadc_write(st, ADI_REG_DMA_CNTRL, ADI_DMA_START | 2); } return 0; }