[linux-dvb] Patches to fix support for VisionPlus DTV (VP1020)
/ tuning problem
Manu Abraham
manu at kromtek.com
Sat Apr 23 19:14:44 CEST 2005
Johannes Stezenbach wrote:
> Steffen Motzer wrote:
>
>>These patches fix the following bugs:
>>
>>bttv-i2c.c:
>>After upgrading from 2.6.9 to 2.6.11.7, bttv failed to write to the ASIC
>>via the i2c bus. After a couple of times bttv_i2c_wait_done was called
>>the RACK flag was indicating a failed i2c operation.
>
>
> A number of bttv patches whent into 2.6.12-rc2. Does you stuff still
> apply there?
>
>
>
>>*** bttv-i2c.c.orig 2005-04-23 00:42:40.000000000 +0200
>>--- bttv-i2c.c 2005-04-23 02:09:43.000000000 +0200
>>*************** bttv_i2c_wait_done(struct bttv *btv)
>>*** 135,143 ****
>
>
> Please send unified diffs only!
>
>
>> DECLARE_WAITQUEUE(wait, current);
>> int rc = 0;
>>
>> add_wait_queue(&btv->i2c_queue, &wait);
>>! if (0 == btv->i2c_done)
>>! msleep_interruptible(20);
>> remove_wait_queue(&btv->i2c_queue, &wait);
>>
>> if (0 == btv->i2c_done)
>>--- 135,148 ----
>> DECLARE_WAITQUEUE(wait, current);
>> int rc = 0;
>>
>>+ unsigned long timeout = msecs_to_jiffies(20);
>>+
>> add_wait_queue(&btv->i2c_queue, &wait);
>>!
>>! while (0 == btv->i2c_done && timeout) {
>>! set_current_state(TASK_INTERRUPTIBLE);
>>! timeout = schedule_timeout(timeout);
>>! }
>> remove_wait_queue(&btv->i2c_queue, &wait);
>>
>> if (0 == btv->i2c_done)
>
>
> This code looks strange (before and after your change).
> Why isn't this a simple
>
> wait_event_interruptible_timeout(&btv->i2c_queue, btv->i2c_done,
> msecs_to_jiffies(20));
>
> ?
I tried it out, but when you suggested that, i found another problem
that i had been going after ..
Attached is my patch.. to what you suggested..
With this the tuning speed seems to be better, and i am kind of seeing
lesser cases of the driver getting into error recovery ..
Maybe Gerd can comment on this, as i am not too comforatble in this area
.. The reason why i have 6, is that it is higher than the worst case
timeout.. With larger values at least for the dst/dst_ca drivers, It
feels kind of "sluggish" to move around .. I don't know how exactly to
explain that, but higher values causes more chances of i2c errors and
slower tuning ..
Manu
-------------- next part --------------
A non-text attachment was scrubbed...
Name: waitqueue-bttv-i2c.diff
Type: text/x-patch
Size: 542 bytes
Desc: not available
Url : http://www.linuxtv.org/pipermail/linux-dvb/attachments/20050423/e5f6cfbf/waitqueue-bttv-i2c.bin
More information about the linux-dvb
mailing list