• Daniel Vetter's avatar
    spi: pxa2xx: Set controller->max_transfer_size in dma mode · b2662a16
    Daniel Vetter authored
    In DMA mode we have a maximum transfer size, past that the driver
    falls back to PIO (see the check at the top of pxa2xx_spi_transfer_one).
    Falling back to PIO for big transfers defeats the point of a dma engine,
    hence set the max transfer size to inform spi clients that they need
    to do something smarter.
    
    This was uncovered by the drm_mipi_dbi spi panel code, which does
    large spi transfers, but stopped splitting them after:
    
    commit e143364b
    Author: Noralf Trønnes <noralf@tronnes.org>
    Date:   Fri Jul 19 17:59:10 2019 +0200
    
        drm/tinydrm: Remove tinydrm_spi_max_transfer_size()
    
    After this commit the code relied on the spi core to split transfers
    into max dma-able blocks, which also papered over the PIO fallback issue.
    
    Fix this by setting the overall max transfer size to the DMA limit,
    but only when the controller runs in DMA mode.
    
    Fixes: e143364b ("drm/tinydrm: Remove tinydrm_spi_max_transfer_size()")
    Cc: Sam Ravnborg <sam@ravnborg.org>
    Cc: Noralf Trønnes <noralf@tronnes.org>
    Cc: Andy Shevchenko <andriy.shevchenko@intel.com>
    Reported-and-tested-by: default avatarAndy Shevchenko <andriy.shevchenko@intel.com>
    Cc: Daniel Mack <daniel@zonque.org>
    Cc: Haojian Zhuang <haojian.zhuang@gmail.com>
    Cc: Robert Jarzmik <robert.jarzmik@free.fr>
    Cc: Mark Brown <broonie@kernel.org>
    Cc: linux-arm-kernel@lists.infradead.org
    Cc: linux-spi@vger.kernel.org
    Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    Link: https://lore.kernel.org/r/20191017064426.30814-1-daniel.vetter@ffwll.chSigned-off-by: default avatarMark Brown <broonie@kernel.org>
    b2662a16
spi-pxa2xx.c 50.8 KB