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.

AM3358: Query regarding implementation of SPI master with DMA on Processor SDK Linux RT

Part Number: AM3358

I'm doing SW development on an AM335x based development board (BeagleBone Black). The AM335x in addition to doing some on-board processing does the following:

- Retrieve high throughput data over SPI (McSPI 1)

- Output some datastreams  as I2S (over McASP)

- Act as a TCP server over ethernet.

A rudimentary form of this was achieved using the deprecated StarterWare SDK. The lack of multi-threading, online support and documentation was affecting achievable performance and warrants a shift towards another SDK. 

Since I'm new to embedded Linux development, I have a few noob queries related to implementing SPI communication using the Proccessor-SDK-Linux (RT).

For my usecase, the AM335X acts as an SPI master and needs to retrieve a few thousand samples ( b/w 1024 and 4096 samples, 32-bit wide) every 250 ms. The SPI slave has on-board buffers so the non-deterministic time delay involved in the SPI transaction being initiated fthrough Linux from the AM335x isn't an issue. I wish to use the DMA to complete the transaction and retrieval of data.

The SDK doc states that a McSPI driver with support for DMA in master mode is provided

Given this do I only need to update the DTS in order to add DMA support similar to procedure outlined for the AM62x and AM437x? Or do I need to reconfigure and recompile the kernel as well, in order to enable the McSPI driver? (I'm currently using the default pre-generated compiled OS image that TI provides for kernel version 5.10.100-rt62)

After these steps, do I use the userspace spidev driver, with the assumption that the appropriate McSPI driver with DMA enabled is being used in kernel space? Or is there some other driver and API?