[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