[linux-dvb] cx24110 driver question/problem
kenneth at linuxtv.org
Sat Jul 16 21:15:54 CEST 2005
lørdag 16. juli 2005, 19:49, skrev Johannes Stezenbach:
> Adam Szalkowski wrote:
> > I'm using a Pinnacle PCTV SAT on a DiSEqC 2.0 multiswitch.
> > Since 2.6.12 these lines have been added to cx24110_send_diseqc_msg() in
> > cx24110.c:
> > rv = cx24110_readreg(state, 0x77);
> > cx24110_writereg(state, 0x77, rv|0x04);
> > These lines also occur in cx24110_diseqc_send_burst(). When tuning with szap
> > (using the -r option, of course) the FE reports to have a lock but I still do
> > not receive any data on some channels. Before 2.6.12 this worked.
> > When I remove those lines in both functions everything works fine as before
> > 2.6.12. What is this code supposed to do? Can it be removed again or fixed so
> > that my card works again with a stock kernel?
> According to CVS these lines were added with this change:
> revision 1.22
> date: 2005-03-08 12:42:00 +0000; author: kenneth; state: Exp; lines: +27 -0
> - cx24110 diseqc_send_burst (Peter Hettkamp, Uwe Bugla)
> Maybe one of you guys could comment on this?
I think you just need to hack around this problem,
Peter once wrote to me in a private mail:
On Sun, Mar 13, 2005 at 02:56:04PM +0100, Kenneth Aaflxy wrote:
> I'm trying to figure out why a user cannot lock after the patch for
> diseqc_send_burst went into cvs, but I do not have the datasheet this frontend
> so my work only becomes guesswork. The problem disappears if the send_burst
> function (and the writes to 0x77) is removed, so there is something in those
> changes that is confusing his setup.
> Do you have any idea of what might be going wrong?
No. The point is, when I created the patch for the missing SEND_BURST
ioctl, I had no way to check whether it works.
The cx24110 chip is maybe too intelligent for the current API, there is no
way I kow of to tell it "send a burst". So I set it up to do a full LNC
start, only without a DiSEqC message (set Bit 2 of register 0x77).
According to the datasheet, the chip will then:
- turn off the continuous tone
- switch the LNC voltage if required
- SKIP the sending of DiSEqC messages
- delay ~15 ms
- send a tone burst of 12.5ms
- delay ~15ms
- turn on the continuous tone if required
Generally, if I understand it right, this should be not very different from
the sequence when using DiSEqC and Tone Burst in one setup, except that the
continuous tone may get switched on after Send_Diseqc and then switched off
again by Send_Burst.
However, as I said before, I did not test this due to lack of equipment.
To fix this up correctly, I would need to have both the burst bit and the
DiSEqC message available at the time the LNC is set up. But since these are
separate API calls, I cannot rely on them both being called, nor on the
sequence in which they may be called by all the applications out there.
More information about the linux-dvb