From: Domen Puncer Not sure why any driver needs to sleep for *two* ticks, so let's fix it. Use msleep() instead of schedule_timeout() to guarantee the task delays as expected. Signals are never checked for by the callers or in the function itself, so use TASK_UNINTERRUPTIBLE instead of TASK_INTERRUPTIBLE. The delay is presumed to have been written when HZ==100, and thus has been multiplied by 10 to pass to msleep(). Signed-off-by: Nishanth Aravamudan Signed-off-by: Domen Puncer Acked-by: Russell King Signed-off-by: Andrew Morton --- 25-akpm/drivers/char/ds1620.c | 3 +-- 1 files changed, 1 insertion(+), 2 deletions(-) diff -puN drivers/char/ds1620.c~char-ds1620-use-msleep-instead-of-schedule_timeout drivers/char/ds1620.c --- 25/drivers/char/ds1620.c~char-ds1620-use-msleep-instead-of-schedule_timeout 2005-03-19 13:48:22.000000000 -0800 +++ 25-akpm/drivers/char/ds1620.c 2005-03-19 13:48:22.000000000 -0800 @@ -163,8 +163,7 @@ static void ds1620_out(int cmd, int bits netwinder_ds1620_reset(); netwinder_unlock(&flags); - set_current_state(TASK_INTERRUPTIBLE); - schedule_timeout(2); + msleep(20); } static unsigned int ds1620_in(int cmd, int bits) _