ras2 wrote:
On 2003-01-28 at 17:00:40 +0100, Gerd Knorr <kraxel@xxxxxxxxxxx> wrote:
Hmm. Looks like the tuner module hasn't found the tuner chip.
Not surprising you can't tune other stations (neither radio nor TV).
Does that mean I've selected the wrong tuner type?
No. It means the bus scan hasn't found a chip, i.e. the tuner chip
doesn't answer i2c reads for some reason. You can load the i2c-algo-bit
module with bit_scan=1, that should print a i2c bus scan to the syslog
at if you insmod bttv.
[...]
tuner: probing bt848 #0 i2c adapter [id=0x10005]
tuner: chip found @ 0xc0
Huh? This time the tuner is present?
It's been mentioned here before; if you reboot (or boot Windows and
then boot to Linux), bttv usually doesn't find the tuner. It only
works if you boot to Linux after a power-off. It's a tad annoying.
Windows doesn't have a problem with reboots, so I don't think it's
a problem with the mt2032 chip as such.,
Try attached patch and report if the warmboot problem is fixed or not ?
Probably Windows switches off MT2032 (which gets hot) and Linux only
enables it when it starts tuning.
But then it's too late!
-
Gunther
diff -ur bttv-0.7.103/driver/bttv-cards.c bttv07103/driver/bttv-cards.c
--- bttv-0.7.103/driver/bttv-cards.c Thu Jan 16 15:15:57 2003
+++ bttv07103/driver/bttv-cards.c Tue Jan 28 21:43:34 2003
@@ -1854,6 +1854,11 @@
btv->tuner_type = 33;
if (autoload)
request_module("tda9887");
+ // Fixme: Here is a race between tda9887.o and tuner.o
+ // (when tuner.o is already loaded it misses the tuner, because
+ // it is only enabled by setting a GPIO bit in tda9887.)
+ // Note: Windows seems to disable the tuner (power-saving?), so
+ // this is only an issue for warmbooting. (?)
bttv_call_i2c_clients(btv,AUDC_CONFIG_PINNACLE,&id);
}
}
diff -ur bttv-0.7.103/driver/tda9887.c bttv07103/driver/tda9887.c
--- bttv-0.7.103/driver/tda9887.c Fri Jan 3 18:22:50 2003
+++ bttv07103/driver/tda9887.c Tue Jan 28 21:45:17 2003
@@ -29,7 +29,7 @@
I2C_CLIENT_INSMOD;
/* insmod options */
-static int debug = 0;
+static int debug = 1; // enabled for the lifetime of this test patch
static char *pal = "b";
static char *secam = "l";
MODULE_PARM(debug,"i");
@@ -118,6 +118,7 @@
#define cAgcOutON 0x80 // bit e7
#define cAgcOutOFF 0x00 // bit e7
+
static int tda9887_miro(struct tda9887 *t)
{
int rc;
@@ -269,6 +270,18 @@
return 0;
}
+// Fix for "tuner not found" after warmboot from windows on Pinnacle PCTV with MT2032
+static int tda9887_miro_enable_mt2032(struct tda9887 *t)
+{
+ printk("tda9887_miro: switch on mt2032 tuner via OP2.\n");
+ t->tvnorm=VIDEO_MODE_PAL;
+ t->radio=0;
+ tda9887_miro(t);
+
+ return 0;
+}
+
+
/* ---------------------------------------------------------------------- */
#if 0
@@ -419,6 +432,7 @@
int *i = arg;
t->pinnacle_id = *i;
+ tda9887_miro_enable_mt2032(t);
break;
}
/* --- v4l ioctls --- */