aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/dvb/frontends
diff options
context:
space:
mode:
authorMalcolm Priestley <tvboxspy@gmail.com>2012-01-03 04:28:32 -0500
committerMauro Carvalho Chehab <mchehab@redhat.com>2012-01-06 10:08:02 -0500
commit82a05014733b24827fc246c3498e0b703b11211f (patch)
tree3d9a0524b2c95ac378cb106f613a724eba9c04bd /drivers/media/dvb/frontends
parent245900c4a7a7d23c2e5b2b64b70770debcac5814 (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.c21
-rw-r--r--drivers/media/dvb/frontends/it913x-fe.h10
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 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
71static int it913x_read_reg(struct it913x_fe_state *state, 72static 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
563static int it913x_fe_read_ber(struct dvb_frontend *fe, u32 *ber) 564static 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
569static int it913x_fe_read_ucblocks(struct dvb_frontend *fe, u32 *ucblocks) 576static 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
575static int it913x_fe_get_frontend(struct dvb_frontend *fe) 588static int it913x_fe_get_frontend(struct dvb_frontend *fe)
@@ -959,5 +972,5 @@ static struct dvb_frontend_ops it913x_fe_ofdm_ops = {
959 972
960MODULE_DESCRIPTION("it913x Frontend and it9137 tuner"); 973MODULE_DESCRIPTION("it913x Frontend and it9137 tuner");
961MODULE_AUTHOR("Malcolm Priestley tvboxspy@gmail.com"); 974MODULE_AUTHOR("Malcolm Priestley tvboxspy@gmail.com");
962MODULE_VERSION("1.12"); 975MODULE_VERSION("1.13");
963MODULE_LICENSE("GPL"); 976MODULE_LICENSE("GPL");
diff --git a/drivers/media/dvb/frontends/it913x-fe.h b/drivers/media/dvb/frontends/it913x-fe.h
index 5ee3e2f1416..c4a908e354e 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