Spidev performance

Good morning,

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.

  1. A better spidriver in the kernel (non-blocking, irq based)

  2. 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.