summaryrefslogtreecommitdiff
path: root/linux/drivers/media/mdtv
diff options
context:
space:
mode:
authorMichael Krufky <mkrufky@linuxtv.org>2008-05-22 14:04:36 -0400
committerMichael Krufky <mkrufky@linuxtv.org>2008-05-22 14:04:36 -0400
commit9ec225c1fc9e6dc062f30aceb9df8c6cee086bf2 (patch)
treeda4a0231dd8b886594b566a245b3d624e8aabc8a /linux/drivers/media/mdtv
parent75598b2f3a5ddf1c210e0d332ffbdac2acb87354 (diff)
downloadmediapointer-dvb-s2-9ec225c1fc9e6dc062f30aceb9df8c6cee086bf2.tar.gz
mediapointer-dvb-s2-9ec225c1fc9e6dc062f30aceb9df8c6cee086bf2.tar.bz2
sms1xxx: usb cleanup
From: Steven Toth <stoth@hauppauge.com> Signed-off-by: Steven Toth <stoth@hauppauge.com> Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
Diffstat (limited to 'linux/drivers/media/mdtv')
-rw-r--r--linux/drivers/media/mdtv/smscoreapi.c13
-rw-r--r--linux/drivers/media/mdtv/smscoreapi.h8
-rw-r--r--linux/drivers/media/mdtv/smsdvb.c27
-rw-r--r--linux/drivers/media/mdtv/smsusb.c30
4 files changed, 48 insertions, 30 deletions
diff --git a/linux/drivers/media/mdtv/smscoreapi.c b/linux/drivers/media/mdtv/smscoreapi.c
index 1f4171b1e..3e00c8b5a 100644
--- a/linux/drivers/media/mdtv/smscoreapi.c
+++ b/linux/drivers/media/mdtv/smscoreapi.c
@@ -1159,6 +1159,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;
@@ -1166,6 +1172,7 @@ int smscore_module_init(void)
void smscore_module_exit(void)
{
+
kmutex_lock(&g_smscore_deviceslock);
while (!list_empty(&g_smscore_notifyees))
{
@@ -1186,6 +1193,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__);
}
diff --git a/linux/drivers/media/mdtv/smscoreapi.h b/linux/drivers/media/mdtv/smscoreapi.h
index 166379262..c6b5cad85 100644
--- a/linux/drivers/media/mdtv/smscoreapi.h
+++ b/linux/drivers/media/mdtv/smscoreapi.h
@@ -523,7 +523,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__
diff --git a/linux/drivers/media/mdtv/smsdvb.c b/linux/drivers/media/mdtv/smsdvb.c
index 166f218ca..7a1e6c33b 100644
--- a/linux/drivers/media/mdtv/smsdvb.c
+++ b/linux/drivers/media/mdtv/smsdvb.c
@@ -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);
+
+}
+
diff --git a/linux/drivers/media/mdtv/smsusb.c b/linux/drivers/media/mdtv/smsusb.c
index df2b82801..0d94cc45f 100644
--- a/linux/drivers/media/mdtv/smsusb.c
+++ b/linux/drivers/media/mdtv/smsusb.c
@@ -1,6 +1,5 @@
#include <linux/kernel.h>
#include <linux/init.h>
-#include <linux/module.h>
#include <linux/usb.h>
#include <linux/firmware.h>
@@ -405,46 +404,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");