• Vladimir Oltean's avatar
    net: dsa: sja1105: the PTP_CLK extts input reacts on both edges · 0ba83aa0
    Vladimir Oltean authored
    It looks like the sja1105 external timestamping input is not as generic
    as we thought. When fed a signal with 50% duty cycle, it will timestamp
    both the rising and the falling edge. When fed a short pulse signal,
    only the timestamp of the falling edge will be seen in the PTPSYNCTS
    register, because that of the rising edge had been overwritten. So the
    moral is: don't feed it short pulse inputs.
    
    Luckily this is not a complete deal breaker, as we can still work with
    1 Hz square waves. But the problem is that the extts polling period was
    not dimensioned enough for this input signal. If we leave the period at
    half a second, we risk losing timestamps due to jitter in the measuring
    process. So we need to increase it to 4 times per second.
    
    Also, the very least we can do to inform the user is to deny any other
    flags combination than with PTP_RISING_EDGE and PTP_FALLING_EDGE both
    set.
    
    Fixes: 747e5eb3 ("net: dsa: sja1105: configure the PTP_CLK pin as EXT_TS or PER_OUT")
    Signed-off-by: default avatarVladimir Oltean <vladimir.oltean@nxp.com>
    Acked-by: default avatarRichard Cochran <richardcochran@gmail.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    0ba83aa0
sja1105_ptp.c 24.6 KB