diff -r f500c56d9064 linux/drivers/media/common/saa7146_core.c --- a/linux/drivers/media/common/saa7146_core.c Fri Apr 11 11:22:15 2008 +0200 +++ b/linux/drivers/media/common/saa7146_core.c Fri Apr 18 02:25:39 2008 +0200 @@ -64,8 +64,10 @@ static inline int saa7146_wait_for_debi_ { unsigned long timeout; int err; + bool slow; /* wait for registers to be programmed */ + slow = false; timeout = jiffies + usecs_to_jiffies(us1); while (1) { err = time_after(jiffies, timeout); @@ -77,10 +79,12 @@ static inline int saa7146_wait_for_debi_ dev->name, __func__); return -ETIMEDOUT; } - msleep(1); + msleep(slow ? 10 : 1); + slow = true; } /* wait for transfer to complete */ + slow = false; timeout = jiffies + usecs_to_jiffies(us2); while (1) { err = time_after(jiffies, timeout); @@ -92,7 +96,8 @@ static inline int saa7146_wait_for_debi_ "completion\n", dev->name, __func__)); return -ETIMEDOUT; } - msleep(1); + msleep(slow ? 10 : 1); + slow = true; } return 0;