diff options
Diffstat (limited to 'drivers/media/dvb-frontends/mb86a16.c')
-rw-r--r-- | drivers/media/dvb-frontends/mb86a16.c | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/drivers/media/dvb-frontends/mb86a16.c b/drivers/media/dvb-frontends/mb86a16.c index dfe322eccaa1..2969ba6ed9e1 100644 --- a/drivers/media/dvb-frontends/mb86a16.c +++ b/drivers/media/dvb-frontends/mb86a16.c @@ -24,7 +24,7 @@ #include <linux/moduleparam.h> #include <linux/slab.h> -#include "dvb_frontend.h" +#include <media/dvb_frontend.h> #include "mb86a16.h" #include "mb86a16_priv.h" @@ -635,6 +635,7 @@ static int sync_chk(struct mb86a16_state *state, return sync; err: dprintk(verbose, MB86A16_ERROR, 1, "I2C transfer error"); + *VIRM = 0; return -EREMOTEIO; } @@ -1676,15 +1677,15 @@ static int mb86a16_read_ber(struct dvb_frontend *fe, u32 *ber) * the deinterleaver output. * monitored BER is expressed as a 20 bit output in total */ - ber_rst = ber_mon >> 3; + ber_rst = (ber_mon >> 3) & 0x03; *ber = (((ber_msb << 8) | ber_mid) << 8) | ber_lsb; if (ber_rst == 0) timer = 12500000; - if (ber_rst == 1) + else if (ber_rst == 1) timer = 25000000; - if (ber_rst == 2) + else if (ber_rst == 2) timer = 50000000; - if (ber_rst == 3) + else /* ber_rst == 3 */ timer = 100000000; *ber /= timer; @@ -1696,11 +1697,11 @@ static int mb86a16_read_ber(struct dvb_frontend *fe, u32 *ber) * QPSK demodulator output. * monitored BER is expressed as a 24 bit output in total */ - ber_tim = ber_mon >> 1; + ber_tim = (ber_mon >> 1) & 0x01; *ber = (((ber_msb << 8) | ber_mid) << 8) | ber_lsb; if (ber_tim == 0) timer = 16; - if (ber_tim == 1) + else /* ber_tim == 1 */ timer = 24; *ber /= 2 ^ timer; |