> First I added a new dcd_change() ldisc method which can be used as
This looks good.
Where are you calling it from, and how ?
Not all tty devices have an IRQ (I suspect those which do not are useless
for PPS reporting however).
Do you get decent reports if you change the tty driver to do
[blah blah lots of serial port I/O code]
if (dcd ^ old_dcd)
ld->dcd_change(tty, dcd, &ts);