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 <dor...@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. (u...@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");

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to