Loading drivers/media/mdtv/smscoreapi.c +13 −0 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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)) { Loading @@ -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__); } Loading drivers/media/mdtv/smscoreapi.h +6 −2 Original line number Diff line number Diff line Loading @@ -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__ drivers/media/mdtv/smsdvb.c +27 −0 Original line number Diff line number Diff line Loading @@ -375,3 +375,30 @@ int smsdvb_hotplug(smscore_device_t *coredev, struct device* device, int arrival 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); } drivers/media/mdtv/smsusb.c +2 −28 Original line number Diff line number Diff line #include <linux/kernel.h> #include <linux/init.h> #include <linux/module.h> #include <linux/usb.h> #include <linux/firmware.h> Loading Loading @@ -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
drivers/media/mdtv/smscoreapi.c +13 −0 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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)) { Loading @@ -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__); } Loading
drivers/media/mdtv/smscoreapi.h +6 −2 Original line number Diff line number Diff line Loading @@ -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__
drivers/media/mdtv/smsdvb.c +27 −0 Original line number Diff line number Diff line Loading @@ -375,3 +375,30 @@ int smsdvb_hotplug(smscore_device_t *coredev, struct device* device, int arrival 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); }
drivers/media/mdtv/smsusb.c +2 −28 Original line number Diff line number Diff line #include <linux/kernel.h> #include <linux/init.h> #include <linux/module.h> #include <linux/usb.h> #include <linux/firmware.h> Loading Loading @@ -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");