From: Gerd Knorr <kraxel@bytesex.org>
To: Andrew Morton <akpm@osdl.org>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: [patch] v4l: saa7134 module
Date: Thu, 20 Jan 2005 16:28:31 +0100 [thread overview]
Message-ID: <20050120152831.GA13077@bytesex> (raw)
- fix saa7134 module loading issues.
Signed-off-by: Gerd Knorr <kraxel@bytesex.org>
---
drivers/media/video/saa7134/saa7134-core.c | 47 ++++++++++++++++++++-
1 files changed, 45 insertions(+), 2 deletions(-)
Index: linux-2.6.10/drivers/media/video/saa7134/saa7134-core.c
===================================================================
--- linux-2.6.10.orig/drivers/media/video/saa7134/saa7134-core.c 2005-01-10 12:40:58.613644368 +0100
+++ linux-2.6.10/drivers/media/video/saa7134/saa7134-core.c 2005-01-10 12:40:59.759428971 +0100
@@ -222,6 +222,49 @@ static void dump_statusregs(struct saa71
}
#endif
+/* ----------------------------------------------------------- */
+/* delayed request_module */
+
+static int need_empress;
+static int need_dvb;
+
+static int pending_call(struct notifier_block *self, unsigned long state,
+ void *module)
+{
+ if (module != THIS_MODULE || state != MODULE_STATE_LIVE)
+ return NOTIFY_DONE;
+
+ if (need_empress)
+ request_module("saa7134-empress");
+ if (need_dvb)
+ request_module("saa7134-dvb");
+ return NOTIFY_DONE;
+}
+
+static int pending_registered;
+static struct notifier_block pending_notifier = {
+ .notifier_call = pending_call,
+};
+
+static void request_module_depend(char *name, int *flag)
+{
+ switch (THIS_MODULE->state) {
+ case MODULE_STATE_COMING:
+ if (!pending_registered) {
+ register_module_notifier(&pending_notifier);
+ pending_registered = 1;
+ }
+ *flag = 1;
+ break;
+ case MODULE_STATE_LIVE:
+ request_module(name);
+ break;
+ default:
+ /* nothing */;
+ break;
+ }
+}
+
/* ------------------------------------------------------------------ */
/* nr of (saa7134-)pages for the given buffer size */
@@ -941,11 +984,11 @@ static int __devinit saa7134_initdev(str
if (dev->tda9887_conf)
request_module("tda9887");
if (card_is_empress(dev)) {
- request_module("saa7134-empress");
request_module("saa6752hs");
+ request_module_depend("saa7134-empress",&need_empress);
}
if (card_is_dvb(dev))
- request_module("saa7134-dvb");
+ request_module_depend("saa7134-dvb",&need_dvb);
v4l2_prio_init(&dev->prio);
--
#define printk(args...) fprintf(stderr, ## args)
reply other threads:[~2005-01-20 15:34 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
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=20050120152831.GA13077@bytesex \
--to=kraxel@bytesex.org \
--cc=akpm@osdl.org \
--cc=linux-kernel@vger.kernel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox