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 | |
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')
-rw-r--r-- | drivers/media/dvb/frontends/it913x-fe.c | 21 | ||||
-rw-r--r-- | drivers/media/dvb/frontends/it913x-fe.h | 10 |
2 files changed, 27 insertions, 4 deletions
diff --git a/drivers/media/dvb/frontends/it913x-fe.c b/drivers/media/dvb/frontends/it913x-fe.c index 29cb47eb2f8e..7290801eac63 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"); |
diff --git a/drivers/media/dvb/frontends/it913x-fe.h b/drivers/media/dvb/frontends/it913x-fe.h index 5ee3e2f14165..c4a908e354e0 100644 --- a/drivers/media/dvb/frontends/it913x-fe.h +++ b/drivers/media/dvb/frontends/it913x-fe.h | |||
@@ -148,6 +148,16 @@ static inline struct dvb_frontend *it913x_fe_attach( | |||
148 | #define COEFF_1_2048 0x0001 | 148 | #define COEFF_1_2048 0x0001 |
149 | #define XTAL_CLK 0x0025 | 149 | #define XTAL_CLK 0x0025 |
150 | #define BFS_FCW 0x0029 | 150 | #define BFS_FCW 0x0029 |
151 | |||
152 | /* Error Regs */ | ||
153 | #define RSD_ABORT_PKT_LSB 0x0032 | ||
154 | #define RSD_ABORT_PKT_MSB 0x0033 | ||
155 | #define RSD_BIT_ERR_0_7 0x0034 | ||
156 | #define RSD_BIT_ERR_8_15 0x0035 | ||
157 | #define RSD_BIT_ERR_23_16 0x0036 | ||
158 | #define RSD_BIT_COUNT_LSB 0x0037 | ||
159 | #define RSD_BIT_COUNT_MSB 0x0038 | ||
160 | |||
151 | #define TPSD_LOCK 0x003c | 161 | #define TPSD_LOCK 0x003c |
152 | #define TRAINING_MODE 0x0040 | 162 | #define TRAINING_MODE 0x0040 |
153 | #define ADC_X_2 0x0045 | 163 | #define ADC_X_2 0x0045 |