diff options
author | Steven Toth <stoth@hauppauge.com> | 2008-05-22 17:01:02 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@infradead.org> | 2008-07-20 06:20:18 -0400 |
commit | 3dd243787017e40c66ae54cf590ea513a110c51d (patch) | |
tree | 7384df276d2b524e9ead1b303d49ebbc07aaf588 /drivers/media/mdtv/smsusb.c | |
parent | 7a19598c75660b6d4464d291f8e99a91fd7afc4a (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.c | 20 |
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 | ||
404 | extern struct list_head g_smsdvb_clients; | ||
405 | kmutex_t g_smsdvb_clientslock; | ||
406 | |||
404 | int smsusb_module_init(void) | 407 | int 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 | ||
415 | void smsusb_module_exit(void) | 424 | void 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 | } |