From: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
To: Linus Torvalds <torvalds@linux-foundation.org>,
Stefan Lippers-Hollmann <s.l-h@gmx.de>
Cc: Linux Media Mailing List <linux-media@vger.kernel.org>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: Re: [GIT PULL for v4.6-rc1] media updates
Date: Wed, 4 May 2016 18:51:12 -0300 [thread overview]
Message-ID: <20160504185112.70ea985b@recife.lan> (raw)
In-Reply-To: <CA+55aFxQSUHBvOSqyiqdt2faY6VZSXP0p-cPzRm+km=fk7z4kQ@mail.gmail.com>
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:
> >
> > --- a/drivers/media/media-device.c
> > +++ b/drivers/media/media-device.c
> > @@ -875,7 +875,7 @@ void __media_device_usb_init(struct medi
> > const char *board_name,
> > const char *driver_name)
> > {
> > -#ifdef CONFIG_USB
> > +#if defined(CONFIG_USB) || defined(CONFIG_USB_MODULE)
>
> Ok, that should be fine. Can you verify that it builds and works even
> if USB isn't compiled in, but the media core code is?
>
> IOW, can you test the
>
> CONFIG_USB=m
> CONFIG_MEDIA_CONTROLLER=y
> CONFIG_MEDIA_SUPPORT=y
>
> case? Judging by your oops stack trace, I think you currently have
> MEDIA_SUPPORT=m.
I think we could use, instead:
#if IS_REACHABLE(CONFIG_USB)
This macro is defined as:
/*
* IS_REACHABLE(CONFIG_FOO) evaluates to 1 if the currently compiled
* code can call a function defined in code compiled based on CONFIG_FOO.
* This is similar to IS_ENABLED(), but returns false when invoked from
* built-in code when CONFIG_FOO is set to 'm'.
*/
#define IS_REACHABLE(option) (config_enabled(option) || \
(config_enabled(option##_MODULE) && config_enabled(MODULE)))
And we use it already on other places where we have dependencies
like that.
Btw, there are also some helper function there to initialize
for PCI devices.
> Also, I do wonder if we should move that #if to _outside_ the
> function. Because inside the function, things will compile but
> silently not work (like you found), if it is ever mis-used. Outside
> that function, you'll get link-errors if you try to misuse that
> function.
Yeah, that makes sense. This function is a helper function that
it is used only when CONFIG_USB.
The following (untested) patch should do the work.
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 */
next prev parent reply other threads:[~2016-05-04 21:51 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-03-15 11:05 [GIT PULL for v4.6-rc1] media updates Mauro Carvalho Chehab
2016-05-03 21:38 ` Stefan Lippers-Hollmann
2016-05-03 21:53 ` Linus Torvalds
2016-05-04 4:39 ` Stefan Lippers-Hollmann
2016-05-04 17:58 ` Linus Torvalds
2016-05-04 19:28 ` Stefan Lippers-Hollmann
2016-05-04 20:49 ` Linus Torvalds
2016-05-04 21:45 ` Stefan Lippers-Hollmann
2016-05-04 21:51 ` Mauro Carvalho Chehab [this message]
2016-05-04 23:00 ` Stefan Lippers-Hollmann
2016-05-05 11:07 ` Mauro Carvalho Chehab
2016-05-06 0:00 ` Stefan Lippers-Hollmann
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20160504185112.70ea985b@recife.lan \
--to=mchehab@osg.samsung.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-media@vger.kernel.org \
--cc=s.l-h@gmx.de \
--cc=torvalds@linux-foundation.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.