Commit f992a497 authored by Jarod Wilson's avatar Jarod Wilson Committed by Mauro Carvalho Chehab

V4L/DVB (5482): Bttv: automatically load dvb-bt8xx for bttv cards with dvb

This patch causes the bttv driver to automatically load the dvb-bt8xx module
for bttv/dvb hybrid cards. Successfully tested with a pcHDTV HD-2000 card.
This patch is based on the recent patches to enable autoloading of cx88-dvb,
cx88-blackbird and saa7134-dvb.
Signed-off-by: default avatarJarod Wilson <jwilson@redhat.com>
Signed-off-by: default avatarMichael Krufky <mkrufky@linuxtv.org>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@infradead.org>
parent fbc8408a
...@@ -163,6 +163,24 @@ static ssize_t show_card(struct class_device *cd, char *buf) ...@@ -163,6 +163,24 @@ static ssize_t show_card(struct class_device *cd, char *buf)
} }
static CLASS_DEVICE_ATTR(card, S_IRUGO, show_card, NULL); static CLASS_DEVICE_ATTR(card, S_IRUGO, show_card, NULL);
/* ----------------------------------------------------------------------- */
/* dvb auto-load setup */
#if defined(CONFIG_MODULES) && defined(MODULE)
static void request_module_async(struct work_struct *work)
{
request_module("dvb-bt8xx");
}
static void request_modules(struct bttv *dev)
{
INIT_WORK(&dev->request_module_wk, request_module_async);
schedule_work(&dev->request_module_wk);
}
#else
#define request_modules(dev)
#endif /* CONFIG_MODULES */
/* ----------------------------------------------------------------------- */ /* ----------------------------------------------------------------------- */
/* static data */ /* static data */
...@@ -4769,9 +4787,11 @@ static int __devinit bttv_probe(struct pci_dev *dev, ...@@ -4769,9 +4787,11 @@ static int __devinit bttv_probe(struct pci_dev *dev,
disclaim_video_lines(btv); disclaim_video_lines(btv);
} }
/* add subdevices */ /* add subdevices and autoload dvb-bt8xx if needed */
if (bttv_tvcards[btv->c.type].has_dvb) if (bttv_tvcards[btv->c.type].has_dvb) {
bttv_sub_add_device(&btv->c, "dvb"); bttv_sub_add_device(&btv->c, "dvb");
request_modules(btv);
}
bttv_input_init(btv); bttv_input_init(btv);
......
...@@ -434,6 +434,9 @@ struct bttv { ...@@ -434,6 +434,9 @@ struct bttv {
unsigned int users; unsigned int users;
struct bttv_fh init; struct bttv_fh init;
/* used to make dvb-bt8xx autoloadable */
struct work_struct request_module_wk;
/* Default (0) and current (1) video capturing and overlay /* Default (0) and current (1) video capturing and overlay
cropping parameters in bttv_tvnorm.cropcap units. Protected cropping parameters in bttv_tvnorm.cropcap units. Protected
by bttv.lock. */ by bttv.lock. */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment