summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/media/dvb-frontends/si2168.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/drivers/media/dvb-frontends/si2168.c b/drivers/media/dvb-frontends/si2168.c
index 5fbb6c12b766..680ba06c29fb 100644
--- a/drivers/media/dvb-frontends/si2168.c
+++ b/drivers/media/dvb-frontends/si2168.c
@@ -178,6 +178,28 @@ static int si2168_read_status(struct dvb_frontend *fe, enum fe_status *status)
178 c->post_bit_count.stat[0].scale = FE_SCALE_NOT_AVAILABLE; 178 c->post_bit_count.stat[0].scale = FE_SCALE_NOT_AVAILABLE;
179 } 179 }
180 180
181 /* UCB */
182 if (*status & FE_HAS_SYNC) {
183 memcpy(cmd.args, "\x84\x01", 2);
184 cmd.wlen = 2;
185 cmd.rlen = 3;
186 ret = si2168_cmd_execute(client, &cmd);
187 if (ret)
188 goto err;
189
190 utmp1 = cmd.args[2] << 8 | cmd.args[1] << 0;
191 dev_dbg(&client->dev, "block_error=%u\n", utmp1);
192
193 /* Sometimes firmware returns bogus value */
194 if (utmp1 == 0xffff)
195 utmp1 = 0;
196
197 c->block_error.stat[0].scale = FE_SCALE_COUNTER;
198 c->block_error.stat[0].uvalue += utmp1;
199 } else {
200 c->block_error.stat[0].scale = FE_SCALE_NOT_AVAILABLE;
201 }
202
181 return 0; 203 return 0;
182err: 204err:
183 dev_dbg(&client->dev, "failed=%d\n", ret); 205 dev_dbg(&client->dev, "failed=%d\n", ret);
@@ -535,6 +557,8 @@ warm:
535 c->post_bit_error.stat[0].scale = FE_SCALE_NOT_AVAILABLE; 557 c->post_bit_error.stat[0].scale = FE_SCALE_NOT_AVAILABLE;
536 c->post_bit_count.len = 1; 558 c->post_bit_count.len = 1;
537 c->post_bit_count.stat[0].scale = FE_SCALE_NOT_AVAILABLE; 559 c->post_bit_count.stat[0].scale = FE_SCALE_NOT_AVAILABLE;
560 c->block_error.len = 1;
561 c->block_error.stat[0].scale = FE_SCALE_NOT_AVAILABLE;
538 562
539 dev->active = true; 563 dev->active = true;
540 564