I finally took the time to look into this issue. I found the source of the mysterious factor of 2 that was introduced for
the patch. It's caused by the fact that the "Period" variable for TimerOutput is a fixed point number that is not decoded when TimerOutput is read as a complete structure... only when read from the direct accessor. That means the decoding must be done in the driver. Since the fixed point format is 24 bits with 25 integer bits, the data must be shifted by 1 bit position... the factor of two!
I've attached the final patch that went in for those who are curious.
-Joe