Commit 851a9091 authored by Michael Krufky's avatar Michael Krufky Committed by Mauro Carvalho Chehab

V4L/DVB (9738): sms1xxx: fix invalid unc readings

Add function smsdvb_read_ucblocks to report uncorrectable error counts.
Signed-off-by: default avatarMichael Krufky <mkrufky@linuxtv.org>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent 7a6fbed6
...@@ -381,7 +381,7 @@ struct smsdvb_client_t { ...@@ -381,7 +381,7 @@ struct smsdvb_client_t {
struct dvb_frontend frontend; struct dvb_frontend frontend;
fe_status_t fe_status; fe_status_t fe_status;
int fe_ber, fe_snr, fe_signal_strength; int fe_ber, fe_snr, fe_unc, fe_signal_strength;
struct completion tune_done, stat_done; struct completion tune_done, stat_done;
......
...@@ -60,6 +60,7 @@ static int smsdvb_onresponse(void *context, struct smscore_buffer_t *cb) ...@@ -60,6 +60,7 @@ static int smsdvb_onresponse(void *context, struct smscore_buffer_t *cb)
client->fe_snr = p->Stat.SNR; client->fe_snr = p->Stat.SNR;
client->fe_ber = p->Stat.BER; client->fe_ber = p->Stat.BER;
client->fe_unc = p->Stat.BERErrorCount;
if (p->Stat.InBandPwr < -95) if (p->Stat.InBandPwr < -95)
client->fe_signal_strength = 0; client->fe_signal_strength = 0;
...@@ -72,6 +73,7 @@ static int smsdvb_onresponse(void *context, struct smscore_buffer_t *cb) ...@@ -72,6 +73,7 @@ static int smsdvb_onresponse(void *context, struct smscore_buffer_t *cb)
client->fe_status = 0; client->fe_status = 0;
client->fe_snr = client->fe_snr =
client->fe_ber = client->fe_ber =
client->fe_unc =
client->fe_signal_strength = 0; client->fe_signal_strength = 0;
} }
...@@ -217,6 +219,18 @@ static int smsdvb_read_snr(struct dvb_frontend *fe, u16 *snr) ...@@ -217,6 +219,18 @@ static int smsdvb_read_snr(struct dvb_frontend *fe, u16 *snr)
return rc; return rc;
} }
static int smsdvb_read_ucblocks(struct dvb_frontend *fe, u32 *ucblocks)
{
struct smsdvb_client_t *client =
container_of(fe, struct smsdvb_client_t, frontend);
int rc = smsdvb_send_statistics_request(client);
if (!rc)
*ucblocks = client->fe_unc;
return rc;
}
static int smsdvb_get_tune_settings(struct dvb_frontend *fe, static int smsdvb_get_tune_settings(struct dvb_frontend *fe,
struct dvb_frontend_tune_settings *tune) struct dvb_frontend_tune_settings *tune)
{ {
...@@ -329,6 +343,7 @@ static struct dvb_frontend_ops smsdvb_fe_ops = { ...@@ -329,6 +343,7 @@ static struct dvb_frontend_ops smsdvb_fe_ops = {
.read_ber = smsdvb_read_ber, .read_ber = smsdvb_read_ber,
.read_signal_strength = smsdvb_read_signal_strength, .read_signal_strength = smsdvb_read_signal_strength,
.read_snr = smsdvb_read_snr, .read_snr = smsdvb_read_snr,
.read_ucblocks = smsdvb_read_ucblocks,
.init = smsdvb_init, .init = smsdvb_init,
.sleep = smsdvb_sleep, .sleep = smsdvb_sleep,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment