mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-22 17:01:14 +00:00
V4L/DVB (5298): Added support for deferred module requesting to cx88
added support for deferred module requesting to cx88 Signed-off-by: Markus Rechberger <mrechberger@gmail.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
This commit is contained in:
parent
acf2821282
commit
77b7477467
2 changed files with 34 additions and 0 deletions
|
@ -49,6 +49,35 @@ MODULE_PARM_DESC(debug,"enable debug messages [mpeg]");
|
|||
#define mpeg_dbg(level,fmt, arg...) if (debug >= level) \
|
||||
printk(KERN_DEBUG "%s/2-mpeg: " fmt, core->name, ## arg)
|
||||
|
||||
#if defined(CONFIG_MODULES) && defined(MODULE)
|
||||
static void request_module_async(struct work_struct *work)
|
||||
{
|
||||
struct cx8802_dev *dev=container_of(work, struct cx8802_dev, request_module_wk);
|
||||
switch (cx88_boards[dev->core->board].mpeg) {
|
||||
case CX88_MPEG_BLACKBIRD:
|
||||
request_module("cx88-blackbird");
|
||||
break;
|
||||
case CX88_MPEG_DVB:
|
||||
request_module("cx88-dvb");
|
||||
break;
|
||||
case CX88_BOARD_NONE:
|
||||
/* reaching this one isn't possible */
|
||||
break;
|
||||
default:
|
||||
printk("cx88-mpeg.c: WARNING extension [%d] is not supposed to be supported\n",cx88_boards[dev->core->board].mpeg);
|
||||
}
|
||||
}
|
||||
|
||||
static void request_modules(struct cx8802_dev *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 LIST_HEAD(cx8802_devlist);
|
||||
/* ------------------------------------------------------------------ */
|
||||
|
||||
|
@ -778,6 +807,9 @@ static int __devinit cx8802_probe(struct pci_dev *pci_dev,
|
|||
|
||||
/* Maintain a reference so cx88-video can query the 8802 device. */
|
||||
core->dvbdev = dev;
|
||||
|
||||
/* now autoload cx88-dvb or cx88-blackbird */
|
||||
request_modules(dev);
|
||||
return 0;
|
||||
|
||||
fail_free:
|
||||
|
|
|
@ -481,6 +481,8 @@ struct cx8802_dev {
|
|||
|
||||
/* List of attached drivers */
|
||||
struct cx8802_driver drvlist;
|
||||
struct work_struct request_module_wk;
|
||||
|
||||
};
|
||||
|
||||
/* ----------------------------------------------------------- */
|
||||
|
|
Loading…
Reference in a new issue