Post Go back to editing

SHARC Linkport driver with DMA

Thread Summary

The user is trying to configure a DMA operation using a TCB list in CCES 2.10.1 with the LinkPort device driver, aiming to receive a single interrupt at the end of the list. The current driver design requires an interrupt for each TCB, which prevents the desired operation. The development team will consider this use case for future updates, but for now, the user should enable interrupts for all TCBs.
AI Generated Content

I am trying to use the linkport device driver in CCES 2.10.1 to configure a DMA operation using a TCB list. There are 5 TCBs in the list.

I configure the list so that that first 4 TCBs do _not_ request an interrupt when the XCNT is complete, and I configure the last TCB so it _does_ request an interrupt. What I am trying to do is let the DMA handle the entire list without any core involvement and then get a single interrupt when the entire list is complete. I think the hardware supports this style of operation but it appears the device driver requires an interrupt during every TCB.

If I only set the configuration for the last TCB to ENUM_DMA_CFG_XCNT_INT then I get one interrupt the first time I call adi_linkport_DMATransfer(..) but the next time I call the operation does not succeed. If I set ENUM_DMA_CFG_XCNT in every TCB everything works great but an interrupt is generated for every TCB in the list, and I don't need or want that.

My call is adi_linkport_DMATransfer(hDevice, (ADI_PDMA_DESC_LIST*) DescList, 5, ADI_PDMA_DESCRIPTOR_LIST);

Has anyone succeed with using the linkport driver with TCB list where only the last TCB interrupts? Does anyone in ADI know the driver well enough to say if this is possible. I have tried reading the driver code but I may be missing something.

Thread Notes