Hi Lars, Thanks a lot for your inputs. Actually the queues are descriptor queues only. Each queue element contains pointer to the actual address (AXI or PCI) and other metadata associated with the transfer like interrupt and other attributes etc. Thanks, Mayuresh. On Fri, Jan 2, 2015 at 6:11 PM, Mayuresh Chitale <mchitale@xxxxxxx> wrote: > Hi Lars, > > Thanks a lot for your inputs. > > Actually the queues are descriptor queues only. Each queue element contains > pointer to the actual address (AXI or PCI) and other metadata associated > with the transfer like interrupt and other attributes etc. > > Thanks, > Mayuresh. > > On Friday, January 2, 2015, Lars-Peter Clausen <lars@xxxxxxxxxx> wrote: >> >> On 01/02/2015 12:31 PM, Mayuresh Chitale wrote: >>> >>> The DMA engine is actually a part of a PCI root complex and uses >>> memory mapped FIFOs for both sides i.e AXI and PCI and we need to >>> program memory mapped queues for both AXI side and PCI side. Its >>> possible that there could be multiple elements from AXI side that need >>> to be transferred to multiple elements to PCI side or vice-versa >>> provided that the total length on both sides is equal. I see there is >>> the device_prep_dma_sg api but it appears to me that is only intended >>> to be used for async operations. Is that correct? >> >> >> It's probably the closest to what you want. But it is for copying from >> memory region to memory region so the addresses will be incremented. But if >> I understand you correctly in your case you have memory mapped FIFOs so a >> fixed addresses. I think you'll have to extend the dmaengine API to support >> this kind of interleaved FIFO copy. >> >>> >>> On Fri, Jan 2, 2015 at 4:51 PM, Lars-Peter Clausen <lars@xxxxxxxxxx> >>> wrote: >>>> >>>> On 01/02/2015 12:09 PM, Mayuresh Chitale wrote: >>>>> >>>>> >>>>> Yes. That is correct. >>>> >>>> >>>> >>>> Ok, but please explain in detail what exactly your use case is for this >>>> for >>>> slave-device DMA. For a device you usually have either a dedicated DMA >>>> port >>>> to which the DMA controller is directly connected or a memory mapped >>>> FIFO. >>>> So there really is only one source or destination when reading from a >>>> device >>>> or writing to a device. >>>> >>>> >>>>> >>>>> Thanks, >>>>> Mayuresh. >>>>> >>>>> On Fri, Jan 2, 2015 at 4:39 PM, Lars-Peter Clausen <lars@xxxxxxxxxx> >>>>> wrote: >>>>>> >>>>>> >>>>>> On 01/02/2015 12:03 PM, Mayuresh Chitale wrote: >>>>>>> >>>>>>> >>>>>>> >>>>>>> Hi, >>>>>>> >>>>>>> I am working on a slave dma driver that supports scatter-gather >>>>>>> operation. However looking at APIs in dmaengine.h I see that the >>>>>>> device_prep_slave_sg supports only many to one transfer. Is there any >>>>>>> API that can be used to support many to many transfers for slave dma? >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> What do you mean by many to many? Many sources to many destinations? >>>>>> >>>>>> - Lars >>>>>> >>>> >> > -- 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