I looked at that for a while, but I didn't see anything obvious that could help. empeg_input.c accepts a range of 50us to 550us IR period. With a 20 MHz oscillator the PIC puts out a 500us period and at 40 MHz it's 250us, still well within range.

I can't tell specifically where it's failing but when I look at /proc/empeg_ir I see the "Missed interrupts" counter increase every time the button glitches.