Re: [PATCH 2/2] dmaengine: Add support for the Analog Devices AXI-DMAC DMA controller

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 08/19/2015 06:32 PM, Vinod Koul wrote:
> On Tue, Jul 28, 2015 at 11:38:06AM +0200, Lars-Peter Clausen wrote:
>> +	active = axi_dmac_active_desc(chan);
>> +	if (!active)
>> +		return;
>> +
>> +	if (active->cyclic) {
>> +		vchan_cyclic_callback(&active->vdesc);
>> +	} else {
>> +		while (active &&
> do you need to check this, you did that few lines back?

It gets overwritten in the loop.

[...]
> 
>> +static struct dma_async_tx_descriptor *axi_dmac_prep_slave_sg(
>> +	struct dma_chan *c, struct scatterlist *sgl,
>> +	unsigned int sg_len, enum dma_transfer_direction direction,
>> +	unsigned long flags, void *context)
>> +{
>> +	struct axi_dmac_chan *chan = to_axi_dmac_chan(c);
>> +	struct axi_dmac_desc *desc;
>> +	struct scatterlist *sg;
>> +	unsigned int i;
>> +
>> +	if (direction != chan->direction)
> 
> are the channels unidirectional

yes.

> 
>> +		return NULL;
>> +
>> +	desc = axi_dmac_alloc_desc(sg_len);
>> +	if (!desc)
>> +		return NULL;
>> +
>> +	for_each_sg(sgl, sg, sg_len, i) {
>> +		if (!axi_dmac_check_addr(chan, sg_dma_address(sg)) ||
>> +		    !axi_dmac_check_len(chan, sg_dma_len(sg))) {
>> +			kfree(desc);
>> +			return NULL;
>> +		}
>> +
>> +		if (direction == DMA_DEV_TO_MEM)
>> +			desc->sg[i].dest_addr = sg_dma_address(sg);
>> +		else
>> +			desc->sg[i].src_addr = sg_dma_address(sg);
> where is device side programming ?

in the start_transfer() function.

> 
>> +
>> +	if (axi_dmac_dest_is_mem(chan) && axi_dmac_src_is_mem(chan))
>> +		chan->direction = DMA_MEM_TO_MEM;
>> +	else if (!axi_dmac_dest_is_mem(chan) && axi_dmac_src_is_mem(chan))
>> +		chan->direction = DMA_MEM_TO_DEV;
>> +	else if (axi_dmac_dest_is_mem(chan) && !axi_dmac_src_is_mem(chan))
>> +		chan->direction = DMA_DEV_TO_MEM;
>> +	else
>> +		chan->direction = DMA_DEV_TO_DEV;
> 
> ok this seems to answer my other question but is this something we are
> specifying in SW or capability of a channel?

That's a capability of the hardware.
--
To unsubscribe from this list: send the line "unsubscribe dmaengine" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Kernel]     [Linux ARM (vger)]     [Linux ARM MSM]     [Linux Omap]     [Linux Arm]     [Linux Tegra]     [Fedora ARM]     [Linux for Samsung SOC]     [eCos]     [Linux PCI]     [Linux Fastboot]     [Gcc Help]     [Git]     [DCCP]     [IETF Announce]     [Security]     [Linux MIPS]     [Yosemite Campsites]

  Powered by Linux