Re: pinnacle pctv310i

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





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


_______________________________________________

linux-dvb@xxxxxxxxxxx
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb

[Index of Archives]     [Linux Media]     [Video 4 Linux]     [Asterisk]     [Samba]     [Xorg]     [Xfree86]     [Linux USB]

  Powered by Linux