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>
This commit is contained in:
Родитель
7a19598c75
Коммит
3dd2437870
|
@ -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__
|
||||
|
|
|
@ -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");
|
||||
|
|
|
@ -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__);
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче