Mailing List archive

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

[linux-dvb] Patch for frontends/ves1820.c



Hi,

Old drivers:
VES1820.c :
int init(struct i2c_client *client) - msgs[0].addr=msgs[1].addr=(0x28<<1);

HEAD drivers:
frontends/ves1820.c :
struct i2c_msg msg [] = { { addr: 0x28, flags: 0, buf: b0, len: 1 },
                      { addr: 0x28, flags: I2C_M_RD, buf: &pwm, len: 1 } };

In this ves1820 init function the pwm values are read from the ves1820 chips 
on the cards. 

If you change "addr: 0x28" in the HEAD drivers to "addr: 0x28 << 1" as in the 
old drivers, it now reads the same PWM values as the old drivers did 
(otherwise it would get like 0x00 and then 0xff - now it's 0x15 and 0x34). 
Now both cards tune properly :-)   (before 1 would occasionally tune, the 
other wouldn't).

I'm still poking around for other things, I added a printk in 
dvb_frontend_add_event for when there is a FE_HAS_LOCK event, and both cards 
will now tune and eventually (can take a second or 2 depending on zigzagging) 
report this FE_HAS_LOCK.

However, if I call dvbtune with certain parameters, it might time out before 
this FE_HAS_LOCK is reported. I wait until the FE_HAS_LOCK shows up in the 
logs, and call dvbtune again with the exact same parameters, expecting the 
card not to tune again but just set the video and audio pids. Instead, it 
starts tuning again, which again might time out dvbtune (causing it not to 
set the audio/video pids) but it will still lock eventually.

Complicated story :) I hope to figure some more out tonight.

The 0x28<<1 just stuck out like something that would be wrong.

Cheers,
Dennis






--
Info:
To unsubscribe send a mail to listar@linuxtv.org with "unsubscribe linux-dvb" as subject.



Home | Main Index | Thread Index