[linux-dvb] Switching tuner to analogue mode on Compro VideoMate DVB-T300

Tomislav Bodor tbodor at ihug.co.nz
Mon Oct 2 05:19:38 CEST 2006


Hartmut Hackmann wrote:
> Hi,
>
> Tomislav Bodor wrote:
>> Hi,
>>
>> I am having problems getting the DVB-T300 to switch to analogue mode
>> once the digital part of the tuner has been accessed. The only way I
>> found seems to be to unload the saa7134-dvb module and reload saa7134.
>> I'm using the drivers from vanilla 2.6.18 kernel, but I checked the
>> relevant sections (see below) against mercurial and they seem to be the
>> same.
>>
>> Now, I have had a look at how this is supposed to be switched back to
>> analogue and have found the sleep function (the one used for DVB-T300 is
>> philips_europa_tuner_sleep) and the way it's called from dvb_frontent.c
>> after dvb_shutdown_timeout expires. This all seems to work (and the
>> sleep function is called correctly), but the tuner stays in digital
>> mode.
>>
>> Does anyone have an idea why this might not work? Maybe the i2c messages
>> are wrong for this card? Unfortunately this is all completely new to me,
>> but I'm happy to test any patches :)
>>
>>
> There have been 2 big changes since i added support for this card.
> I worried about the tda9887 merge in the tuner module, but the
> effect i worried about is a bit different from what you describe.
> - are there any error messages in the kernel log?
> - does analog tv work immedeately after module load?
> Any additional information will help.

Sure. Unfortunately, I don't know what's useful information and what's
not, so I may overload you :)

I'll tackle the latter first: analog works just fine after saa7134
module is loaded (this for me happens automatically during boot). It
continues working even after saa7134-dvb is loaded, all the way until I
run any dvb application (e.g. scan or mythbackend with a DVB card
configured). Once a dvb device is accessed the card is switched to
digital mode (and I can watch digital TV just fine).

Now for the first question: from that point onwards digital works fine,
but accessing the card in analogue mode (say using tvtime or mythtv via
the analogue tuner) produces the following errors in the kernel log:

Oct  2 16:04:38 localhost kernel: [  540.007478] tuner 1-0061: i2c i/o
error: rc == -5 (should be 4)
Oct  2 16:04:38 localhost kernel: [  540.015462] tuner 1-0061: i2c i/o
error: rc == -5 (should be 4)
Oct  2 16:04:38 localhost kernel: [  540.023452] tuner 1-0061: i2c i/o
error: rc == -5 (should be 4)
Oct  2 16:04:38 localhost kernel: [  540.131306] tuner 1-0061: i2c i/o
error: rc == -5 (should be 4)
Oct  2 16:04:38 localhost kernel: [  540.139289] tuner 1-0061: i2c i/o
error: rc == -5 (should be 4)
Oct  2 16:04:38 localhost kernel: [  540.215214] tuner 1-0061: i2c i/o
error: rc == -5 (should be 4)

They come in batches of six at a time every time I start tvtime and then
one at a time every time I change channels.


Also, here's more stuff from the log, if it's useful:

When saa7134 module is loaded at boot:

Oct  2 15:56:23 localhost kernel: [   36.678310] saa7130/34: v4l2 driver
version 0.2.14 loaded
Oct  2 15:56:23 localhost kernel: [   36.678374] ACPI: PCI Interrupt
0000:00:0c.0[A] -> GSI 16 (level, low) -> IRQ 193
Oct  2 15:56:23 localhost kernel: [   36.678384] saa7134[0]: found at
0000:00:0c.0, rev: 1, irq: 193, latency: 32, mmio: 0xeb010000
Oct  2 15:56:23 localhost kernel: [   36.678391] saa7134[0]: subsystem:
185b:c900, board: Compro Videomate DVB-T300 [card=70,autodetected]
Oct  2 15:56:23 localhost kernel: [   36.678403] saa7134[0]: board init:
gpio is 843f00
Oct  2 15:56:23 localhost kernel: [   36.678495] input: saa7134 IR
(Compro Videomate DV as /class/input/input2
Oct  2 15:56:23 localhost kernel: [   36.821316] saa7134[0]: i2c eeprom
00: 5b 18 00 c9 54 20 1c 00 43 43 a9 1c 55 d2 b2 92
Oct  2 15:56:23 localhost kernel: [   36.821325] saa7134[0]: i2c eeprom
10: 00 ff 86 0f ff 20 ff ff ff ff ff ff ff ff ff ff
Oct  2 15:56:23 localhost kernel: [   36.821332] saa7134[0]: i2c eeprom
20: 01 40 01 03 03 ff 03 01 08 ff 00 87 ff ff ff ff
Oct  2 15:56:23 localhost kernel: [   36.821339] saa7134[0]: i2c eeprom
30: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
Oct  2 15:56:23 localhost kernel: [   36.821345] saa7134[0]: i2c eeprom
40: ff 02 00 c2 86 10 ff ff ff ff ff ff ff ff ff ff
Oct  2 15:56:23 localhost kernel: [   36.821351] saa7134[0]: i2c eeprom
50: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff cb
Oct  2 15:56:23 localhost kernel: [   36.821358] saa7134[0]: i2c eeprom
60: 34 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
Oct  2 15:56:23 localhost kernel: [   36.821364] saa7134[0]: i2c eeprom
70: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
Oct  2 15:56:23 localhost kernel: [   36.885235] tuner 1-0043: chip
found @ 0x86 (saa7134[0])
Oct  2 15:56:23 localhost kernel: [   36.885295] tda9887 1-0043:
tda988[5/6/7] found @ 0x43 (tuner)
Oct  2 15:56:23 localhost kernel: [   36.893236] tuner 1-0061: chip
found @ 0xc2 (saa7134[0])
Oct  2 15:56:23 localhost kernel: [   36.901207] tuner 1-0061: type set
to 67 (Philips TD1316 Hybrid Tuner)
Oct  2 15:56:23 localhost kernel: [   36.909208] tuner 1-0068: chip
found @ 0xd0 (saa7134[0])
Oct  2 15:56:23 localhost kernel: [   36.910584] saa7134[0]: registered
device video0 [v4l2]
Oct  2 15:56:23 localhost kernel: [   36.910611] saa7134[0]: registered
device vbi0


Then, when saa7134-dvb is loaded, this is logged:

Oct  2 16:01:54 localhost kernel: [  376.454989] DVB: registering new
adapter (saa7134[0]).
Oct  2 16:01:54 localhost kernel: [  376.454997] DVB: registering
frontend 0 (Philips TDA10046H DVB-T)...


And, finally, when the dvb devices are accessed (using scan), this:

Oct  2 16:03:16 localhost kernel: [  457.845609] tda1004x: setting up
plls for 48MHz sampling clock
Oct  2 16:03:16 localhost kernel: [  458.368985] tda1004x: found
firmware revision 23 -- ok



And this reminds me: I never downloaded any firmware for tda10046 - it
just worked this way, though various documentation says that I should
use the get_dvb_firmware script from linux/Documentation/dvb. Why is it
working without firmware (out of curiosity)?


Thanks,
Tomislav




More information about the linux-dvb mailing list