• Vladimir Oltean's avatar
    spi: spi-fsl-dspi: Implement the PTP system timestamping for TCFQ mode · d6b71dfa
    Vladimir Oltean authored
    In this mode, the DSPI controller uses PIO to transfer word by word. In
    comparison, in EOQ mode the 4-word deep FIFO is being used, hence the
    current logic will need some adaptation for which I do not have the
    hardware (Coldfire) to test. It is not clear what is the timing of DMA
    transfers and whether timestamping in the driver brings any overall
    performance increase compared to regular timestamping done in the core.
    
    Short phc2sys summary after 58 minutes of running on LS1021A-TSN with
    interrupts disabled during the critical section:
    
      offset: min -26251 max 16416 mean -21.8672 std dev 863.416
      delay: min 4720 max 57280 mean 5182.49 std dev 1607.19
      lost servo lock 3 times
    
    Summary of the same phc2sys service running for 120 minutes with
    interrupts disabled:
    
      offset: min -378 max 381 mean -0.0083089 std dev 101.495
      delay: min 4720 max 5920 mean 5129.38 std dev 154.899
      lost servo lock 0 times
    
    The minimum delay (pre to post time) in nanoseconds is the same, but the
    maximum delay is quite a bit higher, due to interrupts getting sometimes
    executed and interfering with the measurement. Hence set disable_irqs
    whenever possible (aka when the driver runs in poll mode - otherwise it
    would be a contradiction in terms).
    Signed-off-by: default avatarVladimir Oltean <olteanv@gmail.com>
    Link: https://lore.kernel.org/r/20190905010114.26718-4-olteanv@gmail.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
    d6b71dfa
spi-fsl-dspi.c 30.1 KB