* [PATCH 8/17]DVB:Siano drivers - Hide smscore structure from all modules which are not the core device.
@ 2011-09-20 10:31 Doron Cohen
2011-09-23 22:29 ` Mauro Carvalho Chehab
0 siblings, 1 reply; 2+ messages in thread
From: Doron Cohen @ 2011-09-20 10:31 UTC (permalink / raw)
To: linux-media
Hi,
This patch makes smscore structure hidden from all other module by
making it's pointer NULL.
Thanks,
Doron Cohen
--------------
>From b003e8ec2893b7d6e68720abeb490fba38904e59 Mon Sep 17 00:00:00 2001
From: Doron Cohen <doronc@siano-ms.com>
Date: Mon, 19 Sep 2011 14:16:02 +0300
Subject: [PATCH 11/21] Hide smscore data by making pointer NULL with
unkniown fields.
---
drivers/media/dvb/siano/smsdvb.c | 65
+++++++++++++++++++++-----------------
1 files changed, 36 insertions(+), 29 deletions(-)
diff --git a/drivers/media/dvb/siano/smsdvb.c
b/drivers/media/dvb/siano/smsdvb.c
index 62dd37c..2695d3a 100644
--- a/drivers/media/dvb/siano/smsdvb.c
+++ b/drivers/media/dvb/siano/smsdvb.c
@@ -37,7 +37,7 @@ DVB_DEFINE_MOD_OPT_ADAPTER_NR(adapter_nr);
struct smsdvb_client_t {
struct list_head entry;
- struct smscore_device_t *coredev;
+ void *coredev;
struct smscore_client_t *smsclient;
struct dvb_adapter adapter;
@@ -73,15 +73,15 @@ enum SMS_DVB3_EVENTS {
static struct list_head g_smsdvb_clients;
static struct mutex g_smsdvb_clientslock;
-static int sms_dbg;
-module_param_named(debug, sms_dbg, int, 0644);
+int sms_debug;
+module_param_named(debug, sms_debug, int, 0644);
MODULE_PARM_DESC(debug, "set debug level (info=1, adv=2 (or-able))");
/* Events that may come from DVB v3 adapter */
static void sms_board_dvb3_event(struct smsdvb_client_t *client,
enum SMS_DVB3_EVENTS event) {
- struct smscore_device_t *coredev = client->coredev;
+ void *coredev = client->coredev;
switch (event) {
case DVB3_EVENT_INIT:
sms_debug("DVB3_EVENT_INIT");
@@ -656,45 +656,43 @@ static int smsdvb_isdbt_set_frontend(struct
dvb_frontend *fe,
struct dtv_frontend_properties *c = &fe->dtv_property_cache;
struct smsdvb_client_t *client =
container_of(fe, struct smsdvb_client_t, frontend);
-
- struct {
- struct SmsMsgHdr_S Msg;
- u32 Data[4];
- } Msg;
+ struct SmsMsgData4Args_S Msg;
fe->dtv_property_cache.delivery_system = SYS_ISDBT;
- Msg.Msg.msgSrcId = DVBT_BDA_CONTROL_MSG_ID;
- Msg.Msg.msgDstId = HIF_TASK;
- Msg.Msg.msgFlags = 0;
- Msg.Msg.msgType = MSG_SMS_ISDBT_TUNE_REQ;
- Msg.Msg.msgLength = sizeof(Msg);
-
+ Msg.xMsgHeader.msgSrcId = DVBT_BDA_CONTROL_MSG_ID;
+ Msg.xMsgHeader.msgDstId = HIF_TASK;
+ Msg.xMsgHeader.msgFlags = 0;
+ Msg.xMsgHeader.msgType = MSG_SMS_ISDBT_TUNE_REQ;
+ Msg.xMsgHeader.msgLength = sizeof(Msg);
+ Msg.msgData[0] = p->frequency;
if (c->isdbt_sb_segment_idx == -1)
c->isdbt_sb_segment_idx = 0;
+ sms_info("freq %d band %d",
+ p->frequency, p->u.ofdm.bandwidth);
switch (c->isdbt_sb_segment_count) {
case 3:
- Msg.Data[1] = BW_ISDBT_3SEG;
+ Msg.msgData[1] = BW_ISDBT_3SEG;
break;
case 1:
- Msg.Data[1] = BW_ISDBT_1SEG;
+ Msg.msgData[1] = BW_ISDBT_1SEG;
break;
case 0: /* AUTO */
switch (c->bandwidth_hz / 1000000) {
case 8:
case 7:
c->isdbt_sb_segment_count = 3;
- Msg.Data[1] = BW_ISDBT_3SEG;
+ Msg.msgData[1] = BW_ISDBT_3SEG;
break;
case 6:
c->isdbt_sb_segment_count = 1;
- Msg.Data[1] = BW_ISDBT_1SEG;
+ Msg.msgData[1] = BW_ISDBT_1SEG;
break;
default: /* Assumes 6 MHZ bw */
c->isdbt_sb_segment_count = 1;
c->bandwidth_hz = 6000;
- Msg.Data[1] = BW_ISDBT_1SEG;
+ Msg.msgData[1] = BW_ISDBT_1SEG;
break;
}
break;
@@ -702,10 +700,9 @@ static int smsdvb_isdbt_set_frontend(struct
dvb_frontend *fe,
sms_info("Segment count %d not supported",
c->isdbt_sb_segment_count);
return -EINVAL;
}
-
- Msg.Data[0] = c->frequency;
- Msg.Data[2] = 12000000;
- Msg.Data[3] = c->isdbt_sb_segment_idx;
+ Msg.msgData[0] = c->frequency;
+ Msg.msgData[2] = 12000000;
+ Msg.msgData[3] = c->isdbt_sb_segment_idx;
sms_info("%s: freq %d segwidth %d segindex %d\n", __func__,
c->frequency, c->isdbt_sb_segment_count,
@@ -782,7 +779,7 @@ static struct dvb_frontend_ops smsdvb_fe_ops = {
.info = {
.name = "Siano Mobile Digital MDTV Receiver",
.type = FE_OFDM,
- .frequency_min = 44250000,
+ .frequency_min = 164000000,
.frequency_max = 867250000,
.frequency_stepsize = 250000,
.caps = FE_CAN_INVERSION_AUTO |
@@ -811,16 +808,24 @@ static struct dvb_frontend_ops smsdvb_fe_ops = {
.sleep = smsdvb_sleep,
};
-static int smsdvb_hotplug(void *coredev,
- struct device *device, int arrival)
+static int smsdvb_hotplug(void *coredev, struct device *device, int
arrival)
{
struct smsclient_params_t params;
struct smsdvb_client_t *client;
int rc;
+ int mode = smscore_get_device_mode(coredev);
/* device removal handled by onremove callback */
if (!arrival)
return 0;
+
+ if ( (mode != SMSHOSTLIB_DEVMD_DVBT_BDA) &&
+ (mode != SMSHOSTLIB_DEVMD_ISDBT_BDA) ) {
+ sms_err("SMS Device mode is not set for "
+ "DVB operation.");
+ return 0;
+ }
+
client = kzalloc(sizeof(struct smsdvb_client_t), GFP_KERNEL);
if (!client) {
sms_err("kmalloc() failed");
@@ -949,6 +954,8 @@ static void __exit smsdvb_module_exit(void)
module_init(smsdvb_module_init);
module_exit(smsdvb_module_exit);
-MODULE_DESCRIPTION("SMS DVB subsystem adaptation module");
-MODULE_AUTHOR("Siano Mobile Silicon, Inc. (uris@siano-ms.com)");
+#define MODULE_VERSION_STRING "Siano DVB module for LinuxTV interface
"VERSION_STRING
+
+MODULE_DESCRIPTION(MODULE_VERSION_STRING);
+MODULE_AUTHOR(MODULE_AUTHOR_STRING);
MODULE_LICENSE("GPL");
--
1.7.4.1
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH 8/17]DVB:Siano drivers - Hide smscore structure from all modules which are not the core device.
2011-09-20 10:31 [PATCH 8/17]DVB:Siano drivers - Hide smscore structure from all modules which are not the core device Doron Cohen
@ 2011-09-23 22:29 ` Mauro Carvalho Chehab
0 siblings, 0 replies; 2+ messages in thread
From: Mauro Carvalho Chehab @ 2011-09-23 22:29 UTC (permalink / raw)
To: doronc; +Cc: linux-media
Em 20-09-2011 07:31, Doron Cohen escreveu:
> Hi,
> This patch makes smscore structure hidden from all other module by
> making it's pointer NULL.
>
> Thanks,
> Doron Cohen
>
> --------------
>
>
>>From b003e8ec2893b7d6e68720abeb490fba38904e59 Mon Sep 17 00:00:00 2001
> From: Doron Cohen <doronc@siano-ms.com>
> Date: Mon, 19 Sep 2011 14:16:02 +0300
> Subject: [PATCH 11/21] Hide smscore data by making pointer NULL with
> unkniown fields.
Please better explain this patch at the description: why to hide smscore data here?
>
> ---
> drivers/media/dvb/siano/smsdvb.c | 65
> +++++++++++++++++++++-----------------
> 1 files changed, 36 insertions(+), 29 deletions(-)
>
> diff --git a/drivers/media/dvb/siano/smsdvb.c
> b/drivers/media/dvb/siano/smsdvb.c
> index 62dd37c..2695d3a 100644
> --- a/drivers/media/dvb/siano/smsdvb.c
> +++ b/drivers/media/dvb/siano/smsdvb.c
> @@ -37,7 +37,7 @@ DVB_DEFINE_MOD_OPT_ADAPTER_NR(adapter_nr);
> struct smsdvb_client_t {
> struct list_head entry;
>
> - struct smscore_device_t *coredev;
> + void *coredev;
> struct smscore_client_t *smsclient;
>
> struct dvb_adapter adapter;
> @@ -73,15 +73,15 @@ enum SMS_DVB3_EVENTS {
> static struct list_head g_smsdvb_clients;
> static struct mutex g_smsdvb_clientslock;
>
> -static int sms_dbg;
> -module_param_named(debug, sms_dbg, int, 0644);
> +int sms_debug;
> +module_param_named(debug, sms_debug, int, 0644);
> MODULE_PARM_DESC(debug, "set debug level (info=1, adv=2 (or-able))");
>
> /* Events that may come from DVB v3 adapter */
> static void sms_board_dvb3_event(struct smsdvb_client_t *client,
> enum SMS_DVB3_EVENTS event) {
>
> - struct smscore_device_t *coredev = client->coredev;
> + void *coredev = client->coredev;
> switch (event) {
> case DVB3_EVENT_INIT:
> sms_debug("DVB3_EVENT_INIT");
> @@ -656,45 +656,43 @@ static int smsdvb_isdbt_set_frontend(struct
> dvb_frontend *fe,
> struct dtv_frontend_properties *c = &fe->dtv_property_cache;
> struct smsdvb_client_t *client =
> container_of(fe, struct smsdvb_client_t, frontend);
> -
> - struct {
> - struct SmsMsgHdr_S Msg;
> - u32 Data[4];
> - } Msg;
> + struct SmsMsgData4Args_S Msg;
>
> fe->dtv_property_cache.delivery_system = SYS_ISDBT;
>
> - Msg.Msg.msgSrcId = DVBT_BDA_CONTROL_MSG_ID;
> - Msg.Msg.msgDstId = HIF_TASK;
> - Msg.Msg.msgFlags = 0;
> - Msg.Msg.msgType = MSG_SMS_ISDBT_TUNE_REQ;
> - Msg.Msg.msgLength = sizeof(Msg);
> -
> + Msg.xMsgHeader.msgSrcId = DVBT_BDA_CONTROL_MSG_ID;
> + Msg.xMsgHeader.msgDstId = HIF_TASK;
> + Msg.xMsgHeader.msgFlags = 0;
> + Msg.xMsgHeader.msgType = MSG_SMS_ISDBT_TUNE_REQ;
> + Msg.xMsgHeader.msgLength = sizeof(Msg);
> + Msg.msgData[0] = p->frequency;
> if (c->isdbt_sb_segment_idx == -1)
> c->isdbt_sb_segment_idx = 0;
> + sms_info("freq %d band %d",
> + p->frequency, p->u.ofdm.bandwidth);
>
> switch (c->isdbt_sb_segment_count) {
> case 3:
> - Msg.Data[1] = BW_ISDBT_3SEG;
> + Msg.msgData[1] = BW_ISDBT_3SEG;
> break;
> case 1:
> - Msg.Data[1] = BW_ISDBT_1SEG;
> + Msg.msgData[1] = BW_ISDBT_1SEG;
> break;
> case 0: /* AUTO */
> switch (c->bandwidth_hz / 1000000) {
> case 8:
> case 7:
> c->isdbt_sb_segment_count = 3;
> - Msg.Data[1] = BW_ISDBT_3SEG;
> + Msg.msgData[1] = BW_ISDBT_3SEG;
> break;
> case 6:
> c->isdbt_sb_segment_count = 1;
> - Msg.Data[1] = BW_ISDBT_1SEG;
> + Msg.msgData[1] = BW_ISDBT_1SEG;
> break;
> default: /* Assumes 6 MHZ bw */
> c->isdbt_sb_segment_count = 1;
> c->bandwidth_hz = 6000;
> - Msg.Data[1] = BW_ISDBT_1SEG;
> + Msg.msgData[1] = BW_ISDBT_1SEG;
> break;
> }
> break;
> @@ -702,10 +700,9 @@ static int smsdvb_isdbt_set_frontend(struct
> dvb_frontend *fe,
> sms_info("Segment count %d not supported",
> c->isdbt_sb_segment_count);
> return -EINVAL;
> }
> -
> - Msg.Data[0] = c->frequency;
> - Msg.Data[2] = 12000000;
> - Msg.Data[3] = c->isdbt_sb_segment_idx;
> + Msg.msgData[0] = c->frequency;
> + Msg.msgData[2] = 12000000;
> + Msg.msgData[3] = c->isdbt_sb_segment_idx;
>
> sms_info("%s: freq %d segwidth %d segindex %d\n", __func__,
> c->frequency, c->isdbt_sb_segment_count,
> @@ -782,7 +779,7 @@ static struct dvb_frontend_ops smsdvb_fe_ops = {
> .info = {
> .name = "Siano Mobile Digital MDTV Receiver",
> .type = FE_OFDM,
> - .frequency_min = 44250000,
> + .frequency_min = 164000000,
> .frequency_max = 867250000,
> .frequency_stepsize = 250000,
> .caps = FE_CAN_INVERSION_AUTO |
> @@ -811,16 +808,24 @@ static struct dvb_frontend_ops smsdvb_fe_ops = {
> .sleep = smsdvb_sleep,
> };
>
> -static int smsdvb_hotplug(void *coredev,
> - struct device *device, int arrival)
> +static int smsdvb_hotplug(void *coredev, struct device *device, int
> arrival)
> {
> struct smsclient_params_t params;
> struct smsdvb_client_t *client;
> int rc;
> + int mode = smscore_get_device_mode(coredev);
>
> /* device removal handled by onremove callback */
> if (!arrival)
> return 0;
> +
> + if ( (mode != SMSHOSTLIB_DEVMD_DVBT_BDA) &&
> + (mode != SMSHOSTLIB_DEVMD_ISDBT_BDA) ) {
> + sms_err("SMS Device mode is not set for "
> + "DVB operation.");
> + return 0;
> + }
> +
Hmm... this looks weird to me: why to only enable the two above modes?
> client = kzalloc(sizeof(struct smsdvb_client_t), GFP_KERNEL);
> if (!client) {
> sms_err("kmalloc() failed");
> @@ -949,6 +954,8 @@ static void __exit smsdvb_module_exit(void)
> module_init(smsdvb_module_init);
> module_exit(smsdvb_module_exit);
>
> -MODULE_DESCRIPTION("SMS DVB subsystem adaptation module");
> -MODULE_AUTHOR("Siano Mobile Silicon, Inc. (uris@siano-ms.com)");
> +#define MODULE_VERSION_STRING "Siano DVB module for LinuxTV interface
> "VERSION_STRING
> +
> +MODULE_DESCRIPTION(MODULE_VERSION_STRING);
> +MODULE_AUTHOR(MODULE_AUTHOR_STRING);
> MODULE_LICENSE("GPL");
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2011-09-23 22:29 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-09-20 10:31 [PATCH 8/17]DVB:Siano drivers - Hide smscore structure from all modules which are not the core device Doron Cohen
2011-09-23 22:29 ` Mauro Carvalho Chehab
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).