[linux-dvb] Linux support for the DigiTV PCI remote controller (programming advice?)

Mark Weaver mark-clist at npsl.co.uk
Sat Sep 24 08:55:32 CEST 2005


I have fiddled about using the code I reverse engineered from the Nebula 
driver and it appears to work (I can get the same numbers that they use 
for each button out of my code).  Roughly this goes like:

- Pull GPIO4 low & then high to enable interrupts from the remote control
- Get an interrupt and read GPIO, test if bit 4 is set
- If so process remote interrupt (by using time between interrupts as in 
previous pseudo-code)
- Toggle GPIO4 low & high again to clear the interrupt condition

It appears that no specific bit is set in the INT_STAT register when the 
remote control generates an interrupt.  It is also not possible to clear 
the interrupt condition except by the pin toggle method described above. 
  So this card appears to be unique in the way the remote is implemented 
-- all the rest seem to use a few of the GPIO pins & make a code 
available on them, possibly coupled with a GPINT.

A couple of implementation ideas:

- Separate driver like bt878 that also handles the card's interrupt
- Hack bttv-driver.c to call bttv_gpio_irq() iff card=nebula all the 
time + hack handling method for nebula into ir-kbd-gpio

Hacking it all into the same place seems a bit messy really, but having 
a separate driver implies duplicating all of the pci* stuff (if that 
would even work?)

Any advice as to how best to proceed would be appreciated,

Thanks

Mark




More information about the linux-dvb mailing list