diff options
author | Mauro Carvalho Chehab <m.chehab@samsung.com> | 2014-03-02 09:01:11 -0500 |
---|---|---|
committer | Mauro Carvalho Chehab <m.chehab@samsung.com> | 2014-03-04 12:42:00 -0500 |
commit | 41b5cc0c919e8b61732f01cedd666bd9794fa9b0 (patch) | |
tree | 98e668e48402bb54896c3b9e898045a01111853c /drivers/media/dvb-frontends | |
parent | bf9b94ab924e460459682af8cb3423e8118f9c16 (diff) |
[media] drx-j: Properly initialize mpeg struct before using it
The cfg_mpeg_output has more fields than what it is initialized
when the code is called. Be sure to initialize everything before
use, in order to avoid random behaviors.
Acked-by: Devin Heitmueller <dheitmueller@kernellabs.com>
Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
Diffstat (limited to 'drivers/media/dvb-frontends')
-rw-r--r-- | drivers/media/dvb-frontends/drx39xyj/drxj.c | 56 |
1 files changed, 11 insertions, 45 deletions
diff --git a/drivers/media/dvb-frontends/drx39xyj/drxj.c b/drivers/media/dvb-frontends/drx39xyj/drxj.c index f7c57c971f8f..8437fd5b8c91 100644 --- a/drivers/media/dvb-frontends/drx39xyj/drxj.c +++ b/drivers/media/dvb-frontends/drx39xyj/drxj.c | |||
@@ -2954,20 +2954,6 @@ ctrl_set_cfg_mpeg_output(struct drx_demod_instance *demod, struct drx_cfg_mpeg_o | |||
2954 | case DRX_STANDARD_ITU_C: | 2954 | case DRX_STANDARD_ITU_C: |
2955 | break; | 2955 | break; |
2956 | default: | 2956 | default: |
2957 | /* not an MPEG producing std, just store MPEG cfg */ | ||
2958 | common_attr->mpeg_cfg.enable_mpeg_output = | ||
2959 | cfg_data->enable_mpeg_output; | ||
2960 | common_attr->mpeg_cfg.insert_rs_byte = | ||
2961 | cfg_data->insert_rs_byte; | ||
2962 | common_attr->mpeg_cfg.enable_parallel = | ||
2963 | cfg_data->enable_parallel; | ||
2964 | common_attr->mpeg_cfg.invert_data = cfg_data->invert_data; | ||
2965 | common_attr->mpeg_cfg.invert_err = cfg_data->invert_err; | ||
2966 | common_attr->mpeg_cfg.invert_str = cfg_data->invert_str; | ||
2967 | common_attr->mpeg_cfg.invert_val = cfg_data->invert_val; | ||
2968 | common_attr->mpeg_cfg.invert_clk = cfg_data->invert_clk; | ||
2969 | common_attr->mpeg_cfg.static_clk = cfg_data->static_clk; | ||
2970 | common_attr->mpeg_cfg.bitrate = cfg_data->bitrate; | ||
2971 | return 0; | 2957 | return 0; |
2972 | } | 2958 | } |
2973 | 2959 | ||
@@ -3215,6 +3201,7 @@ ctrl_set_cfg_mpeg_output(struct drx_demod_instance *demod, struct drx_cfg_mpeg_o | |||
3215 | else | 3201 | else |
3216 | fec_oc_reg_ipr_invert &= (~(FEC_OC_IPR_INVERT_MCLK__M)); | 3202 | fec_oc_reg_ipr_invert &= (~(FEC_OC_IPR_INVERT_MCLK__M)); |
3217 | 3203 | ||
3204 | |||
3218 | if (cfg_data->static_clk == true) { /* Static mode */ | 3205 | if (cfg_data->static_clk == true) { /* Static mode */ |
3219 | u32 dto_rate = 0; | 3206 | u32 dto_rate = 0; |
3220 | u32 bit_rate = 0; | 3207 | u32 bit_rate = 0; |
@@ -3546,15 +3533,6 @@ ctrl_set_cfg_mpeg_output(struct drx_demod_instance *demod, struct drx_cfg_mpeg_o | |||
3546 | 3533 | ||
3547 | /* save values for restore after re-acquire */ | 3534 | /* save values for restore after re-acquire */ |
3548 | common_attr->mpeg_cfg.enable_mpeg_output = cfg_data->enable_mpeg_output; | 3535 | common_attr->mpeg_cfg.enable_mpeg_output = cfg_data->enable_mpeg_output; |
3549 | common_attr->mpeg_cfg.insert_rs_byte = cfg_data->insert_rs_byte; | ||
3550 | common_attr->mpeg_cfg.enable_parallel = cfg_data->enable_parallel; | ||
3551 | common_attr->mpeg_cfg.invert_data = cfg_data->invert_data; | ||
3552 | common_attr->mpeg_cfg.invert_err = cfg_data->invert_err; | ||
3553 | common_attr->mpeg_cfg.invert_str = cfg_data->invert_str; | ||
3554 | common_attr->mpeg_cfg.invert_val = cfg_data->invert_val; | ||
3555 | common_attr->mpeg_cfg.invert_clk = cfg_data->invert_clk; | ||
3556 | common_attr->mpeg_cfg.static_clk = cfg_data->static_clk; | ||
3557 | common_attr->mpeg_cfg.bitrate = cfg_data->bitrate; | ||
3558 | 3536 | ||
3559 | return 0; | 3537 | return 0; |
3560 | rw_error: | 3538 | rw_error: |
@@ -7644,17 +7622,10 @@ static int set_vsb(struct drx_demod_instance *demod) | |||
7644 | /* TODO: move to set_standard after hardware reset value problem is solved */ | 7622 | /* TODO: move to set_standard after hardware reset value problem is solved */ |
7645 | /* Configure initial MPEG output */ | 7623 | /* Configure initial MPEG output */ |
7646 | struct drx_cfg_mpeg_output cfg_mpeg_output; | 7624 | struct drx_cfg_mpeg_output cfg_mpeg_output; |
7625 | |||
7626 | memcpy(&cfg_mpeg_output, &common_attr->mpeg_cfg, sizeof(cfg_mpeg_output)); | ||
7647 | cfg_mpeg_output.enable_mpeg_output = true; | 7627 | cfg_mpeg_output.enable_mpeg_output = true; |
7648 | cfg_mpeg_output.insert_rs_byte = common_attr->mpeg_cfg.insert_rs_byte; | 7628 | |
7649 | cfg_mpeg_output.enable_parallel = | ||
7650 | common_attr->mpeg_cfg.enable_parallel; | ||
7651 | cfg_mpeg_output.invert_data = common_attr->mpeg_cfg.invert_data; | ||
7652 | cfg_mpeg_output.invert_err = common_attr->mpeg_cfg.invert_err; | ||
7653 | cfg_mpeg_output.invert_str = common_attr->mpeg_cfg.invert_str; | ||
7654 | cfg_mpeg_output.invert_val = common_attr->mpeg_cfg.invert_val; | ||
7655 | cfg_mpeg_output.invert_clk = common_attr->mpeg_cfg.invert_clk; | ||
7656 | cfg_mpeg_output.static_clk = common_attr->mpeg_cfg.static_clk; | ||
7657 | cfg_mpeg_output.bitrate = common_attr->mpeg_cfg.bitrate; | ||
7658 | rc = ctrl_set_cfg_mpeg_output(demod, &cfg_mpeg_output); | 7629 | rc = ctrl_set_cfg_mpeg_output(demod, &cfg_mpeg_output); |
7659 | if (rc != 0) { | 7630 | if (rc != 0) { |
7660 | pr_err("error %d\n", rc); | 7631 | pr_err("error %d\n", rc); |
@@ -8034,6 +8005,7 @@ static int power_down_qam(struct drx_demod_instance *demod, bool primary) | |||
8034 | int rc; | 8005 | int rc; |
8035 | struct i2c_device_addr *dev_addr = demod->my_i2c_dev_addr; | 8006 | struct i2c_device_addr *dev_addr = demod->my_i2c_dev_addr; |
8036 | struct drx_cfg_mpeg_output cfg_mpeg_output; | 8007 | struct drx_cfg_mpeg_output cfg_mpeg_output; |
8008 | struct drx_common_attr *common_attr = demod->my_common_attr; | ||
8037 | u16 cmd_result = 0; | 8009 | u16 cmd_result = 0; |
8038 | 8010 | ||
8039 | /* | 8011 | /* |
@@ -8103,7 +8075,9 @@ static int power_down_qam(struct drx_demod_instance *demod, bool primary) | |||
8103 | } | 8075 | } |
8104 | } | 8076 | } |
8105 | 8077 | ||
8078 | memcpy(&cfg_mpeg_output, &common_attr->mpeg_cfg, sizeof(cfg_mpeg_output)); | ||
8106 | cfg_mpeg_output.enable_mpeg_output = false; | 8079 | cfg_mpeg_output.enable_mpeg_output = false; |
8080 | |||
8107 | rc = ctrl_set_cfg_mpeg_output(demod, &cfg_mpeg_output); | 8081 | rc = ctrl_set_cfg_mpeg_output(demod, &cfg_mpeg_output); |
8108 | if (rc != 0) { | 8082 | if (rc != 0) { |
8109 | pr_err("error %d\n", rc); | 8083 | pr_err("error %d\n", rc); |
@@ -10283,19 +10257,9 @@ set_qam(struct drx_demod_instance *demod, | |||
10283 | /* Configure initial MPEG output */ | 10257 | /* Configure initial MPEG output */ |
10284 | struct drx_cfg_mpeg_output cfg_mpeg_output; | 10258 | struct drx_cfg_mpeg_output cfg_mpeg_output; |
10285 | 10259 | ||
10260 | memcpy(&cfg_mpeg_output, &common_attr->mpeg_cfg, sizeof(cfg_mpeg_output)); | ||
10286 | cfg_mpeg_output.enable_mpeg_output = true; | 10261 | cfg_mpeg_output.enable_mpeg_output = true; |
10287 | cfg_mpeg_output.insert_rs_byte = | 10262 | |
10288 | common_attr->mpeg_cfg.insert_rs_byte; | ||
10289 | cfg_mpeg_output.enable_parallel = | ||
10290 | common_attr->mpeg_cfg.enable_parallel; | ||
10291 | cfg_mpeg_output.invert_data = | ||
10292 | common_attr->mpeg_cfg.invert_data; | ||
10293 | cfg_mpeg_output.invert_err = common_attr->mpeg_cfg.invert_err; | ||
10294 | cfg_mpeg_output.invert_str = common_attr->mpeg_cfg.invert_str; | ||
10295 | cfg_mpeg_output.invert_val = common_attr->mpeg_cfg.invert_val; | ||
10296 | cfg_mpeg_output.invert_clk = common_attr->mpeg_cfg.invert_clk; | ||
10297 | cfg_mpeg_output.static_clk = common_attr->mpeg_cfg.static_clk; | ||
10298 | cfg_mpeg_output.bitrate = common_attr->mpeg_cfg.bitrate; | ||
10299 | rc = ctrl_set_cfg_mpeg_output(demod, &cfg_mpeg_output); | 10263 | rc = ctrl_set_cfg_mpeg_output(demod, &cfg_mpeg_output); |
10300 | if (rc != 0) { | 10264 | if (rc != 0) { |
10301 | pr_err("error %d\n", rc); | 10265 | pr_err("error %d\n", rc); |
@@ -19930,7 +19894,9 @@ int drxj_open(struct drx_demod_instance *demod) | |||
19930 | } | 19894 | } |
19931 | 19895 | ||
19932 | /* disable mpegoutput pins */ | 19896 | /* disable mpegoutput pins */ |
19897 | memcpy(&cfg_mpeg_output, &common_attr->mpeg_cfg, sizeof(cfg_mpeg_output)); | ||
19933 | cfg_mpeg_output.enable_mpeg_output = false; | 19898 | cfg_mpeg_output.enable_mpeg_output = false; |
19899 | |||
19934 | rc = ctrl_set_cfg_mpeg_output(demod, &cfg_mpeg_output); | 19900 | rc = ctrl_set_cfg_mpeg_output(demod, &cfg_mpeg_output); |
19935 | if (rc != 0) { | 19901 | if (rc != 0) { |
19936 | pr_err("error %d\n", rc); | 19902 | pr_err("error %d\n", rc); |