aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/media/dvb-frontends/dib8000.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/drivers/media/dvb-frontends/dib8000.c b/drivers/media/dvb-frontends/dib8000.c
index 77dac46bfcbf..57863d3fd1cf 100644
--- a/drivers/media/dvb-frontends/dib8000.c
+++ b/drivers/media/dvb-frontends/dib8000.c
@@ -2355,7 +2355,7 @@ static void dib8000_set_isdbt_common_channel(struct dib8000_state *state, u8 seq
2355 /* TSB or ISDBT ? apply it now */ 2355 /* TSB or ISDBT ? apply it now */
2356 if (c->isdbt_sb_mode) { 2356 if (c->isdbt_sb_mode) {
2357 dib8000_set_sb_channel(state); 2357 dib8000_set_sb_channel(state);
2358 if (c->isdbt_sb_subchannel != -1) 2358 if (c->isdbt_sb_subchannel < 14)
2359 init_prbs = dib8000_get_init_prbs(state, c->isdbt_sb_subchannel); 2359 init_prbs = dib8000_get_init_prbs(state, c->isdbt_sb_subchannel);
2360 else 2360 else
2361 init_prbs = 0; 2361 init_prbs = 0;
@@ -3102,7 +3102,9 @@ static int dib8000_tune(struct dvb_frontend *fe)
3102 dib8000_set_isdbt_loop_params(state, LOOP_TUNE_2); 3102 dib8000_set_isdbt_loop_params(state, LOOP_TUNE_2);
3103 3103
3104 /* mpeg will never lock on this condition because init_prbs is not set : search for it !*/ 3104 /* mpeg will never lock on this condition because init_prbs is not set : search for it !*/
3105 if (c->isdbt_sb_mode && c->isdbt_sb_subchannel == -1 && !state->differential_constellation) { 3105 if (c->isdbt_sb_mode
3106 && c->isdbt_sb_subchannel < 14
3107 && !state->differential_constellation) {
3106 state->subchannel = 0; 3108 state->subchannel = 0;
3107 *tune_state = CT_DEMOD_STEP_11; 3109 *tune_state = CT_DEMOD_STEP_11;
3108 } else { 3110 } else {
@@ -3146,14 +3148,18 @@ static int dib8000_tune(struct dvb_frontend *fe)
3146 locks = dib8000_read_lock(fe); 3148 locks = dib8000_read_lock(fe);
3147 if (locks&(1<<(7-state->longest_intlv_layer))) { /* mpeg lock : check the longest one */ 3149 if (locks&(1<<(7-state->longest_intlv_layer))) { /* mpeg lock : check the longest one */
3148 dprintk("Mpeg locks [ L0 : %d | L1 : %d | L2 : %d ]", (locks>>7)&0x1, (locks>>6)&0x1, (locks>>5)&0x1); 3150 dprintk("Mpeg locks [ L0 : %d | L1 : %d | L2 : %d ]", (locks>>7)&0x1, (locks>>6)&0x1, (locks>>5)&0x1);
3149 if (c->isdbt_sb_mode && c->isdbt_sb_subchannel == -1 && !state->differential_constellation) 3151 if (c->isdbt_sb_mode
3152 && c->isdbt_sb_subchannel < 14
3153 && !state->differential_constellation)
3150 /* signal to the upper layer, that there was a channel found and the parameters can be read */ 3154 /* signal to the upper layer, that there was a channel found and the parameters can be read */
3151 state->status = FE_STATUS_DEMOD_SUCCESS; 3155 state->status = FE_STATUS_DEMOD_SUCCESS;
3152 else 3156 else
3153 state->status = FE_STATUS_DATA_LOCKED; 3157 state->status = FE_STATUS_DATA_LOCKED;
3154 *tune_state = CT_DEMOD_STOP; 3158 *tune_state = CT_DEMOD_STOP;
3155 } else if (now > *timeout) { 3159 } else if (now > *timeout) {
3156 if (c->isdbt_sb_mode && c->isdbt_sb_subchannel == -1 && !state->differential_constellation) { /* continue to try init prbs autosearch */ 3160 if (c->isdbt_sb_mode
3161 && c->isdbt_sb_subchannel < 14
3162 && !state->differential_constellation) { /* continue to try init prbs autosearch */
3157 state->subchannel += 3; 3163 state->subchannel += 3;
3158 *tune_state = CT_DEMOD_STEP_11; 3164 *tune_state = CT_DEMOD_STEP_11;
3159 } else { /* we are done mpeg of the longest interleaver xas not locking but let's try if an other layer has locked in the same time */ 3165 } else { /* we are done mpeg of the longest interleaver xas not locking but let's try if an other layer has locked in the same time */