Message ID | 1456692724-751344-1-git-send-email-arnd@arndb.de (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Em Sun, 28 Feb 2016 21:51:48 +0100 Arnd Bergmann <arnd@arndb.de> escreveu: > In a configuration that supports all DVB drivers but that disables > V4L2 or builds it as a loadable module, we get link errors because > of the recent change to use __v4l2_mc_usb_media_device_init: > > drivers/media/built-in.o: In function `dvb_usb_adapter_dvb_init': > :(.text+0xe7966): undefined reference to `__v4l2_mc_usb_media_device_init' > drivers/media/built-in.o: In function `dvb_usbv2_init': > :(.text+0xff1cc): undefined reference to `__v4l2_mc_usb_media_device_init' > drivers/media/built-in.o: In function `smsusb_init_device': > :(.text+0x113be4): undefined reference to `__v4l2_mc_usb_media_device_init' > drivers/media/built-in.o: In function `au0828_usb_probe': > :(.text+0x114d08): undefined reference to `__v4l2_mc_usb_media_device_init' > > This patch is one way out, by simply building the v4l2-mc.c file > whenever at least one of VIDEO_V4L2 or DVB_CORE are enabled, including > the case that one of them is a module and the other is built-in, which > leads the MC code to become built-in as well. Thanks for the patch, but I actually solved this issue the other way around: I moved those functions to the media core, where both V4L and DVB uses it. This also allows using the function outside (like on ALSA). I should be pushing it later today to Linux next. Regards, Mauro > > Signed-off-by: Arnd Bergmann <arnd@arndb.de> > --- > drivers/media/Makefile | 2 +- > drivers/media/v4l2-core/Makefile | 8 +++++++- > 2 files changed, 8 insertions(+), 2 deletions(-) > > diff --git a/drivers/media/Makefile b/drivers/media/Makefile > index e608bbce0c35..16d471a56c0f 100644 > --- a/drivers/media/Makefile > +++ b/drivers/media/Makefile > @@ -19,7 +19,7 @@ ifeq ($(CONFIG_MEDIA_CONTROLLER),y) > endif > > obj-$(CONFIG_VIDEO_DEV) += v4l2-core/ > -obj-$(CONFIG_DVB_CORE) += dvb-core/ > +obj-$(CONFIG_DVB_CORE) += dvb-core/ v4l2-core/ > > # There are both core and drivers at RC subtree - merge before drivers > obj-y += rc/ > diff --git a/drivers/media/v4l2-core/Makefile b/drivers/media/v4l2-core/Makefile > index 795a5352761d..c26472f9950e 100644 > --- a/drivers/media/v4l2-core/Makefile > +++ b/drivers/media/v4l2-core/Makefile > @@ -16,7 +16,11 @@ endif > ifeq ($(CONFIG_TRACEPOINTS),y) > videodev-objs += vb2-trace.o v4l2-trace.o > endif > -videodev-$(CONFIG_MEDIA_CONTROLLER) += v4l2-mc.o > + > +ifdef CONFIG_MEDIA_CONTROLLER > +obj-$(CONFIG_VIDEO_V4L2) += v4l2-mc.o > +obj-$(CONFIG_DVB_CORE) += v4l2-mc.o > +endif > > obj-$(CONFIG_VIDEO_V4L2) += videodev.o > obj-$(CONFIG_VIDEO_V4L2) += v4l2-common.o > @@ -28,6 +32,7 @@ obj-$(CONFIG_V4L2_MEM2MEM_DEV) += v4l2-mem2mem.o > > obj-$(CONFIG_V4L2_FLASH_LED_CLASS) += v4l2-flash-led-class.o > > +ifdef CONFIG_VIDEO_V4L2 > obj-$(CONFIG_VIDEOBUF_GEN) += videobuf-core.o > obj-$(CONFIG_VIDEOBUF_DMA_SG) += videobuf-dma-sg.o > obj-$(CONFIG_VIDEOBUF_DMA_CONTIG) += videobuf-dma-contig.o > @@ -40,6 +45,7 @@ obj-$(CONFIG_VIDEOBUF2_VMALLOC) += videobuf2-vmalloc.o > obj-$(CONFIG_VIDEOBUF2_DMA_CONTIG) += videobuf2-dma-contig.o > obj-$(CONFIG_VIDEOBUF2_DMA_SG) += videobuf2-dma-sg.o > obj-$(CONFIG_VIDEOBUF2_DVB) += videobuf2-dvb.o > +endif > > ccflags-y += -I$(srctree)/drivers/media/dvb-core > ccflags-y += -I$(srctree)/drivers/media/dvb-frontends
On Thursday 03 March 2016 14:29:53 Mauro Carvalho Chehab wrote: > Em Sun, 28 Feb 2016 21:51:48 +0100 > Arnd Bergmann <arnd@arndb.de> escreveu: > > > In a configuration that supports all DVB drivers but that disables > > V4L2 or builds it as a loadable module, we get link errors because > > of the recent change to use __v4l2_mc_usb_media_device_init: > > > > drivers/media/built-in.o: In function `dvb_usb_adapter_dvb_init': > > :(.text+0xe7966): undefined reference to `__v4l2_mc_usb_media_device_init' > > drivers/media/built-in.o: In function `dvb_usbv2_init': > > :(.text+0xff1cc): undefined reference to `__v4l2_mc_usb_media_device_init' > > drivers/media/built-in.o: In function `smsusb_init_device': > > :(.text+0x113be4): undefined reference to `__v4l2_mc_usb_media_device_init' > > drivers/media/built-in.o: In function `au0828_usb_probe': > > :(.text+0x114d08): undefined reference to `__v4l2_mc_usb_media_device_init' > > > > This patch is one way out, by simply building the v4l2-mc.c file > > whenever at least one of VIDEO_V4L2 or DVB_CORE are enabled, including > > the case that one of them is a module and the other is built-in, which > > leads the MC code to become built-in as well. > > Thanks for the patch, but I actually solved this issue the other way > around: I moved those functions to the media core, where both V4L and DVB > uses it. This also allows using the function outside (like on ALSA). > > I should be pushing it later today to Linux next. > > Excellent! I was trying to come up with a better place for the code but didn't know where else to put it. Arnd -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/media/Makefile b/drivers/media/Makefile index e608bbce0c35..16d471a56c0f 100644 --- a/drivers/media/Makefile +++ b/drivers/media/Makefile @@ -19,7 +19,7 @@ ifeq ($(CONFIG_MEDIA_CONTROLLER),y) endif obj-$(CONFIG_VIDEO_DEV) += v4l2-core/ -obj-$(CONFIG_DVB_CORE) += dvb-core/ +obj-$(CONFIG_DVB_CORE) += dvb-core/ v4l2-core/ # There are both core and drivers at RC subtree - merge before drivers obj-y += rc/ diff --git a/drivers/media/v4l2-core/Makefile b/drivers/media/v4l2-core/Makefile index 795a5352761d..c26472f9950e 100644 --- a/drivers/media/v4l2-core/Makefile +++ b/drivers/media/v4l2-core/Makefile @@ -16,7 +16,11 @@ endif ifeq ($(CONFIG_TRACEPOINTS),y) videodev-objs += vb2-trace.o v4l2-trace.o endif -videodev-$(CONFIG_MEDIA_CONTROLLER) += v4l2-mc.o + +ifdef CONFIG_MEDIA_CONTROLLER +obj-$(CONFIG_VIDEO_V4L2) += v4l2-mc.o +obj-$(CONFIG_DVB_CORE) += v4l2-mc.o +endif obj-$(CONFIG_VIDEO_V4L2) += videodev.o obj-$(CONFIG_VIDEO_V4L2) += v4l2-common.o @@ -28,6 +32,7 @@ obj-$(CONFIG_V4L2_MEM2MEM_DEV) += v4l2-mem2mem.o obj-$(CONFIG_V4L2_FLASH_LED_CLASS) += v4l2-flash-led-class.o +ifdef CONFIG_VIDEO_V4L2 obj-$(CONFIG_VIDEOBUF_GEN) += videobuf-core.o obj-$(CONFIG_VIDEOBUF_DMA_SG) += videobuf-dma-sg.o obj-$(CONFIG_VIDEOBUF_DMA_CONTIG) += videobuf-dma-contig.o @@ -40,6 +45,7 @@ obj-$(CONFIG_VIDEOBUF2_VMALLOC) += videobuf2-vmalloc.o obj-$(CONFIG_VIDEOBUF2_DMA_CONTIG) += videobuf2-dma-contig.o obj-$(CONFIG_VIDEOBUF2_DMA_SG) += videobuf2-dma-sg.o obj-$(CONFIG_VIDEOBUF2_DVB) += videobuf2-dvb.o +endif ccflags-y += -I$(srctree)/drivers/media/dvb-core ccflags-y += -I$(srctree)/drivers/media/dvb-frontends
In a configuration that supports all DVB drivers but that disables V4L2 or builds it as a loadable module, we get link errors because of the recent change to use __v4l2_mc_usb_media_device_init: drivers/media/built-in.o: In function `dvb_usb_adapter_dvb_init': :(.text+0xe7966): undefined reference to `__v4l2_mc_usb_media_device_init' drivers/media/built-in.o: In function `dvb_usbv2_init': :(.text+0xff1cc): undefined reference to `__v4l2_mc_usb_media_device_init' drivers/media/built-in.o: In function `smsusb_init_device': :(.text+0x113be4): undefined reference to `__v4l2_mc_usb_media_device_init' drivers/media/built-in.o: In function `au0828_usb_probe': :(.text+0x114d08): undefined reference to `__v4l2_mc_usb_media_device_init' This patch is one way out, by simply building the v4l2-mc.c file whenever at least one of VIDEO_V4L2 or DVB_CORE are enabled, including the case that one of them is a module and the other is built-in, which leads the MC code to become built-in as well. Signed-off-by: Arnd Bergmann <arnd@arndb.de> --- drivers/media/Makefile | 2 +- drivers/media/v4l2-core/Makefile | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-)