[linux-dvb] Re: [BUG] FusionHDTV5 Lite
Michael Krufky
mkrufky at linuxtv.org
Sun Sep 11 21:26:34 CEST 2005
Manu Abraham wrote:
> Michael Krufky wrote:
>
>> I can only zap once.... During these tests, I am using azap and
>> mplayer. I have noticed that after viewing a stream, if I kill azap
>> and try to zap to another channel, mplayer receives no ts data,
>> although azap reports status 1F. The only way to restore
>> functionality is to remove the module and re-insert it:
>>
>> modprobe -r dvb-bt8xx
>> modprobe dvb-bt8xx
>>
>> After doing this, it works again. This is also needed if I want to
>> view ATSC stream after watching analog tv. So, obviously there is a
>> bug that I have to fix.
>>
>> In attempting to fix this, I have tried resetting the frontend, by
>> calling lgdt330x_reset in tdvs_tua6034_pll_set, before
>> dvb_pll_configure, but that only made matters worse.
>>
>> ...or maybe it's a problem with gpio again, which is why my original
>> patch didnt work in the first place. The behavior is pretty much the
>> same. With my original patch, I was able to lock, but got no ts data.
>> With current cvs, I can lock, and get ts data. (beautiful HDTV and
>> DTV streams) But If I stop azap and start it again, then I get no ts
>> data again, just like with my original patch.
>>
>> But this error log makes me think otherwise:
>>
>>> bt878(0): irq FDSR risc_pc=2c4bd008
>>> bt878(0): irq FDSR risc_pc=2c4bd008
>>> bt878(0): irq SCERR risc_pc=2c4bd000
>>> bt878(0): irq FDSR risc_pc=2c4bd008
>>> [...]
>>> bt878(0): irq FDSR risc_pc=2c4bd008
>>> bt878(0): irq FDSR risc_pc=2c4bd008
>>> bt878(0): IRQ lockup, cleared int mask
>>
>>
>
> Looks like you had too many a IRQ's due to FDSR errors, why don't you
> try ignoring the FBUS errors
>
> ie,
>
> card->irq_error_ignore = BT878_AFBUS | BT878_AFDSR | BT878_APABORT |
> BT878_ARIPERR | BT878_APPERR;
>
> you could try the same thing or whichever combination, but the basic
> idea is to reduce too many interrupts, since lockup
> you might like to try to add resync also,
>
> ie,
>
> card->op_sync_orin = BT878_RISC_SYNC_MASK;
>
>
> either both of them or a combination of them and see whether it still
> occurs.
> in the relevant section in dvb-bt8xx, similar to others. That will help
> you atleast to reduce the number or IRQ's
Manu-
I applied both of the changes above and it fixes the problem. ie:
diff -u -p -r1.49 dvb-bt8xx.c
--- linux/drivers/media/dvb/bt8xx/dvb-bt8xx.c 10 Sep 2005 07:26:02
-0000 1.49
+++ linux/drivers/media/dvb/bt8xx/dvb-bt8xx.c 11 Sep 2005 19:19:26 -0000
@@ -828,8 +828,8 @@ static int dvb_bt8xx_probe(struct device
case BTTV_DVICO_FUSIONHDTV_5_LITE:
#endif
card->gpio_mode = 0x0400c060;
- card->op_sync_orin = 0;
- card->irq_err_ignore = 0;
+ card->op_sync_orin = BT878_RISC_SYNC_MASK;
+ card->irq_err_ignore = BT878_AFBUS | BT878_AFDSR |
BT878_APABORT | BT878_ARIPERR | BT878_APPERR;
break;
#ifdef BTTV_TWINHAN_VP3021
Should I leave it this way, or should I bother trying to remove some of
those ignore cases, figuring out what's necessary and only keep the bare
minimum?
I suspect that it is safe to keep it as it shown in the patch above...
Please confirm.
I wonder why Doug didnt have this problem. Do you think it might be a
quirk with my motherboard, causing those irq's ?
>>> lgdt330x: i2c_write_demod_bytes error (addr 4c <- 14, err = -121)
>>
>>
>>> bt878(0): irq SCERR risc_pc=2c4bd000
>>> bt878(0): irq FDSR risc_pc=2c4bd008
>>> lgdt330x: i2c_read_demod_bytes: addr 0x0e select 0x1a error (ret ==
>>> -121)
>>> lgdt330x: i2c_read_demod_bytes: addr 0x0e select 0x8b error (ret ==
>>> -121)
>>> lgdt330x: i2c_write_demod_bytes error (addr 02 <- 00, err = -121)
>>
>>
> Does your driver uses i2c bitbanging or hardware ?
This problem is still present... This is what happens if I try to zap
again after using the analog tuner. Maybe Mac can shed some light on this?
--
Michael Krufky
More information about the linux-dvb
mailing list