Jag har fixat mina kort. Samma kan säkert lösa problem med andra kort.
--------------
diff -ru v4l-dvb.org/linux/drivers/media/dvb/frontends/stv0297.c v4l-dvb/linux/drivers/media/dvb/frontends/stv0297.c
--- v4l-dvb.org/linux/drivers/media/dvb/frontends/stv0297.c 2008-07-26 18:14:23.000000000 +0200
+++ v4l-dvb/linux/drivers/media/dvb/frontends/stv0297.c 2008-07-26 18:16:38.000000000 +0200
@@ -463,7 +463,9 @@
stv0297_writereg(state, 0x82, 0x0);
/* set initial demodulation frequency */
- stv0297_set_initialdemodfreq(state, 7250);
+ stv0297_set_initialdemodfreq(state,
+ state->config->qam256_reduced_demodfreq &
+ (p->modulation == QAM_256) ? 6718 : 7250);
/* setup AGC */
stv0297_writereg_mask(state, 0x43, 0x10, 0x00);
diff -ru v4l-dvb.org/linux/drivers/media/dvb/frontends/stv0297.h v4l-dvb/linux/drivers/media/dvb/frontends/stv0297.h
--- v4l-dvb.org/linux/drivers/media/dvb/frontends/stv0297.h 2008-07-26 18:14:23.000000000 +0200
+++ v4l-dvb/linux/drivers/media/dvb/frontends/stv0297.h 2008-07-26 18:16:38.000000000 +0200
@@ -40,6 +40,11 @@
/* set to 1 if the device requires an i2c STOP during reading */
u8 stop_during_read:1;
+
+ /* set to 1 if the device requires reduced demodulation frequency
+ * for QAM256.
+ */
+ u8 qam256_reduced_demodfreq:1;
};
#if defined(CONFIG_DVB_STV0297) || (defined(CONFIG_DVB_STV0297_MODULE) && defined(MODULE))
diff -ru v4l-dvb.org/linux/drivers/media/dvb/ttpci/av7110.c v4l-dvb/linux/drivers/media/dvb/ttpci/av7110.c
--- v4l-dvb.org/linux/drivers/media/dvb/ttpci/av7110.c 2008-07-26 18:14:23.000000000 +0200
+++ v4l-dvb/linux/drivers/media/dvb/ttpci/av7110.c 2008-07-26 18:16:38.000000000 +0200
@@ -1874,6 +1874,7 @@
.inittab = nexusca_stv0297_inittab,
.invert = 1,
.stop_during_read = 1,
+ .qam256_reduced_demodfreq = 1,
};
diff -ru v4l-dvb.org/linux/drivers/media/dvb/ttpci/budget-ci.c v4l-dvb/linux/drivers/media/dvb/ttpci/budget-ci.c
--- v4l-dvb.org/linux/drivers/media/dvb/ttpci/budget-ci.c 2008-07-26 18:14:23.000000000 +0200
+++ v4l-dvb/linux/drivers/media/dvb/ttpci/budget-ci.c 2008-07-26 18:16:38.000000000 +0200
@@ -1061,6 +1061,7 @@
.inittab = dvbc_philips_tdm1316l_inittab,
.invert = 0,
.stop_during_read = 1,
+ .qam256_reduced_demodfreq = 0,
};
static struct tda10023_config tda10023_config = {
diff -ru v4l-dvb.org/linux/drivers/media/dvb/ttusb-budget/dvb-ttusb-budget.c v4l-dvb/linux/drivers/media/dvb/ttusb-budget/dvb-ttusb-budget.c
--- v4l-dvb.org/linux/drivers/media/dvb/ttusb-budget/dvb-ttusb-budget.c 2008-07-26 18:14:23.000000000 +0200
+++ v4l-dvb/linux/drivers/media/dvb/ttusb-budget/dvb-ttusb-budget.c 2008-07-26 18:16:38.000000000 +0200
@@ -1572,6 +1572,7 @@
.demod_address = 0x1c,
.inittab = dvbc_philips_tdm1316l_inittab,
.invert = 0,
+ .qam256_reduced_demodfreq = 0,
};
static void frontend_init(struct ttusb* ttusb)
--------------------
Det är
dessa futtiga rader som gör skillnaden. Motsvarande finns säkert för andra frontends.
diff -ru v4l-dvb.org/linux/drivers/media/dvb/frontends/stv0297.c v4l-dvb/linux/drivers/media/dvb/frontends/stv0297.c
--- v4l-dvb.org/linux/drivers/media/dvb/frontends/stv0297.c 2008-07-26 18:14:23.000000000 +0200
+++ v4l-dvb/linux/drivers/media/dvb/frontends/stv0297.c 2008-07-26 18:16:38.000000000 +0200
@@ -463,7 +463,9 @@
stv0297_writereg(state, 0x82, 0x0);
/* set initial demodulation frequency */
- stv0297_set_initialdemodfreq(state, 7250);
+ stv0297_set_initialdemodfreq(state,
+ state->config->qam256_reduced_demodfreq &
+ (p->modulation == QAM_256) ? 6718 : 7250); /* setup AGC */
Mvh Fredrik
Redigerat av shade73a, 14 juni 2012 - 13:41.