This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

OMAP-L138 ARM Linux SPI DMA problem

Other Parts Discussed in Thread: OMAP-L138

Hi All,

To give some background, we are using SPI on the OMAP ( master ) to retrieve data from another TI controller (slave). Now, everything is functional, the slave controller fills its FIFO ( 4 16bit values ) and on the OMAP we are able to retrieve and store them using the DMA ( using the ioctl ). However, since the FIFO is only 4 bytes deep, the DMA is virtually useless as it is consuming 40+ % of our CPU to retrieve large buffers from the slave. Therefore, we are wondering if there is a way to configure the DMA to retrieve the entire buffer from the slave controller instead of only acquiring 4 byte chunks. 

We are running the OMAP-L138 with Linux ( 2.6.37 ).

Thanks,

Arya B.

  • To add more detail, we also attempted turning off the FIFO on the slave device, however, it seems there is a sync issue with the DMA and the slave controller. For example, when passing a rx/tx buffer of 16 bytes (16bits) the DMA only retrieves a single value ( or 4 if we have FIFO )  and garbage data for the rest. 

    Therefore, we were wondering if there is a way to pass the DMA buffer size of N > 4, and expect it to handle the necessary SPI coms with the slave.

    if anyone could shine some light on this we would appreciated it.

    Arya B.

  • Can someone please point us in the right direction ?

    Thank you,

    Arya B.