V4L/DVB (8268): sms1xxx: usb cleanup
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>
This commit is contained in:
parent
159ed4bbc3
commit
eae55660fc
4 changed files with 48 additions and 30 deletions
|
@ -1104,6 +1104,12 @@ int smscore_module_init(void)
|
|||
INIT_LIST_HEAD(&g_smscore_registry);
|
||||
kmutex_init(&g_smscore_registrylock);
|
||||
|
||||
/* USB Register */
|
||||
rc = smsusb_register();
|
||||
|
||||
/* DVB Register */
|
||||
rc = smsdvb_register();
|
||||
|
||||
printk(KERN_INFO "%s, rc %d\n", __FUNCTION__, rc);
|
||||
|
||||
return rc;
|
||||
|
@ -1111,6 +1117,7 @@ int smscore_module_init(void)
|
|||
|
||||
void smscore_module_exit(void)
|
||||
{
|
||||
|
||||
kmutex_lock(&g_smscore_deviceslock);
|
||||
while (!list_empty(&g_smscore_notifyees))
|
||||
{
|
||||
|
@ -1131,6 +1138,12 @@ void smscore_module_exit(void)
|
|||
}
|
||||
kmutex_unlock(&g_smscore_registrylock);
|
||||
|
||||
/* DVB UnRegister */
|
||||
smsdvb_unregister();
|
||||
|
||||
/* Unregister USB */
|
||||
smsusb_unregister();
|
||||
|
||||
printk(KERN_INFO "%s\n", __FUNCTION__);
|
||||
}
|
||||
|
||||
|
|
|
@ -508,7 +508,11 @@ extern smscore_buffer_t *smscore_getbuffer(smscore_device_t *coredev);
|
|||
extern void smscore_putbuffer(smscore_device_t *coredev, smscore_buffer_t *cb);
|
||||
|
||||
/* smsdvb.c */
|
||||
int smsdvb_hotplug(smscore_device_t *coredev, struct device* device, int arrival);
|
||||
void smsdvb_unregister_client(smsdvb_client_t* client);
|
||||
int smsdvb_register(void);
|
||||
void smsdvb_unregister(void);
|
||||
|
||||
/* smsusb.c */
|
||||
int smsusb_register(void);
|
||||
void smsusb_unregister(void);
|
||||
|
||||
#endif // __smscoreapi_h__
|
||||
|
|
|
@ -375,3 +375,30 @@ adapter_error:
|
|||
return rc;
|
||||
}
|
||||
|
||||
int smsdvb_register(void)
|
||||
{
|
||||
int rc;
|
||||
|
||||
INIT_LIST_HEAD(&g_smsdvb_clients);
|
||||
kmutex_init(&g_smsdvb_clientslock);
|
||||
|
||||
rc = smscore_register_hotplug(smsdvb_hotplug);
|
||||
|
||||
printk(KERN_INFO "%s\n", __FUNCTION__);
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
void smsdvb_unregister(void)
|
||||
{
|
||||
smscore_unregister_hotplug(smsdvb_hotplug);
|
||||
|
||||
kmutex_lock(&g_smsdvb_clientslock);
|
||||
|
||||
while (!list_empty(&g_smsdvb_clients))
|
||||
smsdvb_unregister_client((smsdvb_client_t*) g_smsdvb_clients.next);
|
||||
|
||||
kmutex_unlock(&g_smsdvb_clientslock);
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
#include <linux/kernel.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/usb.h>
|
||||
#include <linux/firmware.h>
|
||||
|
||||
|
@ -401,46 +400,21 @@ static struct usb_driver smsusb_driver = {
|
|||
.id_table = smsusb_id_table,
|
||||
};
|
||||
|
||||
extern struct list_head g_smsdvb_clients;
|
||||
kmutex_t g_smsdvb_clientslock;
|
||||
|
||||
int smsusb_module_init(void)
|
||||
int smsusb_register(void)
|
||||
{
|
||||
int rc = usb_register(&smsusb_driver);
|
||||
if (rc)
|
||||
printk(KERN_INFO "usb_register failed. Error number %d\n", rc);
|
||||
|
||||
/* Bring up the dvb componenets */
|
||||
INIT_LIST_HEAD(&g_smsdvb_clients);
|
||||
kmutex_init(&g_smsdvb_clientslock);
|
||||
|
||||
rc = smscore_register_hotplug(smsdvb_hotplug);
|
||||
|
||||
printk(KERN_INFO "%s\n", __FUNCTION__);
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
void smsusb_module_exit(void)
|
||||
void smsusb_unregister(void)
|
||||
{
|
||||
/* Tear down the DVB components */
|
||||
smscore_unregister_hotplug(smsdvb_hotplug);
|
||||
|
||||
kmutex_lock(&g_smsdvb_clientslock);
|
||||
|
||||
while (!list_empty(&g_smsdvb_clients))
|
||||
smsdvb_unregister_client((smsdvb_client_t*) g_smsdvb_clients.next);
|
||||
|
||||
kmutex_unlock(&g_smsdvb_clientslock);
|
||||
|
||||
/* Regular USB Cleanup */
|
||||
usb_deregister(&smsusb_driver);
|
||||
printk(KERN_INFO "%s\n", __FUNCTION__);
|
||||
}
|
||||
|
||||
module_init(smsusb_module_init);
|
||||
module_exit(smsusb_module_exit);
|
||||
|
||||
MODULE_DESCRIPTION("smsusb");
|
||||
MODULE_AUTHOR("Anatoly Greenblatt,,, (anatolyg@siano-ms.com)");
|
||||
MODULE_LICENSE("GPL");
|
||||
|
|
Loading…
Reference in a new issue