The patch number 8268 was added via Michael Krufky <[EMAIL PROTECTED]>
to http://linuxtv.org/hg/v4l-dvb master development tree.

Kernel patches in this development tree may be modified to be backward
compatible with older kernels. Compatibility modifications will be
removed before inclusion into the mainstream Kernel

If anyone has any objections, please let us know by sending a message to:
        [EMAIL PROTECTED]

------

From: Steven Toth  <[EMAIL PROTECTED]>
sms1xxx: usb cleanup


Signed-off-by: Steven Toth <[EMAIL PROTECTED]>
Signed-off-by: Michael Krufky <[EMAIL PROTECTED]>


---

 linux/drivers/media/mdtv/smscoreapi.c |   13 ++++++++++
 linux/drivers/media/mdtv/smscoreapi.h |    8 ++++--
 linux/drivers/media/mdtv/smsdvb.c     |   27 +++++++++++++++++++++
 linux/drivers/media/mdtv/smsusb.c     |   32 ++------------------------
 4 files changed, 49 insertions(+), 31 deletions(-)

diff -r f6a13de00716 -r f69712717e92 linux/drivers/media/mdtv/smscoreapi.c
--- a/linux/drivers/media/mdtv/smscoreapi.c     Thu May 22 14:01:42 2008 -0400
+++ b/linux/drivers/media/mdtv/smscoreapi.c     Thu May 22 14:04:36 2008 -0400
@@ -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))
        {
@@ -1185,6 +1192,12 @@ void smscore_module_exit(void)
                kfree(entry);
        }
        kmutex_unlock(&g_smscore_registrylock);
+
+       /* DVB UnRegister */
+       smsdvb_unregister();
+
+       /* Unregister USB */
+       smsusb_unregister();
 
        printk(KERN_INFO "%s\n", __FUNCTION__);
 }
diff -r f6a13de00716 -r f69712717e92 linux/drivers/media/mdtv/smscoreapi.h
--- a/linux/drivers/media/mdtv/smscoreapi.h     Thu May 22 14:01:42 2008 -0400
+++ b/linux/drivers/media/mdtv/smscoreapi.h     Thu May 22 14:04:36 2008 -0400
@@ -523,7 +523,11 @@ extern void smscore_putbuffer(smscore_de
 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 -r f6a13de00716 -r f69712717e92 linux/drivers/media/mdtv/smsdvb.c
--- a/linux/drivers/media/mdtv/smsdvb.c Thu May 22 14:01:42 2008 -0400
+++ b/linux/drivers/media/mdtv/smsdvb.c Thu May 22 14:04:36 2008 -0400
@@ -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 -r f6a13de00716 -r f69712717e92 linux/drivers/media/mdtv/smsusb.c
--- a/linux/drivers/media/mdtv/smsusb.c Thu May 22 14:01:42 2008 -0400
+++ b/linux/drivers/media/mdtv/smsusb.c Thu May 22 14:04:36 2008 -0400
@@ -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)
-{
-       /* 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);
-
+void smsusb_unregister(void)
+{
        /* 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,,, ([EMAIL PROTECTED])");
-MODULE_LICENSE("GPL");


---

Patch is available at: 
http://linuxtv.org/hg/v4l-dvb/rev/f69712717e9214dad3963019bb538efebacdd6e0

_______________________________________________
linuxtv-commits mailing list
linuxtv-commits@linuxtv.org
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linuxtv-commits

Reply via email to