Tool/software: TI-RTOS
My application has some peripherals controlled by IPU/M4 cores running TI-RTOS and some by MPU/A15 cores running Linux. I want to use DMA transfers for these peripherals (UART, SPI) on the M4 side of the system. Looking through Linux kernel documentation (kernel_src/Documentation/devicetree/bindings/dma/ti-edma.txt) I see that there are several relevant device tree parameters:
- ti,edma-memcpy-channels which tells Linux what channels can be used for memcpy operations (if any)
- ti-edma-reserved-slot-ranges which tells Linux which PaRAM sets it canNOT use (i.e., which are reserved for IPU and DSP use)
- dmas which tells Linux which DMA channels to use for which peripherals
My understanding is that I'll need to tell Linux to NOT use certain channels and PaRAM sets so that there is no conflict between what the IPU is doing and what Linux is doing. That makes sense, and it seems like it's a pretty straightforward thing to do on the Linux side.
The problem is on the IPU side. I have no idea how I am supposed to know which channels and PaRAM sets the IPU drivers will use, nor do I know how I can have any influence on this and have not been able to find any relevant documentation about it. I tried stepping through a UART example on the IPU core with my debugger and it looks like the PaRAM sets to use are retrieved from an edma3DrvChBoundRes object based on channel number. I tried to track down how this object is set up, but couldn't find anything in the source code about it.
Can you please provide guidance on how I can determine IPU driver set up so that I can configure the Linux device tree correctly?
For reference, I'm using the libraries and drivers in the TI Processor SDK RTOS for AM57xx devices, version 4.02.00.09.