[linux-dvb] (temp. solution) modprobe mantis stalls/hangs/freezes (Twinhan VP-1034 and ivtv)

Michel Verbraak michel at verbraak.org
Sun Aug 26 17:38:47 CEST 2007


Hans Verkuil schreef:
> On Sunday 26 August 2007 11:18:56 Michel Verbraak wrote:
>   
>> Manu Abraham schreef:
>>     
>>> Michel Verbraak wrote:
>>>       
>>>> I have a Twinhan VP-1034 and I use the the latest hg, today, and
>>>> http://jusst.de/manu/mantis-v4l-dvb.tar.bz2 with kernel 2.6.22.1.
>>>>
>>>> When I do a 'modprobe mantis' my prompt never returns. The machine
>>>> still is working.
>>>>         
>
> ....
>
>   
>> Aug 26 11:08:32 recorder kernel: ivtv0: Autodetected Hauppauge WinTV
>> PVR-350 Aug 26 11:08:32 recorder kernel: tuner 2-0061: chip found @
>> 0xc2 (ivtv i2c driver #0)
>> Aug 26 11:08:32 recorder kernel: ivtv0 i2c: i2c client attach
>> Aug 26 11:08:32 recorder kernel:         mantis_i2c_write:
>> Address=[0x25] <W>[ ]
>> Aug 26 11:08:32 recorder kernel:         mantis_i2c_write:
>> Address=[0x25] <W>[ 00 00 ]
>> Aug 26 11:08:32 recorder kernel:         mantis_i2c_write:
>> Address=[0x25] <W>[ 00 ]
>> Aug 26 11:08:32 recorder kernel:         mantis_i2c_read:
>> Address=[0x25] <R>[ 00 ]
>> Aug 26 11:08:32 recorder kernel:         mantis_i2c_write:
>> Address=[0x25] <W>[ 00 01 === Interrupts[0001/0001]= [* I2C DONE  *]
>>     
>
> Ah, ivtv is probing for the saa7115 device. The saa7115 driver probes 
> among others i2c address 0x25, which is also used by the mantis.
>
> And what's changed is that in kernel 2.6.21 the following change was 
> made to the saa7115.c driver:
>
> static int saa711x_probe(struct i2c_adapter *adapter)
> {
>         if (adapter->class & I2C_CLASS_TV_ANALOG || adapter->class & 
> I2C_CLASS_TV_DIGITAL)
>                 return i2c_probe(adapter, &addr_data, &saa711x_attach);
>         return 0;
> }
>
> The TV_DIGITAL check was added, so now it is also suddenly used by the 
> mantis. Apparently added to support the Nexus CA.
>
> The only solution at this time is to add the following module option to 
> saa7115: ignore=-1,0x25
>
> This should ensure it that it ignores i2c address 0x25. Work is being 
> done to make probing unnecessary or at least much smarter, but that 
> will be quite a long transition period, most likely. For the time being 
> this is probably your only solution.
>
> Regards,
>
> 	Hans
>   
Hans and Manu,
The mantis and ivtv module loaded ok with the following options for 
saa7115 in /etc/modprobe.conf:
options saa7115 ignore=-1,0x25,-1,0x24,-1,0x21,-1,0x20

But ivtv is not working anymore and I get the following when I try to 
watch live tv with mythtv:
ivtv0: i2c addr 0x21 not found for command 0xc0445624
ivtv0: i2c addr 0x21 not found for command 0xc008561c
ivtv1: Loaded v4l-cx2341x-enc.fw firmware (376836 bytes)
ivtv1: Encoder revision: 0x02060039
cx25840 3-0044: loaded v4l-cx25840.fw firmware (16382 bytes)
ivtv0: i2c addr 0x21 not found for command 0xc0445624
ivtv0: i2c addr 0x21 not found for command 0xc008561c
ivtv0: i2c addr 0x21 not found for command 0xc0445624
ivtv0: i2c addr 0x21 not found for command 0xc008561c
ivtv0: i2c addr 0x21 not found for command 0xc0445624
ivtv0: i2c addr 0x21 not found for command 0xc008561c
ivtv0: i2c addr 0x21 not found for command 0xc0cc5605
ivtv0: i2c addr 0x21 not found for command 0x40045613
ivtv0: i2c addr 0x21 not found for command 0x40045612
ivtv0: i2c addr 0x21 not found for command 0xc0cc5605
ivtv0: i2c addr 0x21 not found for command 0x40045613
ivtv0: i2c addr 0x21 not found for command 0x40045612
ivtv0: i2c addr 0x21 not found for command 0xc0cc5605
ivtv0: i2c addr 0x21 not found for command 0x40045613
ivtv0: i2c addr 0x21 not found for command 0x40045612
ivtv0: i2c addr 0x21 not found for command 0xc0cc5605
ivtv0: i2c addr 0x21 not found for command 0x40045613
ivtv0: i2c addr 0x21 not found for command 0x40045612
ivtv0: i2c addr 0x21 not found for command 0xc0cc5605
ivtv0: i2c addr 0x21 not found for command 0x40045613
ivtv0: i2c addr 0x21 not found for command 0x40045612

Probably because saa7115 is ignoring 0x21.
The vp-1034 is working allright.

What I did to get it working is removing the saa7115 module options. 
Change the probe function in saa7115.c to:

static int saa711x_probe(struct i2c_adapter *adapter)
{
#ifdef I2C_CLASS_TV_ANALOG
        if (adapter->class & I2C_CLASS_TV_ANALOG)
#else
        if (adapter->id == I2C_HW_B_BT848)
#endif
                return i2c_probe(adapter, &addr_data, &saa711x_attach);
        return 0;
}

Recompiled and both modules load without problems now and al is working 
again. I know this is not the right work around for everybody but it 
works for me.

Regards,

Michel.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.linuxtv.org/pipermail/linux-dvb/attachments/20070826/0dc2f09a/attachment.htm 


More information about the linux-dvb mailing list