[linux-dvb] FusionHDTV 5 Lite tuner type not set

Michael Krufky mkrufky at m1k.net
Sun Oct 30 22:14:30 CET 2005


Jate wrote:

> This morning, I changed to a vanilla 2.6.14 kernel, and analog started 
> working with tvtime. The dvb driver did not detect, however.
>
> I then tried the patch, but analog stopped working, and dvd was still 
> not detected.
>
> Ricardo: I am going to try your patch to bttv-i2c on the current CVS next.
>
>
Jate-

2.6.14 has analog support for FusionHDTV5 Lite, but dvb support is only 
in cvs.

Ricardo has sent another patch to try (attached)

If you can, please join us in #v4l chat room at irc.freenode.net

We are trying to fix this right now, the attached patch should work 
against current cvs.  All we need is confirmation that it works now 
before we apply it.

Thank you.

-Michael Krufky

-------------- next part --------------
Index: linux/drivers/media/video/bttv-i2c.c
===================================================================
RCS file: /cvs/video4linux/v4l-kernel/linux/drivers/media/video/bttv-i2c.c,v
retrieving revision 1.33
diff -u -r1.33 bttv-i2c.c
--- linux/drivers/media/video/bttv-i2c.c	27 Oct 2005 20:15:48 -0000	1.33
+++ linux/drivers/media/video/bttv-i2c.c	30 Oct 2005 19:29:44 -0000
@@ -298,10 +298,12 @@
 static int attach_inform(struct i2c_client *client)
 {
 	struct bttv *btv = i2c_get_adapdata(client->adapter);
-	int radio_addr=ADDR_UNSET;
+	int addr=ADDR_UNSET;
+
+	
+        if (ADDR_UNSET != bttv_tvcards[btv->c.type].tuner_addr)
+        	addr = bttv_tvcards[btv->c.type].tuner_addr;
 
-	if (ADDR_UNSET != bttv_tvcards[btv->c.type].radio_addr)
-		radio_addr = bttv_tvcards[btv->c.type].radio_addr;
 
 	if (bttv_debug)
 		printk(KERN_DEBUG "bttv%d: %s i2c attach [addr=0x%x,client=%s]\n",
@@ -312,14 +314,16 @@
 
 	if (btv->tuner_type != UNSET) {
 		struct tuner_setup tun_setup;
-		struct tuner *t = i2c_get_clientdata(client);
 
-		if (t->type != UNSET && t->mode_mask == T_RADIO) {
-			tun_setup.type = t->type;
-			tun_setup.mode_mask =  T_RADIO;
-			tun_setup.addr = radio_addr;
-			client->driver->command (client, TUNER_SET_TYPE_ADDR, &tun_setup);
+		if ((addr==ADDR_UNSET) || 
+				(addr==client->addr)) {
+
+               		tun_setup.mode_mask = T_ANALOG_TV | T_DIGITAL_TV | T_RADIO;
+               		tun_setup.type = btv->tuner_type;
+			tun_setup.addr = addr;
+                	bttv_call_i2c_clients(btv, TUNER_SET_TYPE_ADDR, &tun_setup);
 		}
+
 	}
 
 	return 0;
Index: linux/drivers/media/video/tuner-core.c
===================================================================
RCS file: /cvs/video4linux/v4l-kernel/linux/drivers/media/video/tuner-core.c,v
retrieving revision 1.83
diff -u -r1.83 tuner-core.c
--- linux/drivers/media/video/tuner-core.c	27 Oct 2005 20:15:48 -0000	1.83
+++ linux/drivers/media/video/tuner-core.c	30 Oct 2005 19:29:47 -0000
@@ -233,9 +233,9 @@
 {
 	struct tuner *t = i2c_get_clientdata(c);
 
-	if ((tun_setup->addr == ADDR_UNSET &&
+	if ( t->type == UNSET && ((tun_setup->addr == ADDR_UNSET &&
 		(t->mode_mask & tun_setup->mode_mask)) ||
-		tun_setup->addr == c->addr) {
+		tun_setup->addr == c->addr)) {
 			set_type(c, tun_setup->type, tun_setup->mode_mask);
 	}
 }
 


More information about the linux-dvb mailing list