• David Härdeman's avatar
    V4L/DVB: Teach drivers/media/IR/ir-raw-event.c to use durations · 724e2495
    David Härdeman authored
    drivers/media/IR/ir-raw-event.c is currently written with the assumption
    that all "raw" hardware will generate events only on state change (i.e.
    when a pulse or space starts).
    
    However, some hardware (like mceusb, probably the most popular IR receiver
    out there) only generates duration data (and that data is buffered so using
    any kind of timing on the data is futile).
    
    Furthermore, using signed int's to represent pulse/space durations is a
    well-known approach when writing ir decoders.
    
    With this patch:
    
    - s64 int's are used to represent pulse/space durations in ns
    
    - a workqueue is used to decode the ir protocols outside of interrupt context
    
    - #defines are added to make decoders clearer
    
    - decoder reset is implemented by passing a zero duration to the kfifo queue
      and decoders are updated accordingly
    Signed-off-by: default avatarDavid Härdeman <david@hardeman.nu>
    Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
    724e2495
ir-nec-decoder.c 6.98 KB