• David Lechner's avatar
    spi: move split xfers for CS_WORD emulation · c8bec335
    David Lechner authored
    This moves splitting transfers for CS_WORD software emulation to the
    same place where we split transfers for controller-specific reasons.
    
    This fixes a few subtle bugs.
    
    The calculation for maxsize was wrong for bit sizes between 17 and 24.
    This is fixed by making use of spi_split_transfers_maxwords() which
    already has the correct calculation.
    
    Also, since this indirectly calls spi_res_alloc(), to avoid leaking
    resources, spi_finalize_current_message() would need to be called
    on all error paths in __spi_validate() and callers of __spi_validate()
    would need to do the same. This is fixed by moving the call to
    __spi_pump_transfer_message() where it is already splitting transfers
    for other reasons and correctly releases resources in the subsequent
    error paths.
    
    Fixes: cbaa62e0 ("spi: add software implementation for SPI_CS_WORD")
    Signed-off-by: default avatarDavid Lechner <dlechner@baylibre.com>
    Link: https://lore.kernel.org/r/20240126212358.3916280-2-dlechner@baylibre.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
    c8bec335
spi.c 129 KB