Skip to content

Commit

Permalink
V4L/DVB (12097): Implement reading uncorrected blocks for stv0900
Browse files Browse the repository at this point in the history
Signed-off-by: Abylay Ospan <aospan@netup.ru>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
  • Loading branch information
Abylay Ospan authored and Mauro Carvalho Chehab committed Jun 23, 2009
1 parent 68191ed commit ee1ebcf
Showing 1 changed file with 39 additions and 0 deletions.
39 changes: 39 additions & 0 deletions drivers/media/dvb/frontends/stv0900_core.c
Original file line number Diff line number Diff line change
Expand Up @@ -712,6 +712,44 @@ static s32 stv0900_carr_get_quality(struct dvb_frontend *fe,
return c_n;
}

static int stv0900_read_ucblocks(struct dvb_frontend *fe, u32 * ucblocks)
{
struct stv0900_state *state = fe->demodulator_priv;
struct stv0900_internal *i_params = state->internal;
enum fe_stv0900_demod_num demod = state->demod;
u8 err_val1, err_val0;
s32 err_field1, err_field0;
u32 header_err_val = 0;

*ucblocks = 0x0;
if (stv0900_get_standard(fe, demod) == STV0900_DVBS2_STANDARD) {
/* DVB-S2 delineator errors count */

/* retreiving number for errnous headers */
dmd_reg(err_field0, R0900_P1_BBFCRCKO0,
R0900_P2_BBFCRCKO0);
dmd_reg(err_field1, R0900_P1_BBFCRCKO1,
R0900_P2_BBFCRCKO1);

err_val1 = stv0900_read_reg(i_params, err_field1);
err_val0 = stv0900_read_reg(i_params, err_field0);
header_err_val = (err_val1<<8) | err_val0;

/* retreiving number for errnous packets */
dmd_reg(err_field0, R0900_P1_UPCRCKO0,
R0900_P2_UPCRCKO0);
dmd_reg(err_field1, R0900_P1_UPCRCKO1,
R0900_P2_UPCRCKO1);

err_val1 = stv0900_read_reg(i_params, err_field1);
err_val0 = stv0900_read_reg(i_params, err_field0);
*ucblocks = (err_val1<<8) | err_val0;
*ucblocks += header_err_val;
}

return 0;
}

static int stv0900_read_snr(struct dvb_frontend *fe, u16 *snr)
{
*snr = stv0900_carr_get_quality(fe,
Expand Down Expand Up @@ -1882,6 +1920,7 @@ static struct dvb_frontend_ops stv0900_ops = {
.read_ber = stv0900_read_ber,
.read_signal_strength = stv0900_read_signal_strength,
.read_snr = stv0900_read_snr,
.read_ucblocks = stv0900_read_ucblocks,
};

struct dvb_frontend *stv0900_attach(const struct stv0900_config *config,
Expand Down

0 comments on commit ee1ebcf

Please sign in to comment.