[GIT,PULL,for,v4.6-rc1] media updates
diff mbox

Message ID 20160505080737.5961617e@recife.lan
State New
Headers show

Commit Message

Mauro Carvalho Chehab May 5, 2016, 11:07 a.m. UTC
Em Thu, 5 May 2016 01:00:51 +0200
Stefan Lippers-Hollmann <s.l-h@gmx.de> escreveu:

> Hi
> 
> On 2016-05-04, Mauro Carvalho Chehab wrote:
> > Em Wed, 4 May 2016 13:49:52 -0700
> > Linus Torvalds <torvalds@linux-foundation.org> escreveu:  
> > > On Wed, May 4, 2016 at 12:28 PM, Stefan Lippers-Hollmann <s.l-h@gmx.de> wrote:    
> [...]
> > Stefan,
> > 
> > Could you please test the enclosed patch?
> > 
> > Regards,
> > Mauro
> > 
> > [media] media-device: fix builds when USB or PCI is compiled as module
> > 
> > Just checking ifdef CONFIG_USB is not enough, if the USB is compiled
> > as module. The same applies to PCI.
> > 
> > Compile-tested only.
> > 
> > So, change the logic to use, instead, IS_REACHABLE.
> > 
> > Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
> > 
> > diff --git a/drivers/media/media-device.c b/drivers/media/media-device.c
> > index b84825715f98..8c1f80ff33e3 100644
> > --- a/drivers/media/media-device.c
> > +++ b/drivers/media/media-device.c
> > @@ -842,11 +842,11 @@ struct media_device *media_device_find_devres(struct device *dev)
> >  }
> >  EXPORT_SYMBOL_GPL(media_device_find_devres);
> >  
> > +#if IS_REACHABLE(CONFIG_PCI)
> >  void media_device_pci_init(struct media_device *mdev,
> >  			   struct pci_dev *pci_dev,
> >  			   const char *name)
> >  {
> > -#ifdef CONFIG_PCI
> >  	mdev->dev = &pci_dev->dev;
> >  
> >  	if (name)
> > @@ -862,16 +862,16 @@ void media_device_pci_init(struct media_device *mdev,
> >  	mdev->driver_version = LINUX_VERSION_CODE;
> >  
> >  	media_device_init(mdev);
> > -#endif
> >  }
> >  EXPORT_SYMBOL_GPL(media_device_pci_init);
> > +#endif
> >  
> > +#if IS_REACHABLE(CONFIG_USB)
> >  void __media_device_usb_init(struct media_device *mdev,
> >  			     struct usb_device *udev,
> >  			     const char *board_name,
> >  			     const char *driver_name)
> >  {
> > -#ifdef CONFIG_USB
> >  	mdev->dev = &udev->dev;
> >  
> >  	if (driver_name)
> > @@ -891,9 +891,9 @@ void __media_device_usb_init(struct media_device *mdev,
> >  	mdev->driver_version = LINUX_VERSION_CODE;
> >  
> >  	media_device_init(mdev);
> > -#endif
> >  }
> >  EXPORT_SYMBOL_GPL(__media_device_usb_init);
> > +#endif
> >  
> >  
> >  #endif /* CONFIG_MEDIA_CONTROLLER */
> > 
> >   
> 
> This fails to build for me with:
> 
> [...]
> Setup is 16348 bytes (padded to 16384 bytes).
> System is 3319 kB
> CRC a9178215
> Kernel: arch/x86/boot/bzImage is ready  (#1)
> ERROR: "__media_device_usb_init" [drivers/media/usb/siano/smsusb.ko] undefined!
> ERROR: "__media_device_usb_init" [drivers/media/usb/em28xx/em28xx.ko] undefined!
> ERROR: "__media_device_usb_init" [drivers/media/usb/dvb-usb/dvb-usb.ko] undefined!
> ERROR: "__media_device_usb_init" [drivers/media/usb/dvb-usb-v2/dvb_usb_v2.ko] undefined!
> ERROR: "__media_device_usb_init" [drivers/media/usb/cx231xx/cx231xx.ko] undefined!
> ERROR: "__media_device_usb_init" [drivers/media/usb/au0828/au0828.ko] undefined!
> scripts/Makefile.modpost:91: recipe for target '__modpost' failed
> make[6]: *** [__modpost] Error 1
> Makefile:1147: recipe for target 'modules' failed
> [...]
> 
> I've attached my gzipped kernel configs for amd64 and i386.
> 
> Regards
> 	Stefan Lippers-Hollmann

Oh, in this case, it should be using IS_ENABLED() macro instead.
The following patch should fix it. I tested here with some different
setups, as described in the patch, and with your .i686 .config.

Please double-check and ack if it is ok for you.

Regards,
Mauro


[PATCH v2] [media] media-device: fix builds when USB or PCI is compiled
 as module

Just checking ifdef CONFIG_USB is not enough, if the USB is compiled
as module. The same applies to PCI.

Tested with the following .config alternatives:

CONFIG_USB=m
CONFIG_MEDIA_CONTROLLER=y
CONFIG_MEDIA_SUPPORT=m
CONFIG_VIDEO_AU0828=m

CONFIG_USB=m
CONFIG_MEDIA_CONTROLLER=y
CONFIG_MEDIA_SUPPORT=y
CONFIG_VIDEO_AU0828=m

CONFIG_USB=y
CONFIG_MEDIA_CONTROLLER=y
CONFIG_MEDIA_SUPPORT=y
CONFIG_VIDEO_AU0828=m

CONFIG_USB=y
CONFIG_MEDIA_CONTROLLER=y
CONFIG_MEDIA_SUPPORT=y
CONFIG_VIDEO_AU0828=y

Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>




Thanks,
Mauro

Comments

Stefan Lippers-Hollmann May 6, 2016, midnight UTC | #1
Hi

On 2016-05-05, Mauro Carvalho Chehab wrote:
> Em Thu, 5 May 2016 01:00:51 +0200
> Stefan Lippers-Hollmann <s.l-h@gmx.de> escreveu:
[...]
> Oh, in this case, it should be using IS_ENABLED() macro instead.
> The following patch should fix it. I tested here with some different
> setups, as described in the patch, and with your .i686 .config.
> 
> Please double-check and ack if it is ok for you.
> 
> Regards,
> Mauro
> 
> 
> [PATCH v2] [media] media-device: fix builds when USB or PCI is compiled
>  as module
> 
> Just checking ifdef CONFIG_USB is not enough, if the USB is compiled
> as module. The same applies to PCI.
[...]

This patch works for me, both on amd64 and i386, tested with 
dvb_usb_dw2102, dvb_usb_af9015 and dvb_usb_rtl28xxu.

> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>

Feel free to add

Tested-by: Stefan Lippers-Hollmann <s.l-h@gmx.de>

Thanks a lot.

Regards
	Stefan Lippers-Hollmann

Patch
diff mbox

diff --git a/drivers/media/media-device.c b/drivers/media/media-device.c
index 6e43c95629ea..3cfd7af8c5ca 100644
--- a/drivers/media/media-device.c
+++ b/drivers/media/media-device.c
@@ -846,11 +846,11 @@  struct media_device *media_device_find_devres(struct device *dev)
 }
 EXPORT_SYMBOL_GPL(media_device_find_devres);
 
+#if IS_ENABLED(CONFIG_PCI)
 void media_device_pci_init(struct media_device *mdev,
 			   struct pci_dev *pci_dev,
 			   const char *name)
 {
-#ifdef CONFIG_PCI
 	mdev->dev = &pci_dev->dev;
 
 	if (name)
@@ -866,16 +866,16 @@  void media_device_pci_init(struct media_device *mdev,
 	mdev->driver_version = LINUX_VERSION_CODE;
 
 	media_device_init(mdev);
-#endif
 }
 EXPORT_SYMBOL_GPL(media_device_pci_init);
+#endif
 
+#if IS_ENABLED(CONFIG_USB)
 void __media_device_usb_init(struct media_device *mdev,
 			     struct usb_device *udev,
 			     const char *board_name,
 			     const char *driver_name)
 {
-#ifdef CONFIG_USB
 	mdev->dev = &udev->dev;
 
 	if (driver_name)
@@ -895,9 +895,9 @@  void __media_device_usb_init(struct media_device *mdev,
 	mdev->driver_version = LINUX_VERSION_CODE;
 
 	media_device_init(mdev);
-#endif
 }
 EXPORT_SYMBOL_GPL(__media_device_usb_init);
+#endif
 
 
 #endif /* CONFIG_MEDIA_CONTROLLER */