Browse Source

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>
Steven Toth 17 years ago
parent
commit
3dd2437870
3 changed files with 51 additions and 61 deletions
  1. 31 0
      drivers/media/mdtv/smscoreapi.h
  2. 0 61
      drivers/media/mdtv/smsdvb.c
  3. 20 0
      drivers/media/mdtv/smsusb.c

+ 31 - 0
drivers/media/mdtv/smscoreapi.h

@@ -1,6 +1,11 @@
 #ifndef __smscoreapi_h__
 #define __smscoreapi_h__
 
+#include "dmxdev.h"
+#include "dvbdev.h"
+#include "dvb_demux.h"
+#include "dvb_frontend.h"
+
 /* From sysksyms.h */
 
 #include <linux/version.h>
@@ -453,6 +458,28 @@ typedef struct SMSHOSTLIB_I2C_RES_S
 
 /* End types.h */
 
+typedef struct _smsdvb_client
+{
+	struct list_head entry;
+
+	smscore_device_t	*coredev;
+	smscore_client_t	*smsclient;
+
+	struct dvb_adapter	adapter;
+	struct dvb_demux	demux;
+	struct dmxdev		dmxdev;
+	struct dvb_frontend	frontend;
+
+	fe_status_t			fe_status;
+	int					fe_ber, fe_snr, fe_signal_strength;
+
+	struct completion	tune_done, stat_done;
+
+	// todo: save freq/band instead whole struct
+	struct dvb_frontend_parameters fe_params;
+
+} smsdvb_client_t;
+
 extern void smscore_registry_setmode(char *devpath, int mode);
 extern int smscore_registry_getmode(char *devpath);
 
@@ -480,4 +507,8 @@ extern int smscore_map_common_buffer(smscore_device_t *coredev, struct vm_area_s
 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);
+
 #endif // __smscoreapi_h__

+ 0 - 61
drivers/media/mdtv/smsdvb.c

@@ -1,37 +1,10 @@
 #include <linux/module.h>
 #include <linux/init.h>
 
-#include "dmxdev.h"
-#include "dvbdev.h"
-#include "dvb_demux.h"
-#include "dvb_frontend.h"
-
 #include "smscoreapi.h"
 
 DVB_DEFINE_MOD_OPT_ADAPTER_NR(adapter_nr);
 
-typedef struct _smsdvb_client
-{
-	struct list_head entry;
-
-	smscore_device_t	*coredev;
-	smscore_client_t	*smsclient;
-
-	struct dvb_adapter	adapter;
-	struct dvb_demux	demux;
-	struct dmxdev		dmxdev;
-	struct dvb_frontend	frontend;
-
-	fe_status_t			fe_status;
-	int					fe_ber, fe_snr, fe_signal_strength;
-
-	struct completion	tune_done, stat_done;
-
-	// todo: save freq/band instead whole struct
-	struct dvb_frontend_parameters fe_params;
-
-} smsdvb_client_t;
-
 struct list_head g_smsdvb_clients;
 kmutex_t g_smsdvb_clientslock;
 
@@ -402,37 +375,3 @@ adapter_error:
 	return rc;
 }
 
-int smsdvb_module_init(void)
-{
-	int rc;
-
-	INIT_LIST_HEAD(&g_smsdvb_clients);
-	kmutex_init(&g_smsdvb_clientslock);
-
-	rc = smscore_register_hotplug(smsdvb_hotplug);
-
-	printk(KERN_INFO "%s, rc %d\n", __FUNCTION__, rc);
-
-	return rc;
-}
-
-void smsdvb_module_exit(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);
-
-	printk(KERN_INFO "%s\n", __FUNCTION__);
-}
-
-module_init(smsdvb_module_init);
-module_exit(smsdvb_module_exit);
-
-MODULE_DESCRIPTION("smsdvb dvb-api module");
-MODULE_AUTHOR("Anatoly Greenblatt,,, (anatolyg@siano-ms.com)");
-MODULE_LICENSE("GPL");

+ 20 - 0
drivers/media/mdtv/smsusb.c

@@ -401,12 +401,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 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;
@@ -414,6 +423,17 @@ int smsusb_module_init(void)
 
 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);
+
+	/* Regular USB Cleanup */
 	usb_deregister(&smsusb_driver);
 	printk(KERN_INFO "%s\n", __FUNCTION__);
 }