mirror of
https://github.com/torvalds/linux.git
synced 2024-11-02 18:21:49 +00:00
V4L/DVB (9738): sms1xxx: fix invalid unc readings
Add function smsdvb_read_ucblocks to report uncorrectable error counts. Signed-off-by: Michael Krufky <mkrufky@linuxtv.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
parent
7a6fbed650
commit
851a909143
@ -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)
|
|||||||
|
|
||||||
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)
|
|||||||
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)
|
|||||||
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 = {
|
|||||||
.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,
|
||||||
|
Loading…
Reference in New Issue
Block a user