Here's a first batch of improvements for the spi0 master on the Raspberry Pi. The meat of the series is in its last two patches: * Patch [6/7] allows DMA for transfer buffers starting at an offset not a multiple of 4. This overcomes a limitation affecting Ethernet drivers such as ks8851 which call netdev_alloc_skb_ip_align() to allocate deliberately unaligned receive buffers. * Patch [7/7] speeds up PIO transfers by not polling the RX FIFO when it is known to contain data, or the TX FIFO when it is known to have free space. The preceding patches fix rarely encountered bugs, remove obsolete code and add documentation. The series has been tested extensively on the "Revolution Pi" family of open source PLCs (https://revolution.kunbus.com/), but further testing would be welcome to raise the confidence. Thanks, Lukas Lukas Wunner (7): spi: bcm2835: Avoid finishing transfer prematurely in IRQ mode spi: bcm2835: Fix book-keeping of DMA termination spi: bcm2835: Fix race on DMA termination spi: bcm2835: Drop unused code for native Chip Select spi: bcm2835: Document struct bcm2835_spi spi: bcm2835: Overcome sglist entry length limitation spi: bcm2835: Speed up FIFO access if fill level is known drivers/spi/spi-bcm2835.c | 478 ++++++++++++++++++++++++++------------ 1 file changed, 334 insertions(+), 144 deletions(-) -- 2.19.1