diff options
author | Michael Krufky <mkrufky@linuxtv.org> | 2008-11-22 12:56:37 -0500 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2008-12-29 14:53:41 -0500 |
commit | 851a90914346b9a3b1afc0ae9c1ed2eb3dae9b5a (patch) | |
tree | 6229d96d0866a24d838bc5c135a3e91591082ab4 /drivers/media/dvb/siano/smsdvb.c | |
parent | 7a6fbed650cc329ba7094af3278deaea0c80bd7b (diff) |
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>
Diffstat (limited to 'drivers/media/dvb/siano/smsdvb.c')
-rw-r--r-- | drivers/media/dvb/siano/smsdvb.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/drivers/media/dvb/siano/smsdvb.c b/drivers/media/dvb/siano/smsdvb.c index 54144a374946..adf00b989c12 100644 --- a/drivers/media/dvb/siano/smsdvb.c +++ b/drivers/media/dvb/siano/smsdvb.c | |||
@@ -60,6 +60,7 @@ static int smsdvb_onresponse(void *context, struct smscore_buffer_t *cb) | |||
60 | 60 | ||
61 | client->fe_snr = p->Stat.SNR; | 61 | client->fe_snr = p->Stat.SNR; |
62 | client->fe_ber = p->Stat.BER; | 62 | client->fe_ber = p->Stat.BER; |
63 | client->fe_unc = p->Stat.BERErrorCount; | ||
63 | 64 | ||
64 | if (p->Stat.InBandPwr < -95) | 65 | if (p->Stat.InBandPwr < -95) |
65 | client->fe_signal_strength = 0; | 66 | client->fe_signal_strength = 0; |
@@ -72,6 +73,7 @@ static int smsdvb_onresponse(void *context, struct smscore_buffer_t *cb) | |||
72 | client->fe_status = 0; | 73 | client->fe_status = 0; |
73 | client->fe_snr = | 74 | client->fe_snr = |
74 | client->fe_ber = | 75 | client->fe_ber = |
76 | client->fe_unc = | ||
75 | client->fe_signal_strength = 0; | 77 | client->fe_signal_strength = 0; |
76 | } | 78 | } |
77 | 79 | ||
@@ -217,6 +219,18 @@ static int smsdvb_read_snr(struct dvb_frontend *fe, u16 *snr) | |||
217 | return rc; | 219 | return rc; |
218 | } | 220 | } |
219 | 221 | ||
222 | static int smsdvb_read_ucblocks(struct dvb_frontend *fe, u32 *ucblocks) | ||
223 | { | ||
224 | struct smsdvb_client_t *client = | ||
225 | container_of(fe, struct smsdvb_client_t, frontend); | ||
226 | int rc = smsdvb_send_statistics_request(client); | ||
227 | |||
228 | if (!rc) | ||
229 | *ucblocks = client->fe_unc; | ||
230 | |||
231 | return rc; | ||
232 | } | ||
233 | |||
220 | static int smsdvb_get_tune_settings(struct dvb_frontend *fe, | 234 | static int smsdvb_get_tune_settings(struct dvb_frontend *fe, |
221 | struct dvb_frontend_tune_settings *tune) | 235 | struct dvb_frontend_tune_settings *tune) |
222 | { | 236 | { |
@@ -329,6 +343,7 @@ static struct dvb_frontend_ops smsdvb_fe_ops = { | |||
329 | .read_ber = smsdvb_read_ber, | 343 | .read_ber = smsdvb_read_ber, |
330 | .read_signal_strength = smsdvb_read_signal_strength, | 344 | .read_signal_strength = smsdvb_read_signal_strength, |
331 | .read_snr = smsdvb_read_snr, | 345 | .read_snr = smsdvb_read_snr, |
346 | .read_ucblocks = smsdvb_read_ucblocks, | ||
332 | 347 | ||
333 | .init = smsdvb_init, | 348 | .init = smsdvb_init, |
334 | .sleep = smsdvb_sleep, | 349 | .sleep = smsdvb_sleep, |