• Martin Sperl's avatar
    spi: core: allow defining time that cs is deasserted · 0ff2de8b
    Martin Sperl authored
    For some SPI devices that support speed_hz > 1MHz the default 10 us delay
    when cs_change = 1 is typically way to long and may result in poor spi bus
    utilization.
    
    This patch makes it possible to control the delay at micro or nano second
    resolution on a per spi_transfer basis. It even allows an "as fast as
    possible" mode with:
        xfer.cs_change_delay_unit = SPI_DELAY_UNIT_NSECS;
        xfer.cs_change_delay = 0;
    
    The delay code is shared between delay_usecs and cs_change_delay for
    consistency and reuse, so in the future this change_delay_unit could also
    apply to delay_usec as well.
    
    Note that on slower SOCs/CPU actually reaching ns deasserts on cs is not
    realistic as the gpio overhead alone (without any delays added ) may
    already leave cs deasserted for more than 1us - at least on a raspberry pi.
    But at the very least this way we can keep it as short as possible.
    Signed-off-by: default avatarMartin Sperl <kernel@martin.sperl.org>
    Signed-off-by: default avatarMark Brown <broonie@kernel.org>
    0ff2de8b
spi.c 101 KB