• Ian Lepore's avatar
    Restore uart PPS signal capture polarity to its historical norm, and add an · fdfbb3f5
    Ian Lepore authored
    option to invert the polarity in software. Also add an option to capture
    very narrow pulses by using the hardware's MSR delta-bit capability of
    latching line state changes.
    This effectively reverts the mistake I made in r286595 which was based on
    empirical measurements made on hardware using TTL-level signaling, in which
    the logic levels are inverted from RS-232. Thus, this re-syncs the polarity
    with the requirements of RFC 2783, which is writen in terms of RS-232
    Narrow-pulse mode uses the ability of most ns8250 and similar chips to
    provide a delta indication in the modem status register. The hardware is
    able to notice and latch the change when the pulse width is shorter than
    interrupt latency, which results in the signal no longer being asserted by
    time the interrupt service code runs. When running in this mode we get
    notified only that "a pulse happened" so the driver synthesizes both an
    ASSERT and a CLEAR event (with the same timestamp for each). When the pulse
    width is about equal to the interrupt latency the driver may intermittantly
    see both edges of the pulse. To prevent generating spurious events, the
    driver implements a half-second lockout period after generating an event
    before it will generate another.
    Differential Revision:	https://reviews.freebsd.org/D4477