Mailing List archive

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

[linux-dvb] Question regarding stv0299_send_diseqc_msg



Hi all,

I'm trying to solve a problem with the 2.4 DVB driver and WinTV Nova-CI cards and Technistat Gigaswitch 11/20G DiSEqC's. The 2.4 version of the driver cannot tune with these switches. The 2.6 version works fine. WinTV Nexus cards with 2.4 driver also work.

I traced down the I2C dialog. I did a small modification to the SU1278 initialization, to make it identical to what the 2.6 driver does.


There's a difference between the 2.4 and 2.6 version when it comes to sending the DiSEqC message:


2.4 driver in stv0299_send_diseqc_msg()

R 0x0a -> 0xc2 Is Idle (&0x2 == 0x2) stv0299_wait_diseqc_idle()
R 0x08 -> 0x42 Get DiSEqC mode
W 0x08 -> 0x46 Set mode to (0x42&~0x7) | 0x6

Send DiSEqC message:

R 0x0a -> 0xc2 Fifo ready (0xc2&0x01 == 0x00)
W 0x09 -> 0xe0 Octet #0
R 0x0a -> 0xc0 Fifo ready (0xc0&0x01 == 0x00)
W 0x09 -> 0x10 Octet #1
R 0x0a -> 0xe0 Fifo ready (0xe0&0x01 == 0x00) !!!??
.
.
.

In the 2.6 driver, the last line is

R 0x0a -> 0xe1 Fifo NOT ready
R 0x0a -> 0xc0 Fifo Ready
.
.
.


It's reproducible, I don't think, that this is a timing issue. Can someone explain me that or give me a hint where to search? It seems that the STV0299 is just ignoring the command...?

The complete stv0299_send_diseqc_msg() in the non-working 2.4 is:

R 0x0a -> 0xc2
R 0x08 -> 0x42
W 0x08 -> 0x46
R 0x0a -> 0xc2
W 0x09 -> 0xe0
R 0x0a -> 0xc2
W 0x09 -> 0x10
R 0x0a -> 0xc2
W 0x09 -> 0x38
R 0x0a -> 0xc2
W 0x09 -> 0xf3
R 0x0a -> 0xc0
R 0x0a -> 0xc2

And for the working 2.6 version:

R 0x0a -> 0xc2
R 0x08 -> 0x42
W 0x08 -> 0x46
R 0x0a -> 0xc2
W 0x09 -> 0xe0
R 0x0a -> 0xc0
W 0x09 -> 0x10
R 0x0a -> 0xe1
R 0x0a -> 0xc0
W 0x09 -> 0x38
R 0x0a -> 0xc0
W 0x09 -> 0xf3
R 0x0a -> 0xc1
R 0x0a -> 0xe0



The DiSEqC is o.k. The same Nova card is functioning in a Windoze machine with the
TT software.


pm




Home | Main Index | Thread Index