• Serge Semin's avatar
    spi: dw: Add poll-based SPI transfers support · 14345c33
    Serge Semin authored
    A functionality of the poll-based transfer has been removed by
    commit 1ceb09717e98 ("spi: dw: remove cs_control and poll_mode members
    from chip_data") with a justification that "there is no user of one
    anymore". It turns out one of our DW APB SSI core is synthesized with no
    IRQ line attached and the only possible way of using it is to implement a
    poll-based SPI transfer procedure. So we have to get the removed
    functionality back, but with some alterations described below.
    
    First of all the poll-based transfer is activated only if the DW SPI
    controller doesn't have an IRQ line attached and the Linux IRQ number is
    initialized with the IRQ_NOTCONNECTED value. Secondly the transfer
    procedure is now executed with a delay performed between writer and reader
    methods. The delay value is calculated based on the number of data words
    expected to be received on the current iteration. Finally the errors
    status is checked on each iteration.
    Signed-off-by: default avatarSerge Semin <Sergey.Semin@baikalelectronics.ru>
    Link: https://lore.kernel.org/r/20201007235511.4935-20-Sergey.Semin@baikalelectronics.ruSigned-off-by: default avatarMark Brown <broonie@kernel.org>
    14345c33
spi-dw-core.c 25.1 KB