Пример #1
0
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);
}
Пример #2
0
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;
}