aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/dvb
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/media/dvb')
-rw-r--r--drivers/media/dvb/frontends/stv090x.c10
1 files changed, 4 insertions, 6 deletions
diff --git a/drivers/media/dvb/frontends/stv090x.c b/drivers/media/dvb/frontends/stv090x.c
index 004b774f561c..6c0378ddebc5 100644
--- a/drivers/media/dvb/frontends/stv090x.c
+++ b/drivers/media/dvb/frontends/stv090x.c
@@ -3163,7 +3163,6 @@ static int stv090x_read_status(struct dvb_frontend *fe, enum fe_status *status)
3163 struct stv090x_state *state = fe->demodulator_priv; 3163 struct stv090x_state *state = fe->demodulator_priv;
3164 u32 reg; 3164 u32 reg;
3165 u8 search_state; 3165 u8 search_state;
3166 int locked = 0;
3167 3166
3168 reg = STV090x_READ_DEMOD(state, DMDSTATE); 3167 reg = STV090x_READ_DEMOD(state, DMDSTATE);
3169 search_state = STV090x_GETFIELD_Px(reg, HEADER_MODE_FIELD); 3168 search_state = STV090x_GETFIELD_Px(reg, HEADER_MODE_FIELD);
@@ -3173,7 +3172,7 @@ static int stv090x_read_status(struct dvb_frontend *fe, enum fe_status *status)
3173 case 1: /* first PLH detected */ 3172 case 1: /* first PLH detected */
3174 default: 3173 default:
3175 dprintk(FE_DEBUG, 1, "Status: Unlocked (Searching ..)"); 3174 dprintk(FE_DEBUG, 1, "Status: Unlocked (Searching ..)");
3176 locked = 0; 3175 *status = 0;
3177 break; 3176 break;
3178 3177
3179 case 2: /* DVB-S2 mode */ 3178 case 2: /* DVB-S2 mode */
@@ -3182,7 +3181,6 @@ static int stv090x_read_status(struct dvb_frontend *fe, enum fe_status *status)
3182 if (STV090x_GETFIELD_Px(reg, LOCK_DEFINITIF_FIELD)) { 3181 if (STV090x_GETFIELD_Px(reg, LOCK_DEFINITIF_FIELD)) {
3183 reg = STV090x_READ_DEMOD(state, TSSTATUS); 3182 reg = STV090x_READ_DEMOD(state, TSSTATUS);
3184 if (STV090x_GETFIELD_Px(reg, TSFIFO_LINEOK_FIELD)) { 3183 if (STV090x_GETFIELD_Px(reg, TSFIFO_LINEOK_FIELD)) {
3185 locked = 1;
3186 *status = FE_HAS_CARRIER | FE_HAS_VITERBI | FE_HAS_SYNC | FE_HAS_LOCK; 3184 *status = FE_HAS_CARRIER | FE_HAS_VITERBI | FE_HAS_SYNC | FE_HAS_LOCK;
3187 } 3185 }
3188 } 3186 }
@@ -3196,7 +3194,6 @@ static int stv090x_read_status(struct dvb_frontend *fe, enum fe_status *status)
3196 if (STV090x_GETFIELD_Px(reg, LOCKEDVIT_FIELD)) { 3194 if (STV090x_GETFIELD_Px(reg, LOCKEDVIT_FIELD)) {
3197 reg = STV090x_READ_DEMOD(state, TSSTATUS); 3195 reg = STV090x_READ_DEMOD(state, TSSTATUS);
3198 if (STV090x_GETFIELD_Px(reg, TSFIFO_LINEOK_FIELD)) { 3196 if (STV090x_GETFIELD_Px(reg, TSFIFO_LINEOK_FIELD)) {
3199 locked = 1;
3200 *status = FE_HAS_CARRIER | FE_HAS_VITERBI | FE_HAS_SYNC | FE_HAS_LOCK; 3197 *status = FE_HAS_CARRIER | FE_HAS_VITERBI | FE_HAS_SYNC | FE_HAS_LOCK;
3201 } 3198 }
3202 } 3199 }
@@ -3204,7 +3201,7 @@ static int stv090x_read_status(struct dvb_frontend *fe, enum fe_status *status)
3204 break; 3201 break;
3205 } 3202 }
3206 3203
3207 return locked; 3204 return 0;
3208} 3205}
3209 3206
3210static int stv090x_read_per(struct dvb_frontend *fe, u32 *per) 3207static int stv090x_read_per(struct dvb_frontend *fe, u32 *per)
@@ -3215,7 +3212,8 @@ static int stv090x_read_per(struct dvb_frontend *fe, u32 *per)
3215 u32 reg, h, m, l; 3212 u32 reg, h, m, l;
3216 enum fe_status status; 3213 enum fe_status status;
3217 3214
3218 if (!stv090x_read_status(fe, &status)) { 3215 stv090x_read_status(fe, &status);
3216 if (!(status & FE_HAS_LOCK)) {
3219 *per = 1 << 23; /* Max PER */ 3217 *per = 1 << 23; /* Max PER */
3220 } else { 3218 } else {
3221 /* Counter 2 */ 3219 /* Counter 2 */