• Rafał Miłecki's avatar
    spi: bcm-qspi: switch back to reading flash using smaller chunks · 940ec770
    Rafał Miłecki authored
    Fixing/optimizing bcm_qspi_bspi_read() performance introduced two
    changes:
    1) It added a loop to read all requested data using multiple BSPI ops.
    2) It bumped max size of a single BSPI block request from 256 to 512 B.
    
    The later change resulted in occasional BSPI timeouts causing a
    regression.
    
    For some unknown reason hardware doesn't always handle reads as expected
    when using 512 B chunks. In such cases it may happen that BSPI returns
    amount of requested bytes without the last 1-3 ones. It provides the
    remaining bytes later but doesn't raise an interrupt until another LR
    start.
    
    Switching back to 256 B reads fixes that problem and regression.
    
    Fixes: 345309fa ("spi: bcm-qspi: Fix bcm_qspi_bspi_read() performance")
    Signed-off-by: default avatarRafał Miłecki <rafal@milecki.pl>
    Signed-off-by: default avatarMark Brown <broonie@kernel.org>
    Cc: stable@vger.kernel.org
    940ec770
spi-bcm-qspi.c 36.3 KB