aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/mdtv/smsusb.c
diff options
context:
space:
mode:
authorSteven Toth <stoth@hauppauge.com>2008-05-22 17:01:02 -0400
committerMauro Carvalho Chehab <mchehab@infradead.org>2008-07-20 06:20:18 -0400
commit3dd243787017e40c66ae54cf590ea513a110c51d (patch)
tree7384df276d2b524e9ead1b303d49ebbc07aaf588 /drivers/media/mdtv/smsusb.c
parent7a19598c75660b6d4464d291f8e99a91fd7afc4a (diff)
V4L/DVB (8266): sms1xxx: merge modules
Signed-off-by: Steven Toth <stoth@hauppauge.com> Signed-off-by: Michael Krufky <mkrufky@linuxtv.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Diffstat (limited to 'drivers/media/mdtv/smsusb.c')
-rw-r--r--drivers/media/mdtv/smsusb.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/drivers/media/mdtv/smsusb.c b/drivers/media/mdtv/smsusb.c
index 1da0209fc56f..11c471ad6326 100644
--- a/drivers/media/mdtv/smsusb.c
+++ b/drivers/media/mdtv/smsusb.c
@@ -401,12 +401,21 @@ static struct usb_driver smsusb_driver = {
401 .id_table = smsusb_id_table, 401 .id_table = smsusb_id_table,
402}; 402};
403 403
404extern struct list_head g_smsdvb_clients;
405kmutex_t g_smsdvb_clientslock;
406
404int smsusb_module_init(void) 407int smsusb_module_init(void)
405{ 408{
406 int rc = usb_register(&smsusb_driver); 409 int rc = usb_register(&smsusb_driver);
407 if (rc) 410 if (rc)
408 printk(KERN_INFO "usb_register failed. Error number %d\n", rc); 411 printk(KERN_INFO "usb_register failed. Error number %d\n", rc);
409 412
413 /* Bring up the dvb componenets */
414 INIT_LIST_HEAD(&g_smsdvb_clients);
415 kmutex_init(&g_smsdvb_clientslock);
416
417 rc = smscore_register_hotplug(smsdvb_hotplug);
418
410 printk(KERN_INFO "%s\n", __FUNCTION__); 419 printk(KERN_INFO "%s\n", __FUNCTION__);
411 420
412 return rc; 421 return rc;
@@ -414,6 +423,17 @@ int smsusb_module_init(void)
414 423
415void smsusb_module_exit(void) 424void smsusb_module_exit(void)
416{ 425{
426 /* Tear down the DVB components */
427 smscore_unregister_hotplug(smsdvb_hotplug);
428
429 kmutex_lock(&g_smsdvb_clientslock);
430
431 while (!list_empty(&g_smsdvb_clients))
432 smsdvb_unregister_client((smsdvb_client_t*) g_smsdvb_clients.next);
433
434 kmutex_unlock(&g_smsdvb_clientslock);
435
436 /* Regular USB Cleanup */
417 usb_deregister(&smsusb_driver); 437 usb_deregister(&smsusb_driver);
418 printk(KERN_INFO "%s\n", __FUNCTION__); 438 printk(KERN_INFO "%s\n", __FUNCTION__);
419} 439}