• Serge Semin's avatar
    spi: dw: Simplify the SPI bus speed config procedure · c449ad74
    Serge Semin authored
    The code currently responsible for the SPI communication speed setting up
    is a bit messy. Most likely for some historical reason the bus frequency
    is saved in the peripheral chip private data. It's pointless now since the
    custom communication speed is a SPI-transfer-specific thing and only if
    there is no SPI transfer data specified (like during the SPI memory
    operations) it can be taken from the SPI device structure. But even in the
    later case there is no point in having the clock divider and the SPI bus
    frequency saved in the chip data, because the controller can be used for
    both SPI-transfer-based and SPI-transfer-less communications. From
    software point of view keeping the current clock divider in an SPI-device
    specific storage may give a small performance gain (to avoid sometimes a
    round-up division), but in comparison to the total SPI transfer time it
    just doesn't worth saving a few CPU cycles in comparison to the total SPI
    transfer time while having the harder to read code. The only optimization,
    which could worth preserving in the code is to avoid unnecessary DW SPI
    controller registers update if it's possible. So to speak let's simplify
    the SPI communication speed update procedure by removing the clock-related
    fields from the peripheral chip data and update the DW SPI clock divider
    only if it's really changed. The later change is reached by keeping the
    effective SPI bus speed in the internal DW SPI private data.
    Signed-off-by: default avatarSerge Semin <Sergey.Semin@baikalelectronics.ru>
    Link: https://lore.kernel.org/r/20201007235511.4935-6-Sergey.Semin@baikalelectronics.ruSigned-off-by: default avatarMark Brown <broonie@kernel.org>
    c449ad74
spi-dw-core.c 14.2 KB