mirror of https://gitee.com/openkylin/linux.git
[media] tm6000: automatically load alsa and dvb modules
All devices should support alsa module. Devices with DVB will auto-load the dvb module. This way, tm6000-based devices should now have hot plugin. Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
parent
9f711a80c5
commit
6740a93288
|
@ -1052,6 +1052,33 @@ static void use_alternative_detection_method(struct tm6000_core *dev)
|
|||
tm6000_boards[model].name, model);
|
||||
}
|
||||
|
||||
#if defined(CONFIG_MODULES) && defined(MODULE)
|
||||
static void request_module_async(struct work_struct *work)
|
||||
{
|
||||
struct tm6000_core *dev = container_of(work, struct tm6000_core,
|
||||
request_module_wk);
|
||||
|
||||
request_module("tm6000-alsa");
|
||||
|
||||
if (dev->caps.has_dvb)
|
||||
request_module("tm6000-dvb");
|
||||
}
|
||||
|
||||
static void request_modules(struct tm6000_core *dev)
|
||||
{
|
||||
INIT_WORK(&dev->request_module_wk, request_module_async);
|
||||
schedule_work(&dev->request_module_wk);
|
||||
}
|
||||
|
||||
static void flush_request_modules(struct tm6000_core *dev)
|
||||
{
|
||||
flush_work_sync(&dev->request_module_wk);
|
||||
}
|
||||
#else
|
||||
#define request_modules(dev)
|
||||
#define flush_request_modules(dev)
|
||||
#endif /* CONFIG_MODULES */
|
||||
|
||||
static int tm6000_init_dev(struct tm6000_core *dev)
|
||||
{
|
||||
struct v4l2_frequency f;
|
||||
|
@ -1114,6 +1141,8 @@ static int tm6000_init_dev(struct tm6000_core *dev)
|
|||
|
||||
tm6000_ir_init(dev);
|
||||
|
||||
request_modules(dev);
|
||||
|
||||
mutex_unlock(&dev->lock);
|
||||
return 0;
|
||||
|
||||
|
@ -1326,6 +1355,8 @@ static void tm6000_usb_disconnect(struct usb_interface *interface)
|
|||
|
||||
printk(KERN_INFO "tm6000: disconnecting %s\n", dev->name);
|
||||
|
||||
flush_request_modules(dev);
|
||||
|
||||
tm6000_ir_fini(dev);
|
||||
|
||||
if (dev->gpio.power_led) {
|
||||
|
|
|
@ -188,6 +188,9 @@ struct tm6000_core {
|
|||
/* Device Capabilities*/
|
||||
struct tm6000_capabilities caps;
|
||||
|
||||
/* Used to load alsa/dvb */
|
||||
struct work_struct request_module_wk;
|
||||
|
||||
/* Tuner configuration */
|
||||
int tuner_type; /* type of the tuner */
|
||||
int tuner_addr; /* tuner address */
|
||||
|
|
Loading…
Reference in New Issue