• Vignesh R's avatar
    spi: ti-qspi: use 128 bit transfer mode where possible · f682c4ff
    Vignesh R authored
    TI QSPI has four 32 bit data regsiters which can be used to transfer 16
    bytes of data at once. The register group QSPI_SPI_DATA_REG_3,
    QSPI_SPI_DATA_REG_2, QSPI_SPI_DATA_REG_1 and QSPI_SPI_DATA_REG is
    treated as a single 128-bit word for shifting data in and out. The bit
    at QSPI_SPI_DATA_REG_3[31] position is the first bit to be shifted out
    in case of 128 bit transfer mode. Therefore the first byte to be written
    to flash should be at QSPI_SPI_DATA_REG_3[31-25] position.
    Instead of writing 1 byte at a time when interacting with spi-nor flash,
    make use of all the four registers so that 16 bytes can be transferred
    in one go. This reduces number of register writes and Word Complete
    interrupts for a given transfer message size, thereby increasing the
    write performance.
    
    Without this patch the raw flash write speed is ~100KB/s, with this
    patch the write speed increases to ~400 kB/s on DRA74 EVM.
    Signed-off-by: default avatarVignesh R <vigneshr@ti.com>
    Signed-off-by: default avatarMark Brown <broonie@kernel.org>
    f682c4ff
spi-ti-qspi.c 14.7 KB