• Fabrizio Castro's avatar
    spi: rzv2m-csi: Add target mode support · a4f7ef6d
    Fabrizio Castro authored
    The CSI IP found inside the Renesas RZ/V2M SoC supports
    both SPI host and SPI target roles.
    
    When working in target mode, the CSI IP has the option
    of using its Slave Selection (SS) pin to enable TX and RX
    operations. Since the SPI target cannot control the clock,
    when working as target it's best not to stop operations
    during a transfer, as by doing so the IP will not send or
    receive data, regardless of clock and active level on pin SS.
    A side effect from not stopping operations is that the RX
    FIFO needs to be flushed, word by word, when RX data needs
    to be discarded.
    
    Finally, when in target mode timings are tighter, as missing a
    deadline translates to errors being thrown, resulting in
    aborting the transfer. In order to speed things up, we can
    avoid waiting for the TX FIFO to be empty, we can just wait
    for the RX FIFO to contain at least the number of words that
    we expect.
    
    Add target support to the currently existing CSI driver.
    Signed-off-by: default avatarFabrizio Castro <fabrizio.castro.jz@renesas.com>
    Link: https://lore.kernel.org/r/20230927162508.328736-3-fabrizio.castro.jz@renesas.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
    a4f7ef6d
spi-rzv2m-csi.c 17.8 KB