aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/dvb/frontends/stb0899_drv.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/media/dvb/frontends/stb0899_drv.c')
-rw-r--r--drivers/media/dvb/frontends/stb0899_drv.c22
1 files changed, 6 insertions, 16 deletions
diff --git a/drivers/media/dvb/frontends/stb0899_drv.c b/drivers/media/dvb/frontends/stb0899_drv.c
index 8b0dc74a3298..5d7f8a9b451b 100644
--- a/drivers/media/dvb/frontends/stb0899_drv.c
+++ b/drivers/media/dvb/frontends/stb0899_drv.c
@@ -1129,7 +1129,6 @@ static int stb0899_read_ber(struct dvb_frontend *fe, u32 *ber)
1129 struct stb0899_internal *internal = &state->internal; 1129 struct stb0899_internal *internal = &state->internal;
1130 1130
1131 u8 lsb, msb; 1131 u8 lsb, msb;
1132 u32 i;
1133 1132
1134 *ber = 0; 1133 *ber = 0;
1135 1134
@@ -1137,14 +1136,9 @@ static int stb0899_read_ber(struct dvb_frontend *fe, u32 *ber)
1137 case SYS_DVBS: 1136 case SYS_DVBS:
1138 case SYS_DSS: 1137 case SYS_DSS:
1139 if (internal->lock) { 1138 if (internal->lock) {
1140 /* average 5 BER values */ 1139 lsb = stb0899_read_reg(state, STB0899_ECNT1L);
1141 for (i = 0; i < 5; i++) { 1140 msb = stb0899_read_reg(state, STB0899_ECNT1M);
1142 msleep(100); 1141 *ber = MAKEWORD16(msb, lsb);
1143 lsb = stb0899_read_reg(state, STB0899_ECNT1L);
1144 msb = stb0899_read_reg(state, STB0899_ECNT1M);
1145 *ber += MAKEWORD16(msb, lsb);
1146 }
1147 *ber /= 5;
1148 /* Viterbi Check */ 1142 /* Viterbi Check */
1149 if (STB0899_GETFIELD(VSTATUS_PRFVIT, internal->v_status)) { 1143 if (STB0899_GETFIELD(VSTATUS_PRFVIT, internal->v_status)) {
1150 /* Error Rate */ 1144 /* Error Rate */
@@ -1157,13 +1151,9 @@ static int stb0899_read_ber(struct dvb_frontend *fe, u32 *ber)
1157 break; 1151 break;
1158 case SYS_DVBS2: 1152 case SYS_DVBS2:
1159 if (internal->lock) { 1153 if (internal->lock) {
1160 /* Average 5 PER values */ 1154 lsb = stb0899_read_reg(state, STB0899_ECNT1L);
1161 for (i = 0; i < 5; i++) { 1155 msb = stb0899_read_reg(state, STB0899_ECNT1M);
1162 msleep(100); 1156 *ber = MAKEWORD16(msb, lsb);
1163 lsb = stb0899_read_reg(state, STB0899_ECNT1L);
1164 msb = stb0899_read_reg(state, STB0899_ECNT1M);
1165 *ber += MAKEWORD16(msb, lsb);
1166 }
1167 /* ber = ber * 10 ^ 7 */ 1157 /* ber = ber * 10 ^ 7 */
1168 *ber *= 10000000; 1158 *ber *= 10000000;
1169 *ber /= (-1 + (1 << (4 + 2 * STB0899_GETFIELD(NOE, internal->err_ctrl)))); 1159 *ber /= (-1 + (1 << (4 + 2 * STB0899_GETFIELD(NOE, internal->err_ctrl))));