• David Härdeman's avatar
    V4L/DVB: ir-core: move decoding state to ir_raw_event_ctrl · c216369e
    David Härdeman authored
    This patch moves the state from each raw decoder into the
    ir_raw_event_ctrl struct.
    
    This allows the removal of code like this:
    
            spin_lock(&decoder_lock);
            list_for_each_entry(data, &decoder_list, list) {
                    if (data->ir_dev == ir_dev)
                            break;
            }
            spin_unlock(&decoder_lock);
            return data;
    
    which is currently run for each decoder on each event in order
    to get the client-specific decoding state data.
    
    In addition, ir decoding modules and ir driver module load
    order is now independent. Centralizing the data also allows
    for a nice code reduction of about 30% per raw decoder as
    client lists and client registration callbacks are no longer
    necessary (but still kept around for the benefit of the lirc
    decoder).
    
    Out-of-tree modules can still use a similar trick to what
    the raw decoders did before this patch until they are merged.
    Signed-off-by: default avatarDavid Härdeman <david@hardeman.nu>
    Acked-by: default avatarJarod Wilson <jarod@redhat.com>
    Tested-by: default avatarJarod Wilson <jarod@redhat.com>
    Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
    c216369e
ir-rc6-decoder.c 6.68 KB