• Devin Heitmueller's avatar
    V4L/DVB (13930): dib0700: rework IR logic for firmware 1.20 · 6a207100
    Devin Heitmueller authored
    When firmware 1.20 was introduced, the dib0700 switched from a polling model
    using a USB control message, to the messages being delivered on a USB bulk
    pipe.  The code I originally added would do a blocking read on the pipe with a
    50ms timeout.  Because the dvb-usb-remote code makes use of the global
    workqueue, this resulted in the global workqueue being blocked 50% of the
    time.  Also, the synchronous urb_bulk_msg() call would burn excess CPU time
    (reflected as an abnormal increase in the system's load average when devices
    were connected).
    
    Rework the logic so that we now setup an asynchronous callback on the bulk
    pipe, so that we now only handle RC data when it arrives on the pipe.  Note
    that we provide a stub function for the RC polling callback so that we can
    continue to leverage the shared code in dvb-usb-rc for the setting up of the
    input device.
    Signed-off-by: default avatarDevin Heitmueller <dheitmueller@kernellabs.com>
    Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
    6a207100
dib0700_devices.c 69.9 KB