> For the RK3399-Q7 we recommend storing SPL and u-boot.itb in the > on-module 32MBit (and sometimes even larger, if requested as part of a > configure-to-order configuration) SPI-NOR flash that is clocked for a > bitrate of 49.5MBit/s and connected in a single-IO configuration (the > RK3399 only supports single-IO for SPI). > > Unfortunately, the existing SPI driver is excruciatingly slow at > reading out large chunks of data (in fact it is just as slow for small > chunks of data, but the overheads of the driver-framework make it less > noticeable): before this change, the throughput on a 4MB read from > SPI-NOR is 8.47MBit/s which equates a 17.11% bus-utilisation. > > To improve on this, this commit adds an optimised receive-only > transfer (i.e.: out == NULL) handler that hooks into the main transfer > function and processes data in 16bit frames (utilising the full with > of each FIFO element). As of now, the receive-only handler requires > the in-buffer to be 16bit aligned. Any lingering data (i.e. either if > the in-buffer was not 16-bit aligned or if an odd number of bytes are > to be received) will be handled by the original 8bit reader/wirter. > > Given that the SPI controller's documentation does not guarantuee any > interlocking between the RXFIFO and the master SCLK, the transfer loop > will be restarted for each chunk of 32 frames (i.e. 64 bytes). > > With this new receive-only transfer handler, the throughput for a 4MB > read increases to 36.28MBit/s (i.e. 73.29% bus-utilisation): this is a > 4x improvement over the baseline. > > Signed-off-by: Philipp Tomsich <philipp.toms...@theobroma-systems.com> > Reported-by: Klaus Goger <klaus.go...@theobroma-systems.com> > > Series-Cc: Klaus Goger <klaus.go...@theobroma-systems.com> > Series-Cc: Christoph Muellner <christoph.muell...@theobroma-systems.com> > --- > > drivers/spi/rk_spi.c | 89 > +++++++++++++++++++++++++++++++++++++++++++++++++++- > 1 file changed, 88 insertions(+), 1 deletion(-) >
Applied to u-boot-rockchip, thanks! _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot