[linux-dvb] pinnacle pctv310i
Gabriele Verzeletti
gabriele at verzeletti.org
Thu Feb 16 09:58:27 CET 2006
Hartmut Hackmann wrote:
>
>
> Gabriele Verzeletti wrote:
>
>> Hi.
>> I'm trying to make my "pinnacle pctv310i" work.
>> I noticed many are managing to do the same, so I decided to share the
>> results I've been able to obtain so far.
>> At the moment only non-digital TV signal works.
>> On the card are the following components: TDA8275A Tuner, SAA7131E
>> decoder and a TDA10046A decoder for earth digital signal.
>> In order to pilot the tuner I had to change the I2C_SCAN addresses
>> range at the row 533 of TDA8290.C, for the tuner address is at 0xe1.
>>
>>
>> /* probe for tuner chip */
>> tuners_found = 0;
>> tuner_addrs = 0;
>> for (i=0x60; i<= 0xe1; i++) {
>> msg.addr = i;
>> ret = i2c_transfer(c->adapter, &msg, 1);
>>
>> Now, loading:
>>
>> eeprom
>> firmware-class
>> saa7134 i2c_scan=1
>>
>> the result is
>>
>> saa7130/34: v4l2 driver version 0.2.14 loaded
>> ACPI: PCI Interrupt 0000:01:00.0[A] -> GSI 21 (level, low) -> IRQ 21
>> saa7133[0]: found at 0000:01:00.0, rev: 208, irq: 21, latency: 64,
>> mmio: 0xfeafe800
>> saa7133[0]: subsystem: 11bd:002f, board: Pinnacle PCTV 310i
>> (saa7131E) [card=89,autodetected]
>> saa7133[0]: board init: gpio is 600c000
>> input: Pinnacle PCTV as /class/input/input4
>> ir-kbd-i2c: Pinnacle PCTV detected at i2c-0/0-0047/ir0 [saa7133[0]]
>> saa7133[0]: i2c eeprom 00: bd 11 2f 00 54 20 1c 00 43 43 a9 1c 55 d2
>> b2 92
>> saa7133[0]: i2c eeprom 10: ff e0 60 06 ff 20 ff ff 00 30 8d 2d 14 35
>> ff ff
>> saa7133[0]: i2c eeprom 20: 01 2c 01 02 02 01 04 30 98 ff 00 a5 ff 21
>> 00 c2
>> saa7133[0]: i2c eeprom 30: 96 10 03 32 15 20 ff ff 0c 22 17 88 03 48
>> e9 3a
>> saa7133[0]: i2c eeprom 40: ff ff ff ff ff ff ff ff ff ff ff ff ff ff
>> ff ff
>> saa7133[0]: i2c eeprom 50: ff ff ff ff ff ff ff ff ff ff ff ff ff ff
>> ff ff
>> saa7133[0]: i2c eeprom 60: ff ff ff ff ff ff ff ff ff ff ff ff ff ff
>> ff ff
>> saa7133[0]: i2c eeprom 70: ff ff ff ff ff ff ff ff ff ff ff ff ff ff
>> ff ff
>> saa7133[0]: i2c scan: found device @ 0x10 [???]
>> saa7133[0]: i2c scan: found device @ 0x8e [???]
>> saa7133[0]: i2c scan: found device @ 0x96 [???]
>> saa7133[0]: i2c scan: found device @ 0xa0 [eeprom]
>> tuner 0-004b: chip found @ 0x96 (saa7133[0])
>> tuner 0-004b: setting tuner address to e1
>
>
> What is this? This can not be correct. Did you change something in the
> probing code in tda8290.c?
>
Yes, i try to change probing code and the module found a tuner at e1...
the analog tv seems work.
>> tuner 0-004b: type set to tda8290+75a x
>> saa7133[0]: registered device video0 [v4l2]
>> saa7133[0]: registered device vbi0
>> saa7133[0]: registered device radio0
>>
>> As easy to see, I2C is able to find several devices.
>>
>> Device address description
>> 0x10 0x08 i2c-controller ???
>> 0x8e 0x47 pctv-irda/ir-kbd-i2c
>> 0x96 0x4b saa7131E
>> ??? 0xe1 tda8290+75a
>> 0xa0 0x50 eeprom
>>
> 0x10 is the tda10046 channel decoder
> 0x8e most probably is the ir chip. On the 300i, it causes a lot of
> trouble
> since sometimes it replies without being addressed...
> 0x96 is the tda8290 IF core in the saa7131
> 0xa0 is the saa7131 config eeprom
>
> The tda8275a is not visible here is it is located after a bridge, most
> probably the one in the tda8290. Pierluigi (is that right?) did i already
> tell you this? This is why you first need to talk to the tda8290 before
> you access the tuner yust like it is for the tiger board. It most
> probably
> has the address 0xc2.
> Again: 0xe1 can not be right, it not even is a valid write address.
>
>>
>> At the moment I'm trying many solutions for DVB-T, but the results ar
>> quite disappointing.
>> All I obtain is always:
>>
>> tda1004x: pll set failed
>>
>> Here are the changes I made to SAA7134-DVB.C
>>
>> static int pctv310i_pll_set(struct dvb_frontend *fe, struct
>> dvb_frontend_parameters *params)
>> {
>> int ret;
>> ret = philips_tda827xa_pll_set(0xe1, fe, params);
>> return ret;
>> }
>> static int pctv310i_pll_init(struct dvb_frontend *fe)
>> {
>> return 0;
>> }
>> static void pctv310i_pll_sleep(struct dvb_frontend *fe)
>> {
>> philips_tda827xa_pll_sleep( 0xe1, fe);
>> }
>> static int pctv310i_request_firmware(struct dvb_frontend *fe,
>> const struct firmware **fw,
>> char *name)
>> {
>> struct saa7134_dev *dev = fe->dvb->priv;
>> return request_firmware(fw, name, &dev->pci->dev);
>> }
>> static struct tda1004x_config pctv310i_config = {
>> .demod_address = 0x08,
>> .invert = 1,
>> .invert_oclk = 0,
>> .xtal_freq = TDA10046_XTAL_16M,
>> .agc_config = TDA10046_AGC_TDA827X,
>> .if_freq = TDA10046_FREQ_045,
>> .pll_init = pctv310i_pll_init,
>> .pll_set = pctv310i_pll_set,
>> .pll_sleep = pctv310i_pll_sleep,
>> .request_firmware = pctv310i_request_firmware,
>> };
>>
>> Put dvb-fe-tda10046.fw in the firmware directory
>> and at the module loading:
>>
>> modprobe saa7134-dvb
>>
>> DVB: registering new adapter (saa7133[0]).
>> DVB: registering frontend 0 (Philips TDA10046H DVB-T)...
>> tda1004x: setting up plls for 48MHz sampling clock
>> tda1004x: found firmware revision 20 -- ok
>>
>> I also found this post in a forum that made me think I'n not aiming
>> the correct way...
>>
>> "The tuner is - as far as i know - a TDA8275a. This is supported. But
>> the application of the tuner is different, it has an external
>> preamplifier.
>> This requires a different strategy for the AGC - which is not
>> implemented
>> yet. But it might work at least a bit without it.
>> The other issues:
>> I can't belive that there is no firmware eeprom on the card but its
>> address
>> might be controlled in a different way.
>> You need to use the pll_init and pll_sleep functions to switch the board
>> between analog and dvb mode. This mainly is switching the AGC source
>> between analog IF and the channel decoder. I have no idea how this is
>> done on the pinnacle board. Some boards do this by just setting
>> the outputs to tristate (the chip drivers do this when they go to sleep
>> mode). But most use an analog multiplexer (4052), controlled by some
>> GPIO pin. It is the hard part of the job to find which one."
>>
> Maybe this helps a bit.
>
> Hartmut
More information about the linux-dvb
mailing list