diff options
author | Malcolm Priestley <tvboxspy@gmail.com> | 2012-01-03 04:28:32 -0500 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2012-01-06 10:08:02 -0500 |
commit | 82a05014733b24827fc246c3498e0b703b11211f (patch) | |
tree | 3d9a0524b2c95ac378cb106f613a724eba9c04bd /drivers/media/dvb/frontends/it913x-fe.c | |
parent | 245900c4a7a7d23c2e5b2b64b70770debcac5814 (diff) |
[media] it913x-fe ver 1.13 add BER and UNC monitoring
Add BER monitoring with Pre-Viterbi error rate.
Add UCBLOCKS based on Aborted packets.
Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media/dvb/frontends/it913x-fe.c')
-rw-r--r-- | drivers/media/dvb/frontends/it913x-fe.c | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/drivers/media/dvb/frontends/it913x-fe.c b/drivers/media/dvb/frontends/it913x-fe.c index 29cb47eb2f8..7290801eac6 100644 --- a/drivers/media/dvb/frontends/it913x-fe.c +++ b/drivers/media/dvb/frontends/it913x-fe.c | |||
@@ -66,6 +66,7 @@ struct it913x_fe_state { | |||
66 | u8 tun_fdiv; | 66 | u8 tun_fdiv; |
67 | u8 tun_clk_mode; | 67 | u8 tun_clk_mode; |
68 | u32 tun_fn_min; | 68 | u32 tun_fn_min; |
69 | u32 ucblocks; | ||
69 | }; | 70 | }; |
70 | 71 | ||
71 | static int it913x_read_reg(struct it913x_fe_state *state, | 72 | static int it913x_read_reg(struct it913x_fe_state *state, |
@@ -562,14 +563,26 @@ static int it913x_fe_read_snr(struct dvb_frontend *fe, u16 *snr) | |||
562 | 563 | ||
563 | static int it913x_fe_read_ber(struct dvb_frontend *fe, u32 *ber) | 564 | static int it913x_fe_read_ber(struct dvb_frontend *fe, u32 *ber) |
564 | { | 565 | { |
565 | *ber = 0; | 566 | struct it913x_fe_state *state = fe->demodulator_priv; |
567 | int ret; | ||
568 | u8 reg[5]; | ||
569 | /* Read Aborted Packets and Pre-Viterbi error rate 5 bytes */ | ||
570 | ret = it913x_read_reg(state, RSD_ABORT_PKT_LSB, reg, sizeof(reg)); | ||
571 | state->ucblocks += (u32)(reg[1] << 8) | reg[0]; | ||
572 | *ber = (u32)(reg[4] << 16) | (reg[3] << 8) | reg[2]; | ||
566 | return 0; | 573 | return 0; |
567 | } | 574 | } |
568 | 575 | ||
569 | static int it913x_fe_read_ucblocks(struct dvb_frontend *fe, u32 *ucblocks) | 576 | static int it913x_fe_read_ucblocks(struct dvb_frontend *fe, u32 *ucblocks) |
570 | { | 577 | { |
571 | *ucblocks = 0; | 578 | struct it913x_fe_state *state = fe->demodulator_priv; |
572 | return 0; | 579 | int ret; |
580 | u8 reg[2]; | ||
581 | /* Aborted Packets */ | ||
582 | ret = it913x_read_reg(state, RSD_ABORT_PKT_LSB, reg, sizeof(reg)); | ||
583 | state->ucblocks += (u32)(reg[1] << 8) | reg[0]; | ||
584 | *ucblocks = state->ucblocks; | ||
585 | return ret; | ||
573 | } | 586 | } |
574 | 587 | ||
575 | static int it913x_fe_get_frontend(struct dvb_frontend *fe) | 588 | static int it913x_fe_get_frontend(struct dvb_frontend *fe) |
@@ -959,5 +972,5 @@ static struct dvb_frontend_ops it913x_fe_ofdm_ops = { | |||
959 | 972 | ||
960 | MODULE_DESCRIPTION("it913x Frontend and it9137 tuner"); | 973 | MODULE_DESCRIPTION("it913x Frontend and it9137 tuner"); |
961 | MODULE_AUTHOR("Malcolm Priestley tvboxspy@gmail.com"); | 974 | MODULE_AUTHOR("Malcolm Priestley tvboxspy@gmail.com"); |
962 | MODULE_VERSION("1.12"); | 975 | MODULE_VERSION("1.13"); |
963 | MODULE_LICENSE("GPL"); | 976 | MODULE_LICENSE("GPL"); |