09 Apr, 2015

1 commit

  • In the media drivers, the v4l2 core knows about all submodules
    and calls into them from a common function. However this cannot
    work if the modules that get called are loadable and the
    core is built-in. In that case we get

    drivers/built-in.o: In function `set_type':
    drivers/media/v4l2-core/tuner-core.c:301: undefined reference to `tea5767_attach'
    drivers/media/v4l2-core/tuner-core.c:307: undefined reference to `tea5761_attach'
    drivers/media/v4l2-core/tuner-core.c:349: undefined reference to `tda9887_attach'
    drivers/media/v4l2-core/tuner-core.c:405: undefined reference to `xc4000_attach'

    This was working previously, until the IS_ENABLED() macro was used
    to replace the construct like

    #if defined(CONFIG_DVB_CX24110) || (defined(CONFIG_DVB_CX24110_MODULE) && defined(MODULE))

    with the difference that the new code no longer checks whether it is being
    built as a loadable module itself.

    To fix this, this new patch adds an 'IS_REACHABLE' macro, which evaluates
    true in exactly the condition that was used previously. The downside
    of this is that this trades an obvious link error for a more subtle
    runtime failure, but it is clear that the change that introduced the
    link error was unintentional and it seems better to revert it for
    now. Also, a similar change was originally created by Trent Piepho
    and then reverted by teh change to the IS_ENABLED macro.

    Ideally Kconfig would be used to avoid the case of a broken dependency,
    or the code restructured in a way to turn around the dependency, but either
    way would require much larger changes here.

    Fixes: 7b34be71db53 ("[media] use IS_ENABLED() macro")
    See-also: c5dec9fb248e ("V4L/DVB (4751): Fix DBV_FE_CUSTOMISE for card drivers compiled into kernel")

    Signed-off-by: Arnd Bergmann
    Signed-off-by: Mauro Carvalho Chehab

    Arnd Bergmann
     

06 Feb, 2013

1 commit

  • This patch introduces the use of IS_ENABLED() macro. For example,
    replacing:
    #if defined(CONFIG_I2C) || (defined(CONFIG_I2C_MODULE) && defined(MODULE))
    with:
    #if IS_ENABLED(CONFIG_I2C)
    All changes made by this patch respect the same replacement pattern.

    Reported-by: Mauro Carvalho Chehab
    Signed-off-by: Peter Senna Tschudin
    Acked-by: Antti Palosaari
    Signed-off-by: Mauro Carvalho Chehab

    Peter Senna Tschudin
     

14 Aug, 2012

1 commit