On Fri, 2009-02-06 at 22:44 -0500, John Bickel wrote:
> Attached is the DMESG with the debug options in /etc/modprobe.conf
> 
> options tuner-simple debug=7
> options tuner debug=7

John,

>From what I can tell, this is a somewhat subtle bug in

linux/drivers/media/video/tuner-core.c:set_type()

The cx18 driver ends up indirectly calling this function 2 times:

1.  When the cx18 driver loads the tuner module in

linux/drivers/media/video/cx18/cx18-driver.c:cx18_load_and_init_modules()

upon which the set_type() function doesn't do much except gripe:

[   21.359036] tuner 1-0061: tuner 0x61: Tuner type absent


2. When the c18 driver initializes the tuner type by calling

cx18_call_i2c_clients(cx, TUNER_SET_TYPE_ADDR, &setup)

in 

linux/drivers/media/video/cx18/cx18-driver.c:cx18_probe()

upon which the set_type() function calls
dvb_attach(tuner_simple_attach, ...) to attach the tuner frontend, *just
in case* this is an analog/digital hybrid tuner, sets the tuner to a
default freq, and maybe does some other things.  During this process, it
blurts out:

[   21.360786] tuner 1-0061: Calling set_type_addr for type=50, addr=0xff, 
mode=0x04, config=0x32
[   21.488974] tuner-simple 1-0061: creating new instance
[   21.488982] tuner-simple 1-0061: type set to 50 (TCL 2002N)
[   21.488985] tuner-simple 1-0061: tuner 0 atv rf input will be autoselected
[   21.488988] tuner-simple 1-0061: tuner 0 dtv rf input will be autoselected
[   21.488993] tuner 1-0061: type set to TCL 2002N
[   21.488996] tuner 1-0061: tv freq set to 400.00
[   21.489001] tuner-simple 1-0061: desired params (pal) undefined for tuner 50
[   21.489004] tuner-simple 1-0061: using tuner params #0 (ntsc)
[   21.489008] tuner-simple 1-0061: freq = 400.00 (6400), range = 1, config = 
0x8e, cb = 0x02
[   21.489013] tuner-simple 1-0061: Freq= 400.00 MHz, V_IF=38.93 MHz, 
Offset=0.00 MHz, div=7023
[   21.489017] tuner-simple 1-0061: tv 0x1b 0x6f 0x8e 0x02
[   21.489907] tuner 1-0061: cx18 i2c driver #0-1 tuner I2C addr 0xc2 with type 
50 used for 0x0e

Which is all just fine.



3.  Now some time about 5 seconds later, I'm *GUESSING*  something in
your system unloads the "tuner-simple" module that calls

        tuner-core.c:tuner_remove()
                tuner-core.c:tuner_detach()
                        tuner_simple.c:simple_release()

That emits 

[   53.076838] tuner-simple 1-0061: destroying instance



4.  I'm also *GUESSING* that shortly after that, something reloads the
tuner-simple module which emits this:

[   53.136315] tuner 1-0061: Setting mode_mask to 0x0e
[   53.136330] tuner 1-0061: chip found @ 0xc2 (cx18 i2c driver #0-1)
[   53.136334] tuner 1-0061: tuner 0x61: Tuner type absent


Just like what the cx18's initial load of the tuner module caused.  Here
it is for comparison:

[   21.359026] tuner 1-0061: Setting mode_mask to 0x0e
[   21.359032] tuner 1-0061: chip found @ 0xc2 (cx18 i2c driver #0-1)
[   21.359036] tuner 1-0061: tuner 0x61: Tuner type absent





I suspect you need to hunt down what script or process in your system is
unloading and reloading the tuner related modules.  Udev rules
or /etc/rc.d/* scripts may provide insights.

Happy hunting.

Regards,
Andy


_______________________________________________
ivtv-devel mailing list
[email protected]
http://ivtvdriver.org/mailman/listinfo/ivtv-devel

Reply via email to