linux-sg2042/drivers/media
Arnd Bergmann 9b174527e7 [media] Add and use IS_REACHABLE macro
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: 7b34be71db ("[media] use IS_ENABLED() macro")
See-also: c5dec9fb24 ("V4L/DVB (4751): Fix DBV_FE_CUSTOMISE for card drivers compiled into kernel")

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
2015-04-08 15:02:07 -03:00
..
common [media] saa7146: embed video_device 2015-04-02 23:29:01 -03:00
dvb-core [media] rtl28xxu: add support for Turbo-X DTT2000 2015-04-08 13:14:38 -03:00
dvb-frontends [media] Add and use IS_REACHABLE macro 2015-04-08 15:02:07 -03:00
firewire [media] firewire: Deletion of an unnecessary check before the function call "dvb_unregister_device" 2014-11-25 13:30:31 -02:00
i2c [media] s5k5baf: Add missing error check for devm_kzalloc 2015-04-08 07:59:23 -03:00
mmc [media] siano: register media controller earlier 2015-02-26 09:10:39 -03:00
pci [media] Add and use IS_REACHABLE macro 2015-04-08 15:02:07 -03:00
platform [media] vivid: use V4L2_DV_FL_IS_CE_VIDEO instead of V4L2_DV_BT_STD_CEA861 2015-04-08 06:38:56 -03:00
radio [media] media: radio-si4713: improve usage of gpiod API 2015-04-08 06:40:33 -03:00
rc [media] rc: img-ir: fix error in parameters passed to irq_free() 2015-04-08 12:52:50 -03:00
tuners [media] Add and use IS_REACHABLE macro 2015-04-08 15:02:07 -03:00
usb [media] rtl28xxu: add support for Turbo-X DTT2000 2015-04-08 13:14:38 -03:00
v4l2-core Revert "[media] v4l: vb2-memops: use vma slab when vma allocation" 2015-04-08 13:17:09 -03:00
Kconfig [media] dvbdev: add support for media controller 2015-02-13 21:10:12 -02:00
Makefile [media] bq/c-qcam, w9966, pms: move to staging in preparation for removal 2014-12-16 23:21:44 -02:00
media-device.c [media] media: Use strlcpy instead of custom code 2014-09-21 20:27:08 -03:00
media-devnode.c [media] media-devnode: just return 0 instead of using a var 2014-09-03 17:59:28 -03:00
media-entity.c [media] media: Fix a compiler warning in media_entity_pipeline_start() 2014-11-03 19:09:13 -02:00