summaryrefslogtreecommitdiff
path: root/linux/drivers/media
diff options
context:
space:
mode:
Diffstat (limited to 'linux/drivers/media')
-rw-r--r--linux/drivers/media/dvb/frontends/stv0900_core.c43
-rw-r--r--linux/drivers/media/dvb/frontends/stv0900_init.h4
-rw-r--r--linux/drivers/media/video/cx23885/cimax2.c2
3 files changed, 33 insertions, 16 deletions
diff --git a/linux/drivers/media/dvb/frontends/stv0900_core.c b/linux/drivers/media/dvb/frontends/stv0900_core.c
index 1fde0e255..899b1e7ed 100644
--- a/linux/drivers/media/dvb/frontends/stv0900_core.c
+++ b/linux/drivers/media/dvb/frontends/stv0900_core.c
@@ -254,7 +254,7 @@ enum fe_stv0900_error stv0900_initialize(struct stv0900_internal *i_params)
}
msleep(3);
- for (i = 0; i < 180; i++)
+ for (i = 0; i < 182; i++)
stv0900_write_reg(i_params, STV0900_InitVal[i][0], STV0900_InitVal[i][1]);
if (stv0900_read_reg(i_params, R0900_MID) >= 0x20) {
@@ -660,13 +660,18 @@ static s32 stv0900_carr_get_quality(struct dvb_frontend *fe,
dprintk(KERN_INFO "%s\n", __func__);
- dmd_reg(lock_flag_field, F0900_P1_LOCK_DEFINITIF, F0900_P2_LOCK_DEFINITIF);
+ dmd_reg(lock_flag_field, F0900_P1_LOCK_DEFINITIF,
+ F0900_P2_LOCK_DEFINITIF);
if (stv0900_get_standard(fe, demod) == STV0900_DVBS2_STANDARD) {
- dmd_reg(noise_field1, F0900_P1_NOSPLHT_NORMED1, F0900_P2_NOSPLHT_NORMED1);
- dmd_reg(noise_field0, F0900_P1_NOSPLHT_NORMED0, F0900_P2_NOSPLHT_NORMED0);
+ dmd_reg(noise_field1, F0900_P1_NOSPLHT_NORMED1,
+ F0900_P2_NOSPLHT_NORMED1);
+ dmd_reg(noise_field0, F0900_P1_NOSPLHT_NORMED0,
+ F0900_P2_NOSPLHT_NORMED0);
} else {
- dmd_reg(noise_field1, F0900_P1_NOSDATAT_NORMED1, F0900_P2_NOSDATAT_NORMED1);
- dmd_reg(noise_field0, F0900_P1_NOSDATAT_NORMED0, F0900_P1_NOSDATAT_NORMED0);
+ dmd_reg(noise_field1, F0900_P1_NOSDATAT_NORMED1,
+ F0900_P2_NOSDATAT_NORMED1);
+ dmd_reg(noise_field0, F0900_P1_NOSDATAT_NORMED0,
+ F0900_P2_NOSDATAT_NORMED0);
}
if (stv0900_get_bits(i_params, lock_flag_field)) {
@@ -674,27 +679,34 @@ static s32 stv0900_carr_get_quality(struct dvb_frontend *fe,
regval = 0;
msleep(5);
for (i = 0; i < 16; i++) {
- regval += MAKEWORD(stv0900_get_bits(i_params, noise_field1),
- stv0900_get_bits(i_params, noise_field0));
+ regval += MAKEWORD(stv0900_get_bits(i_params,
+ noise_field1),
+ stv0900_get_bits(i_params,
+ noise_field0));
msleep(1);
}
regval /= 16;
imin = 0;
imax = lookup->size - 1;
- if (INRANGE(lookup->table[imin].regval, regval, lookup->table[imax].regval)) {
+ if (INRANGE(lookup->table[imin].regval,
+ regval,
+ lookup->table[imax].regval)) {
while ((imax - imin) > 1) {
i = (imax + imin) >> 1;
-
- if (INRANGE(lookup->table[imin].regval, regval, lookup->table[i].regval))
+ if (INRANGE(lookup->table[imin].regval,
+ regval,
+ lookup->table[i].regval))
imax = i;
else
imin = i;
}
c_n = ((regval - lookup->table[imin].regval)
- * (lookup->table[imax].realval - lookup->table[imin].realval)
- / (lookup->table[imax].regval - lookup->table[imin].regval))
+ * (lookup->table[imax].realval
+ - lookup->table[imin].realval)
+ / (lookup->table[imax].regval
+ - lookup->table[imin].regval))
+ lookup->table[imin].realval;
} else if (regval < lookup->table[imin].regval)
c_n = 1000;
@@ -706,7 +718,10 @@ static s32 stv0900_carr_get_quality(struct dvb_frontend *fe,
static int stv0900_read_snr(struct dvb_frontend *fe, u16 *snr)
{
- *snr = (16383 / 1030) * (30 + stv0900_carr_get_quality(fe, (const struct stv0900_table *)&stv0900_s2_cn));
+ *snr = stv0900_carr_get_quality(fe,
+ (const struct stv0900_table *)&stv0900_s2_cn);
+ *snr += 30;
+ *snr *= (16383 / 1030);
return 0;
}
diff --git a/linux/drivers/media/dvb/frontends/stv0900_init.h b/linux/drivers/media/dvb/frontends/stv0900_init.h
index fa8dbe197..ff388b47a 100644
--- a/linux/drivers/media/dvb/frontends/stv0900_init.h
+++ b/linux/drivers/media/dvb/frontends/stv0900_init.h
@@ -217,7 +217,7 @@ static const struct stv0900_short_frames_car_loop_optim FE_STV0900_S2ShortCarLoo
{ STV0900_32APSK, 0x1B, 0x1E, 0x1B, 0x1E, 0x1B, 0x1E, 0x3A, 0x3D, 0x2A, 0x2D }
};
-static const u16 STV0900_InitVal[180][2] = {
+static const u16 STV0900_InitVal[182][2] = {
{ R0900_OUTCFG , 0x00 },
{ R0900_MODECFG , 0xff },
{ R0900_AGCRF1CFG , 0x11 },
@@ -396,6 +396,8 @@ static const u16 STV0900_InitVal[180][2] = {
{ R0900_DATA72CFG , 0x52 },
{ R0900_P1_TSCFGM , 0xc0 },
{ R0900_P2_TSCFGM , 0xc0 },
+ { R0900_P1_TSCFGH , 0xe0 }, /* DVB-CI timings */
+ { R0900_P2_TSCFGH , 0xe0 }, /* DVB-CI timings */
{ R0900_P1_TSSPEED , 0x40 },
{ R0900_P2_TSSPEED , 0x40 },
};
diff --git a/linux/drivers/media/video/cx23885/cimax2.c b/linux/drivers/media/video/cx23885/cimax2.c
index 193d9b4cc..0e29f97f3 100644
--- a/linux/drivers/media/video/cx23885/cimax2.c
+++ b/linux/drivers/media/video/cx23885/cimax2.c
@@ -157,7 +157,7 @@ int netup_ci_get_mem(struct cx23885_dev *dev)
}
int netup_ci_op_cam(struct dvb_ca_en50221 *en50221, int slot,
- u8 flag, u8 read, u8 addr, u8 data)
+ u8 flag, u8 read, int addr, u8 data)
{
struct netup_ci_state *state = en50221->data;
struct cx23885_tsport *port = state->priv;