• Trent Piepho's avatar
    V4L/DVB (5502): Sn9c102: more efficient register writing code · c680dd60
    Trent Piepho authored
    There were many places in the driver which had long sequences of constant
    register initializations.  These were done with one function call per
    register.  The register address and value were immediate values in the
    function calls.
    This is very inefficient, as each register and value take twice the space
    when they are code, as each includes a push instruction to put it on
    the stack.  There there is the overhead, both size and time, for a
    function call for each register.  It's also quite a few lines of C code
    to do this.
    The patch creates a function that writes multiple registers from a list,
    and a macro that makes it easy to construct a such a list as a const
    static local to send to the function.
    This gets rid of quite a bit of C code, and shrinks the driver by around
    8k, while at the same time being more efficient.
    Acked-by: default avatarLuca Risolia <luca.risolia@studio.unibo.it>
    Signed-off-by: default avatarTrent Piepho <xyzzy@speakeasy.org>
    Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@infradead.org>
    c680dd60
sn9c102_core.c 82.9 KB