In one of my projects I interface with subsystems using a spibus, which performs really bad. If I look at the spidev driver, this thing uses a spinlock (busy polling) while performing the datatransfer and thereby blocking the kernel.
Is there are any alternative? E.g.
A better spidriver in the kernel (non-blocking, irq based)
A spidriver in de PRUSS
Currently, I connect to at most 20 devices using SPI, but the performance is disappointing.
From each of the devices I read 13 bytes of data, in total 2080 bits, which -theoretically- takes with a bus frequency of 30 kHz about 69 ms or ~7% CPU.
In practice about 10% CPU.