• Brian Niebuhr's avatar
    spi: davinci: always start transmit DMA · c29e3c60
    Brian Niebuhr authored
    Due to the full duplex nature of the SPI bus, the SPI master
    on DaVinci needs transmit to be active even if the tranfer is
    only meant to collect receive data.
    
    The current code achieves this by using a temporary zeroed buffer
    to provide DMA data in case the transfer does not have a transmit
    buffer provided.
    
    However, the transmit DMA is started only if transmit buffer is
    provided rendering the temporary buffer unused. Instead the code
    relies on a write to SPIDAT1 register to trigger transmit operation.
    This however only sends two bytes of data.
    
    Fix this by starting transmit DMA always.
    
    This changes exposes a bug on DM355 where the CSHOLD bit in
    SPIDAT1 needs to be written to in between transfers. Handle
    that by introducing a "cshold_bug" platform data which is
    set to true for DM355.
    Signed-off-by: default avatarBrian Niebuhr <bniebuhr@efjohnson.com>
    Tested-By: default avatarMichael Williamson <michael.williamson@criticallink.com>
    Signed-off-by: default avatarSekhar Nori <nsekhar@ti.com>
    c29e3c60
davinci_spi.c 29.2 KB